diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c01cbfe0954f..d5f4a8a6f4bb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -16,19 +16,19 @@ /.github @TimWolla /build/gen_stub.php @kocsismate -/ext/bcmath @ndossche @SakiTakamachi +/ext/bcmath @SakiTakamachi /ext/curl @adoy /ext/date @derickr /ext/dba @Girgias -/ext/dom @ndossche +/ext/dom @devnexen /ext/ffi @dstogov /ext/gd @devnexen /ext/gettext @devnexen /ext/gmp @Girgias /ext/intl @devnexen +/ext/libxml @devnexen /ext/json @bukka -/ext/lexbor @kocsismate @ndossche -/ext/libxml @ndossche +/ext/lexbor @kocsismate /ext/mbstring @alexdowad @youkidearitai /ext/mysqli @bukka @kamil-tekiela /ext/mysqlnd @bukka @kamil-tekiela @SakiTakamachi @@ -47,17 +47,16 @@ /ext/random @TimWolla @zeriyoshi /ext/reflection @DanielEScherzer /ext/session @Girgias -/ext/simplexml @ndossche -/ext/soap @ndossche +/ext/simplexml @devnexen +/ext/soap @devnexen /ext/sockets @devnexen /ext/spl @Girgias /ext/standard @bukka -/ext/tidy @ndossche /ext/uri @kocsismate @TimWolla -/ext/xml @ndossche -/ext/xmlreader @ndossche -/ext/xmlwriter @ndossche -/ext/xsl @ndossche +/ext/xml @devnexen +/ext/xmlreader @devnexen +/ext/xmlwriter @devnexen +/ext/xsl @devnexen /main @bukka /sapi/fpm @bukka /Zend/Optimizer @dstogov diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4f5bef65ed1f..296835e02e0d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -31,10 +31,10 @@ body: Please make sure that the used PHP version [is a supported version](https://www.php.net/supported-versions.php). placeholder: | PHP 8.5.2 (cli) (built: Jan 21 2026 17:35:28) (NTS) - Copyright (c) The PHP Group + Copyright © The PHP Group and Contributors Built by Ubuntu - Zend Engine v4.5.2, Copyright (c) Zend Technologies - with Zend OPcache v8.5.2, Copyright (c), by Zend Technologies + Zend Engine v4.5.2, Copyright © Zend by Perforce + with Zend OPcache v8.5.2, Copyright ©, Zend by Perforce render: plain validations: required: true diff --git a/.github/actions/freebsd/action.yml b/.github/actions/freebsd/action.yml index 3b6d0c4e8617..197362d9f52b 100644 --- a/.github/actions/freebsd/action.yml +++ b/.github/actions/freebsd/action.yml @@ -46,7 +46,7 @@ runs: pkgconf \ webp \ libavif \ - `#sqlite3` \ + sqlite3 \ curl \ $OPCACHE_TLS_TESTS_DEPS @@ -57,9 +57,7 @@ runs: --enable-debug \ --enable-option-checking=fatal \ --enable-fpm \ - `#--with-pdo-sqlite` \ - --without-sqlite3 \ - --without-pdo-sqlite \ + --with-pdo-sqlite \ --without-pear \ --with-bz2 \ --with-avif \ diff --git a/.github/labeler.yml b/.github/labeler.yml index b9f0f36e147d..e9731352c8cc 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -20,6 +20,18 @@ - scripts/**/* - win32/build/**/* +"Category: CI": + - changed-files: + - any-glob-to-any-file: + - .circleci/* + - .github/actions/**/* + - .github/scripts/**/* + - .github/workflows/* + - .github/CODEOWNERS + - .github/labeler.yml + - .github/setup_hmailserver.php + - .github/matrix.php + "Extension: bcmath": - changed-files: - any-glob-to-any-file: diff --git a/.github/matrix.php b/.github/matrix.php index dec8c7d249c6..18c2ef1269b7 100644 --- a/.github/matrix.php +++ b/.github/matrix.php @@ -144,12 +144,15 @@ function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $re $jobs['SOLARIS'] = true; } if ($all_jobs || !$no_jobs || $test_windows) { - $jobs['WINDOWS']['matrix'] = $all_variations - ? ['include' => [ - ['asan' => true, 'opcache' => true, 'x64' => true, 'zts' => true], - ['asan' => false, 'opcache' => false, 'x64' => false, 'zts' => false], - ]] - : ['include' => [['asan' => false, 'opcache' => true, 'x64' => true, 'zts' => true]]]; + $matrix = [['asan' => false, 'opcache' => true, 'x64' => true, 'zts' => true]]; + if ($all_variations) { + $matrix[] = ['asan' => true, 'opcache' => true, 'x64' => true, 'zts' => true]; + $matrix[] = ['asan' => false, 'opcache' => false, 'x64' => false, 'zts' => false]; + if (version_compare($php_version, '8.5', '>=')) { + $matrix[] = ['asan' => false, 'opcache' => true, 'x64' => true, 'zts' => true, 'clang' => true]; + } + } + $jobs['WINDOWS']['matrix'] = ['include' => $matrix]; $jobs['WINDOWS']['config'] = version_compare($php_version, '8.4', '>=') ? ['vs_crt_version' => 'vs17'] : ['vs_crt_version' => 'vs16']; diff --git a/.github/scripts/windows/build_task.bat b/.github/scripts/windows/build_task.bat index b65479451849..1177cef3be4d 100644 --- a/.github/scripts/windows/build_task.bat +++ b/.github/scripts/windows/build_task.bat @@ -26,12 +26,18 @@ if %errorlevel% neq 0 exit /b 3 if "%THREAD_SAFE%" equ "0" set ADD_CONF=%ADD_CONF% --disable-zts if "%INTRINSICS%" neq "" set ADD_CONF=%ADD_CONF% --enable-native-intrinsics=%INTRINSICS% if "%ASAN%" equ "1" set ADD_CONF=%ADD_CONF% --enable-sanitizer --enable-debug-pack +if "%CLANG_TOOLSET%" equ "1" set ADD_CONF=%ADD_CONF% --with-toolset=clang rem C4018: comparison: signed/unsigned mismatch rem C4146: unary minus operator applied to unsigned type rem C4244: type conversion, possible loss of data rem C4267: 'size_t' type conversion, possible loss of data -set CFLAGS=/W3 /WX /wd4018 /wd4146 /wd4244 /wd4267 +if "%CLANG_TOOLSET%" equ "1" ( + rem Clang is much stricter than MSVC, produces too many warnings that would fail the build with /WX + set CFLAGS=/W3 /wd4018 /wd4146 /wd4244 /wd4267 +) else ( + set CFLAGS=/W3 /WX /wd4018 /wd4146 /wd4244 /wd4267 +) cmd /c configure.bat ^ --enable-snapshot-build ^ diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index 9eeff1455f8f..4905dcb9ccbc 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -413,10 +413,15 @@ jobs: with: enableOpcache: true jitType: tracing - - uses: codecov/codecov-action@v5 + - name: Generate coverage report + if: ${{ !cancelled() }} + run: make gcovr-xml + - uses: codecov/codecov-action@v6 if: ${{ !cancelled() }} with: + disable_search: true fail_ci_if_error: true + files: gcovr.xml token: ${{ secrets.CODECOV_TOKEN }} verbose: true COMMUNITY: @@ -935,7 +940,7 @@ jobs: strategy: fail-fast: false matrix: ${{ fromJson(inputs.branch).jobs.WINDOWS.matrix }} - name: "WINDOWS_${{ matrix.x64 && 'X64' || 'X86' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}${{ matrix.asan && '_ASAN' || ''}}" + name: "WINDOWS_${{ matrix.x64 && 'X64' || 'X86' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}${{ matrix.asan && '_ASAN' || ''}}${{ matrix.clang && '_CLANG' || ''}}" runs-on: windows-2022 env: PHP_BUILD_CACHE_BASE_DIR: C:\build-cache @@ -949,6 +954,7 @@ jobs: PARALLEL: -j2 OPCACHE: "${{ matrix.opcache && '1' || '0' }}" ASAN: "${{ matrix.asan && '1' || '0' }}" + CLANG_TOOLSET: "${{ matrix.clang && '1' || '0' }}" steps: - name: git config run: git config --global core.autocrlf false && git config --global core.eol lf diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 69ba4c0e4865..eafedec5eafa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,15 +2,17 @@ name: Test on: push: paths-ignore: &ignore_paths + - .circleci/** + - .github/CODEOWNERS + - .github/ISSUE_TEMPLATE/** + - '**/*.md' + - '**/*.rst' - docs/** + - EXTENSIONS + - LICENSE - NEWS - UPGRADING - UPGRADING.INTERNALS - - '**/README.*' - - CONTRIBUTING.md - - CODING_STANDARDS.md - - .cirrus.yml - - .circleci/** branches: - PHP-8.2 - PHP-8.3 diff --git a/CODING_STANDARDS.md b/CODING_STANDARDS.md index 47b76717c839..3a53d0e258ca 100644 --- a/CODING_STANDARDS.md +++ b/CODING_STANDARDS.md @@ -79,6 +79,16 @@ rewritten to comply with these rules. return value for functions that perform some operation that may succeed or fail. +1. When throwing a `ValueError` or emitting a warning, use consistent + phrasing for error messages. Common patterns are: + + * Type errors: `must be of type int` (use the type name, not e.g. `must be an integer`) + * Range/boundary: `must be between X and Y` / `must be greater than [or equal to] X` / `must be less than X` / `must be finite` + * String constraints: `must not contain any null bytes` / `must not be empty` / `must be a single character` + * Valid value: `must be a valid X` (e.g. `must be a valid encoding`, `must be a valid calendar ID`) + * Enum-like: `must be one of X, Y, or Z` + * Structural: `must have X` / `must have key X` / `must have N elements` + ## User functions/methods naming conventions 1. Function names for user-level functions should be enclosed with in the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 041b27f96dfb..0e13285dd735 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -37,8 +37,8 @@ implement RFCs. Please be sure to include tests as appropriate! By submitting a pull request, you certify that you have the necessary rights to submit the work, that the work does not violate any third-party rights (including those of your employer, if applicable), and that you license your -contribution under the PHP License or under another license if explicitly -accepted by the PHP project maintainers. +contribution under the [Modified BSD License](LICENSE) or under another license +if explicitly accepted by the PHP project maintainers. If you are fixing a bug, then please submit your PR against the lowest actively supported branch of PHP that the bug affects (only green branches on @@ -356,30 +356,21 @@ Having said that, here are the organizational rules: `--enable-zts` switch to ensure your code handles TSRM correctly and doesn't break for those who need that. -Currently, we have the following branches in use: - -| Branch | | -| --------- | --------- | -| master | Active development branch for PHP 8.6, which is open for backwards incompatible changes and major internal API changes. | -| PHP-8.5 | Is used to release the PHP 8.5.x series. This is a current stable version and is open for bugfixes only. | -| PHP-8.4 | Is used to release the PHP 8.4.x series. This is a current stable version and is open for bugfixes only. | -| PHP-8.3 | Is used to release the PHP 8.3.x series. This is a current stable version and is open for bugfixes only. | -| PHP-8.2 | Is used to release the PHP 8.2.x series. This is an old stable version and is open for security fixes only. | -| PHP-8.1 | Is used to release the PHP 8.1.x series. This is an old stable version and is open for security fixes only. | -| PHP-8.0 | This branch is closed. | -| PHP-7.4 | This branch is closed. | -| PHP-7.3 | This branch is closed. | -| PHP-7.2 | This branch is closed. | -| PHP-7.1 | This branch is closed. | -| PHP-7.0 | This branch is closed. | -| PHP-5.6 | This branch is closed. | -| PHP-5.5 | This branch is closed. | -| PHP-5.4 | This branch is closed. | -| PHP-5.3 | This branch is closed. | -| PHP-5.2 | This branch is closed. | -| PHP-5.1 | This branch is closed. | -| PHP-4.4 | This branch is closed. | -| PHP-X.Y.Z | These branches are used for the release managers for tagging the releases, hence they are closed to the general public. | +The master branch is an active development branch for the newest version of PHP, +which is open for backwards incompatible changes and major internal API changes. + +For PHP-X.Y branches, they are used to release the PHP X.Y.z series. Please see +the [supported versions page](https://www.php.net/supported-versions.php) to get +the status of each version. + +If a version is described as "Active support", the corresponding branch is a +current stable version and is open for bugfixes only. If a version is described +as "Security fixes only", the corresponding branch is an old stable version +and is open for security fixes only. If a version is described as "End of life", +the corresponding branch is closed. + +Note that PHP-X.Y.Z branches are used for the release managers for tagging the +releases, hence they are closed to the general public. The next few rules are more of a technical nature: @@ -439,15 +430,13 @@ New source code files should include the following header block: ```c /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: | +----------------------------------------------------------------------+ diff --git a/EXTENSIONS b/EXTENSIONS index 8da09aed5392..5a08a031e983 100644 --- a/EXTENSIONS +++ b/EXTENSIONS @@ -171,28 +171,28 @@ PRIMARY MAINTAINER: Christian Stocker (2003 - 2011) Rob Richards (2003 - 2012) Marcus Börger (2003 - 2006) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working SINCE: 5.0 ------------------------------------------------------------------------------- EXTENSION: simplexml PRIMARY MAINTAINER: Marcus Börger (2003 - 2008) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working SINCE: 5.0 ------------------------------------------------------------------------------- EXTENSION: soap PRIMARY MAINTAINER: Dmitry Stogov (2004 - 2018) Nora Dossche (2024 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working ------------------------------------------------------------------------------- EXTENSION: xml PRIMARY MAINTAINER: Thies C. Arntzen (1999 - 2002) Rob Richards (2003 - 2013) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working ------------------------------------------------------------------------------- EXTENSION: lexbor @@ -206,28 +206,28 @@ EXTENSION: libxml PRIMARY MAINTAINER: Rob Richards (2003 - 2009) Christian Stocker (2004 - 2011) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working ------------------------------------------------------------------------------- EXTENSION: xmlreader PRIMARY MAINTAINER: Rob Richards (2004 - 2010) Christian Stocker (2004 - 2004) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working ------------------------------------------------------------------------------- EXTENSION: xmlwriter PRIMARY MAINTAINER: Rob Richards (2004 - 2010) Pierre-Alain Joye (2005-2009) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working ------------------------------------------------------------------------------- EXTENSION: xsl PRIMARY MAINTAINER: Christian Stocker (2003 - 2011) Rob Richards (2003 - 2010) Nora Dossche (2023 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working SINCE: 5.0 ------------------------------------------------------------------------------- @@ -496,7 +496,7 @@ PRIMARY MAINTAINER: John Coggeshall (2003 - 2006) Ilia Alshanetsky (2003 - 2009) Nuno Lopes (2006 - 2012) Nora Dossche (2025 - 2026) -MAINTENANCE: Odd fixes +MAINTENANCE: Orphan STATUS: Working ------------------------------------------------------------------------------- EXTENSION: tokenizer diff --git a/LICENSE b/LICENSE index 16af9a6ae1e7..ee42a57fffbb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,68 +1,27 @@ --------------------------------------------------------------------- - The PHP License, version 3.01 -Copyright (c) 1999 - 2026 The PHP Group. All rights reserved. --------------------------------------------------------------------- +Copyright © 1999–2026, The PHP Group and Contributors. +Copyright © 1999–2026, Zend Technologies Ltd., a subsidiary company of Perforce Software, Inc. Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The name "PHP" must not be used to endorse or promote products - derived from this software without prior written permission. For - written permission, please contact group@php.net. - - 4. Products derived from this software may not be called "PHP", nor - may "PHP" appear in their name, without prior written permission - from group@php.net. You may indicate that your software works in - conjunction with PHP by saying "Foo for PHP" instead of calling - it "PHP Foo" or "phpfoo" - - 5. The PHP Group may publish revised and/or new versions of the - license from time to time. Each version will be given a - distinguishing version number. - Once covered code has been published under a particular version - of the license, you may always continue to use it under the terms - of that version. You may also choose to use such covered code - under the terms of any subsequent version of the license - published by the PHP Group. No one other than the PHP Group has - the right to modify the terms applicable to covered code created - under this License. - - 6. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes PHP software, freely available from - ". - -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND -ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP -DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------- - -This software consists of voluntary contributions made by many -individuals on behalf of the PHP Group. - -The PHP Group can be contacted via Email at group@php.net. - -For more information on the PHP Group and the PHP project, -please see . - -PHP includes the Zend Engine, freely available at -. +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/NEWS b/NEWS index 44f53eb99c7a..22762f98c2ca 100644 --- a/NEWS +++ b/NEWS @@ -26,12 +26,26 @@ PHP NEWS - DOM: . Removed LIBXML_XINCLUDE from valid options for XMLDocument, as it was a no-op. (ndossche) + . Readonly DOM properties are now declared with asymmetric visibility + (public private(set)). ReflectionProperty::isWritable() reports them + correctly, and external writes raise "Cannot modify private(set) + property" instead of the previous readonly modification error. + (David Carlier) - Fileinfo: . Fixed bug GH-20679 (finfo_file() doesn't work on remote resources). (ndossche) . Fixed bug #66095 (Hide libmagic dynamic symbols). (orlitzky) +- GD: + . imagesetstyle()/imagefilter()/imagecrop() check array argument entries + types. (David Carlier) + +- GMP: + . gmp_fact() reject values larger than unsigned long. (David Carlier) + . gmp_pow/binomial/root/rootrem and shift/pow operators reject values + larger than unsigned long. (David Carlier) + - Hash: . Upgrade xxHash to 0.8.2. (timwolla) @@ -64,6 +78,9 @@ PHP NEWS . Fixed bug GH-21223; mb_guess_encoding no longer crashes when passed huge list of candidate encodings (with 200,000+ entries). (Jordi Kroon) +- Mysqli: + . Added mysqli_quote_string() and mysqli::quote_string(). (Kamil Tekiela) + - Opcache: . Fixed bug GH-20051 (apache2 shutdowns when restart is requested during preloading). (Arnaud, welcomycozyhom) @@ -100,6 +117,7 @@ PHP NEWS (ilutov) . Fixed bug GH-21362 (ReflectionMethod::invoke/invokeArgs() did not verify Closure instance identity for Closure::__invoke()). (Ilia Alshanetsky) + . Added ReflectionParameter::getDocComment(). (chschneider) - Session: . Fixed bug 71162 (updateTimestamp never called when session data is empty). @@ -125,6 +143,8 @@ PHP NEWS - SPL: . DirectoryIterator key can now work better with filesystem supporting larger directory indexing. (David Carlier) + . Fix bugs GH-8561, GH-8562, GH-8563, and GH-8564 (Fixing various + SplFileObject iterator desync bugs). (iliaal) - Sqlite3: . Fix NUL byte truncation in sqlite3 TEXT column handling. (ndossche) @@ -141,6 +161,17 @@ PHP NEWS . Fixed bug GH-13204 (glob() fails if square bracket is in current directory). (ndossche) . Add array size maximum to array_diff(). (ndossche) + . Add enum SortDirection. (timwolla) + . pathinfo() raises a ValueError with an invalid $flags argument. + (David Carlier) + . Passing an invalid flag value to the second argument of scandir() will now + throw a ValueError. (alexandre-daubois) + . array_change_key_case() now raises a ValueError when an invalid $case + argument value is passed. (Girgias) + . linkinfo() now raises a ValueError when the argument is an empty string. + (Weilin Du) + . getenv() and putenv() now raises a ValueError when the first argument + contains null bytes. (Weilin Du) - Streams: . Added so_keepalive, tcp_keepidle, tcp_keepintvl and tcp_keepcnt stream diff --git a/README.md b/README.md index 545baa720967..3f4e0534ede2 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,10 @@ PHP is a popular general-purpose scripting language that is especially suited to web development. Fast, flexible and pragmatic, PHP powers everything from your -blog to the most popular websites in the world. PHP is distributed under the -[PHP License v3.01](LICENSE). +blog to the most popular websites in the world. + +PHP is distributed under the [Modified BSD License](LICENSE) +(SPDX-License-Identifier: `BSD-3-Clause`). [![Test](https://github.com/php/php-src/actions/workflows/test.yml/badge.svg)](https://github.com/php/php-src/actions/workflows/test.yml) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/php.svg)](https://issues.oss-fuzz.com/issues?q=project:php) diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index 80d6cbad0443..ea13552c8374 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -175,9 +175,14 @@ TSRM_API bool tsrm_is_managed_thread(void); #define TSRMG_BULK_STATIC(id, type) ((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)]) #define TSRMG_FAST_STATIC(offset, type, element) (TSRMG_FAST_BULK_STATIC(offset, type)->element) #define TSRMG_FAST_BULK_STATIC(offset, type) ((type) (((char*) TSRMLS_CACHE)+(offset))) +#ifdef __cplusplus +#define TSRMLS_MAIN_CACHE_EXTERN() extern "C" { extern TSRM_TLS void *TSRMLS_CACHE TSRM_TLS_MODEL_ATTR; } +#define TSRMLS_CACHE_EXTERN() extern "C" { extern TSRM_TLS void *TSRMLS_CACHE; } +#else #define TSRMLS_MAIN_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE TSRM_TLS_MODEL_ATTR; -#define TSRMLS_MAIN_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE TSRM_TLS_MODEL_ATTR = NULL; #define TSRMLS_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE; +#endif +#define TSRMLS_MAIN_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE TSRM_TLS_MODEL_ATTR = NULL; #define TSRMLS_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE = NULL; #define TSRMLS_CACHE_UPDATE() TSRMLS_CACHE = tsrm_get_ls_cache() #define TSRMLS_CACHE _tsrm_ls_cache diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c index 4c8fc9d19aa9..90317ab64b19 100644 --- a/TSRM/tsrm_win32.c +++ b/TSRM/tsrm_win32.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Daniel Beulshausen | +----------------------------------------------------------------------+ diff --git a/TSRM/tsrm_win32.h b/TSRM/tsrm_win32.h index c5bdc492be1b..9c16bd7c654b 100644 --- a/TSRM/tsrm_win32.h +++ b/TSRM/tsrm_win32.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Daniel Beulshausen | +----------------------------------------------------------------------+ diff --git a/UPGRADING b/UPGRADING index 8c312f1814a0..869e265af8a2 100644 --- a/UPGRADING +++ b/UPGRADING @@ -19,14 +19,39 @@ PHP 8.6 UPGRADE NOTES 1. Backward Incompatible Changes ======================================== +- DOM: + . Properties previously documented as @readonly (e.g. DOMNode::$nodeType, + DOMDocument::$xmlEncoding, DOMEntity::$actualEncoding, ::$encoding, + ::$version) are now declared with asymmetric visibility + (public private(set)). Attempts to write to them from outside the + class now raise "Cannot modify private(set) property ::$ + from global scope" instead of the prior readonly modification error. + ReflectionProperty::isWritable() also reports these properties + accurately. + +- GD: + . imagesetstyle(), imagefilter() and imagecrop() filter their + array arguments types/values and raise a TypeError/ValueError + accordingly. + +- PCNTL: + . pcntl_alarm() now raises a ValueError if the seconds argument is + lower than zero or greater than platform's UINT_MAX. + - PCRE: . preg_grep() now returns false instead of a partial array when a PCRE execution error occurs (e.g. malformed UTF-8 input with the /u modifier). This is consistent with other preg_* functions. - Phar: - . Invalid values now throw in Phar::mungServer() instead of being silently - ignored. + . Phar::mungServer() now raises a ValueError when an invalid + argument value is passed instead of being silently ignored. + +- Posix: + . posix_access() now raises a ValueError when an invalid $flags + argument value is passed. + . posix_mkfifo() now raises a ValueError when an invalid $permissions + argument value is passed. - Session: . A ValueError is not thrown if $name is a string containing null bytes in @@ -44,11 +69,37 @@ PHP 8.6 UPGRADE NOTES with empty data (e.g. to destroy the session) should implement the same logic in their updateTimestamp() method. +- SPL: + . SplFileObject::next() now advances the stream when no prior current() + call has cached a line. A subsequent current() call returns the new + line rather than the previous one. + . SplFileObject::fgets() no longer caches the returned line for + subsequent current() calls. current() now re-reads from the current + stream position instead of returning the line fgets() just returned. + . SplFileObject::next() past EOF no longer increments key() without + bound. SplFileObject::seek() past EOF now produces the same key() + value as SplTempFileObject; the two previously returned different + values. + - Standard: - . Invalid mode values now throw in array_filter() instead of being silently - defaulted to 0. . Form feed (\f) is now added in the default trimmed characters of trim(), rtrim() and ltrim(). RFC: https://wiki.php.net/rfc/trim_form_feed + . array_filter() now raises a ValueError when an invalid $mode + argument value is passed. + . array_change_key_case() now raises a ValueError when an invalid $case + argument value is passed. + . getenv() and putenv() now raises a ValueError when the first argument + contains null bytes. + . linkinfo() now raises a ValueError when the $path argument is empty. + . pathinfo() now raises a ValueError when an invalid $flag + argument value is passed. + . scandir() now raises a ValueError when an invalid $sorting_order + argument value is passed. + +- Zip: + . ZipArchive::extractTo now raises a TypeError for the + files argument if one or more of the entries is not + a string. ======================================== 2. New Features @@ -103,6 +154,17 @@ PHP 8.6 UPGRADE NOTES 5. Changed Functions ======================================== +- GMP: + . gmp_fact() now throws a ValueError() if $num does not fit into + a unsigned long. + . gmp_pow(), gmp_binomial(), gmp_root() and gmp_rootrem() now throw a + ValueError if their second argument does not fit into an unsigned long. + . The shift (<<, >>) and exponentiation (**) operators on GMP objects + now throw a ValueError if the right operand does not fit into an + unsigned long. + . gmp_powm() modulo-by-zero now raises a DivisionByZeroError whose + message includes the function name and argument index ($modulus). + - mysqli: . The return structure of mysqli_get_charset() no longer contains the undocumented "comment" element. The value of "charsetnr" is @@ -113,29 +175,14 @@ PHP 8.6 UPGRADE NOTES . Output of openssl_x509_parse() contains criticalExtensions listing all critical certificate extensions. -- PCNTL: - . pcntl_alarm() now throws a ValueError if the seconds argument is - lower than zero or greater than platform's UINT_MAX. - - Phar: . Phar::mungServer() now supports reference values. -- Posix: - . posix_access() now throws a ValueError exception if the flags - argument is invalid. - . posix_mkfifo() now throws a ValueError exception if the permissions - argument is invalid. - - Sockets: . socket_addrinfo_lookup() now has an additional optional argument $error when not null, and on failure, gives the error code (one of the EAI_* constants). -- Zip: - . ZipArchive::extractTo now raises a TypeError for the - files argument if one or more of the entries is not - a string. - ======================================== 6. New Functions ======================================== @@ -144,11 +191,17 @@ PHP 8.6 UPGRADE NOTES . ReflectionConstant::inNamespace() . Added ReflectionProperty::isReadable() and ReflectionProperty::isWritable(). RFC: https://wiki.php.net/rfc/isreadable-iswriteable + . Added ReflectionParameter::getDocComment(). + RFC: https://wiki.php.net/rfc/parameter-doccomments - Intl: . `grapheme_strrev()` returns strrev for grapheme cluster unit. RFC: https://wiki.php.net/rfc/grapheme_strrev +- mysqli: + . Added `mysqli::quote_string()` and `mysqli_quote_string()`. + RFC: https://wiki.php.net/rfc/mysqli_quote_string + - Standard: . `clamp()` returns the given value if in range, else return the nearest bound. @@ -161,6 +214,10 @@ PHP 8.6 UPGRADE NOTES 7. New Classes and Interfaces ======================================== +- Standard: + . enum SortDirection + RFC: https://wiki.php.net/rfc/sort_direction_enum + ======================================== 8. Removed Extensions and SAPIs ======================================== @@ -201,12 +258,19 @@ PHP 8.6 UPGRADE NOTES . EAI_IDN_ENCODE. - Standard - . ARRAY_FILTER_USE_KEY. + . ARRAY_FILTER_USE_VALUE. ======================================== 11. Changes to INI File Handling ======================================== +- Mbstring: + . The mbstring.detect_order INI directive now updates the internal detection + order when changed at runtime via ini_set(). Previously, runtime changes + using ini_set() did not take effect for mb_detect_order(). Setting the + directive to NULL or an empty string at runtime now leaves the previously + configured detection order unchanged. + - Mysqli: . mysqli.default_port now checks the validity of the value which should be between 0 and 65535 included. @@ -216,13 +280,6 @@ PHP 8.6 UPGRADE NOTES When used along with ZEND_JIT_DEBUG_TRACE_EXIT_INFO, the source of exit points is printed in exit info output, in debug builds. -- Mbstring: - . The mbstring.detect_order INI directive now updates the internal detection - order when changed at runtime via ini_set(). Previously, runtime changes - using ini_set() did not take effect for mb_detect_order(). Setting the - directive to NULL or an empty string at runtime now leaves the previously - configured detection order unchanged. - ======================================== 12. Windows Support ======================================== diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index 1072d822ee49..1d53df7e4a33 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -83,6 +83,14 @@ PHP 8.6 INTERNALS UPGRADE NOTES . The INI_ORIG_{INT|STR|FLT|BOOL}() macros have been removed as they are unused. If this behaviour is required fall back to the zend_ini_* functions. + . The unused ZEND_AST_PARENT_PROPERTY_HOOK_CALL has been removed. + . ZEND_AST_METHOD_REFERENCE has been renamed to + ZEND_AST_TRAIT_METHOD_REFERENCE. + . The EMPTY_SWITCH_DEFAULT_CASE() macro has been removed. Use + default: ZEND_UNREACHABLE(); instead. + . Functions using zend_forbid_dynamic_call() *must* be flagged with + ZEND_ACC2_FORBID_DYN_CALLS (@forbid-dynamic-calls in stubs). In debug + builds, failing to include that flag will lead to assertion failures. ======================== 2. Build system changes @@ -128,6 +136,7 @@ PHP 8.6 INTERNALS UPGRADE NOTES . Dropped session_options parameter from all methods in mysqlnd_auth. The same information is present in conn->options and should be used instead. + . Removed charsets plugin. - ext/session: . php_session_flush() now returns a bool rather than a zend_result. diff --git a/Zend/LICENSE b/Zend/LICENSE deleted file mode 100644 index 51f5cccde950..000000000000 --- a/Zend/LICENSE +++ /dev/null @@ -1,56 +0,0 @@ --------------------------------------------------------------------- - The Zend Engine License, Version 2.00 -Copyright (c) 1999-2006 Zend Technologies Ltd. All rights reserved. --------------------------------------------------------------------- - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - 3. The names "Zend" and "Zend Engine" must not be used to endorse - or promote products derived from this software without prior - permission from Zend Technologies Ltd. For written permission, - please contact license@zend.com. - - 4. Zend Technologies Ltd. may publish revised and/or new versions - of the license from time to time. Each version will be given a - distinguishing version number. - Once covered code has been published under a particular version - of the license, you may always continue to use it under the - terms of that version. You may also choose to use such covered - code under the terms of any subsequent version of the license - published by Zend Technologies Ltd. No one other than Zend - Technologies Ltd. has the right to modify the terms applicable - to covered code created under this License. - - 5. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes the Zend Engine, freely available at - http://www.zend.com" - - 6. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - "The Zend Engine is freely available at http://www.zend.com" - -THIS SOFTWARE IS PROVIDED BY ZEND TECHNOLOGIES LTD. ``AS IS'' AND -ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ZEND -TECHNOLOGIES LTD. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - --------------------------------------------------------------------- diff --git a/Zend/Optimizer/block_pass.c b/Zend/Optimizer/block_pass.c index 61a69dae51e1..c85b444640a8 100644 --- a/Zend/Optimizer/block_pass.c +++ b/Zend/Optimizer/block_pass.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/compact_literals.c b/Zend/Optimizer/compact_literals.c index 447a034530e1..a4ecb19c85ef 100644 --- a/Zend/Optimizer/compact_literals.c +++ b/Zend/Optimizer/compact_literals.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | @@ -735,6 +733,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx case ZEND_SEND_VAR_NO_REF_EX: case ZEND_SEND_REF: case ZEND_SEND_FUNC_ARG: + case ZEND_SEND_PLACEHOLDER: case ZEND_CHECK_FUNC_ARG: if (opline->op2_type == IS_CONST) { opline->result.num = cache_size; @@ -747,6 +746,10 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx cache_size += sizeof(void *); } break; + case ZEND_CALLABLE_CONVERT_PARTIAL: + opline->op1.num = cache_size; + cache_size += 2 * sizeof(void *); + break; } opline++; } diff --git a/Zend/Optimizer/compact_vars.c b/Zend/Optimizer/compact_vars.c index 9898714a17c5..b4a861d3595c 100644 --- a/Zend/Optimizer/compact_vars.c +++ b/Zend/Optimizer/compact_vars.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Removing unused variables | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/dce.c b/Zend/Optimizer/dce.c index a529f5a1944a..0780ac190cdd 100644 --- a/Zend/Optimizer/dce.c +++ b/Zend/Optimizer/dce.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, DCE - Dead Code Elimination | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | | Dmitry Stogov | diff --git a/Zend/Optimizer/dfa_pass.c b/Zend/Optimizer/dfa_pass.c index cfc6b27b3d21..77dc322fbdec 100644 --- a/Zend/Optimizer/dfa_pass.c +++ b/Zend/Optimizer/dfa_pass.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/escape_analysis.c b/Zend/Optimizer/escape_analysis.c index 5ace81f35220..8dbd6855d68d 100644 --- a/Zend/Optimizer/escape_analysis.c +++ b/Zend/Optimizer/escape_analysis.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache, Escape Analysis | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/nop_removal.c b/Zend/Optimizer/nop_removal.c index 7de3919ee8cb..0a6a04fc4a9b 100644 --- a/Zend/Optimizer/nop_removal.c +++ b/Zend/Optimizer/nop_removal.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/optimize_func_calls.c b/Zend/Optimizer/optimize_func_calls.c index 62b50464e87b..05cdce4fc4cf 100644 --- a/Zend/Optimizer/optimize_func_calls.c +++ b/Zend/Optimizer/optimize_func_calls.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | @@ -193,6 +191,7 @@ void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx) case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: call--; if (call_stack[call].func && call_stack[call].opline) { zend_op *fcall = call_stack[call].opline; @@ -225,13 +224,14 @@ void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx) * At this point we also know whether or not the result of * the DO opcode is used, allowing to optimize calls to * ZEND_ACC_NODISCARD functions. */ - if (opline->opcode != ZEND_CALLABLE_CONVERT) { + if (opline->opcode != ZEND_CALLABLE_CONVERT && opline->opcode != ZEND_CALLABLE_CONVERT_PARTIAL) { opline->opcode = zend_get_call_op(fcall, call_stack[call].func, !RESULT_UNUSED(opline)); } if ((ZEND_OPTIMIZER_PASS_16 & ctx->optimization_level) && call_stack[call].try_inline - && opline->opcode != ZEND_CALLABLE_CONVERT) { + && opline->opcode != ZEND_CALLABLE_CONVERT + && opline->opcode != ZEND_CALLABLE_CONVERT_PARTIAL) { zend_try_inline_call(op_array, fcall, opline, call_stack[call].func); } } diff --git a/Zend/Optimizer/optimize_temp_vars_5.c b/Zend/Optimizer/optimize_temp_vars_5.c index de0b189d5dca..6a5c99f4755b 100644 --- a/Zend/Optimizer/optimize_temp_vars_5.c +++ b/Zend/Optimizer/optimize_temp_vars_5.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/pass1.c b/Zend/Optimizer/pass1.c index 4be966c25d89..962bdb6e4be3 100644 --- a/Zend/Optimizer/pass1.c +++ b/Zend/Optimizer/pass1.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/pass3.c b/Zend/Optimizer/pass3.c index 5c31de7bc49c..2d2a44685226 100644 --- a/Zend/Optimizer/pass3.c +++ b/Zend/Optimizer/pass3.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/sccp.c b/Zend/Optimizer/sccp.c index 1457e7467cf7..ba94e9b7b91f 100644 --- a/Zend/Optimizer/sccp.c +++ b/Zend/Optimizer/sccp.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, SCCP - Sparse Conditional Constant Propagation | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | | Dmitry Stogov | @@ -1596,7 +1594,7 @@ static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_o case ZEND_SHORT_CIRCUITING_CHAIN_EMPTY: ZVAL_TRUE(&zv); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } SET_RESULT(result, &zv); break; diff --git a/Zend/Optimizer/scdf.c b/Zend/Optimizer/scdf.c index cf7b80bc8665..31f40a7ed9f9 100644 --- a/Zend/Optimizer/scdf.c +++ b/Zend/Optimizer/scdf.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Sparse Conditional Data Flow Propagation Framework | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/scdf.h b/Zend/Optimizer/scdf.h index c3f1d8e885c2..d7bee4b73816 100644 --- a/Zend/Optimizer/scdf.h +++ b/Zend/Optimizer/scdf.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Call Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/ssa_integrity.c b/Zend/Optimizer/ssa_integrity.c index 4c720714ca58..34a2b3a9ef64 100644 --- a/Zend/Optimizer/ssa_integrity.c +++ b/Zend/Optimizer/ssa_integrity.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, SSA validation | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_call_graph.c b/Zend/Optimizer/zend_call_graph.c index 884b481aceb8..b67f57cf041d 100644 --- a/Zend/Optimizer/zend_call_graph.c +++ b/Zend/Optimizer/zend_call_graph.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Call Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -126,6 +124,7 @@ ZEND_API void zend_analyze_calls(zend_arena **arena, zend_script *script, uint32 case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: func_info->flags |= ZEND_FUNC_HAS_CALLS; if (call_info) { call_info->caller_call_opline = opline; @@ -142,6 +141,7 @@ ZEND_API void zend_analyze_calls(zend_arena **arena, zend_script *script, uint32 case ZEND_SEND_VAR_NO_REF: case ZEND_SEND_VAR_NO_REF_EX: case ZEND_SEND_USER: + case ZEND_SEND_PLACEHOLDER: if (call_info) { if (opline->op2_type == IS_CONST) { call_info->named_args = true; diff --git a/Zend/Optimizer/zend_call_graph.h b/Zend/Optimizer/zend_call_graph.h index 8810dc1a560e..57c6bdffe998 100644 --- a/Zend/Optimizer/zend_call_graph.h +++ b/Zend/Optimizer/zend_call_graph.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Call Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_cfg.c b/Zend/Optimizer/zend_cfg.c index bdb3a0570539..837515169d70 100644 --- a/Zend/Optimizer/zend_cfg.c +++ b/Zend/Optimizer/zend_cfg.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, CFG - Control Flow Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_cfg.h b/Zend/Optimizer/zend_cfg.h index 8096565e8038..3ed635ecdedc 100644 --- a/Zend/Optimizer/zend_cfg.h +++ b/Zend/Optimizer/zend_cfg.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, CFG - Control Flow Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_dfg.c b/Zend/Optimizer/zend_dfg.c index b6c0e3d801bb..72e15693a844 100644 --- a/Zend/Optimizer/zend_dfg.c +++ b/Zend/Optimizer/zend_dfg.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, DFG - Data Flow Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_dfg.h b/Zend/Optimizer/zend_dfg.h index af3d761ba29f..464ea6bb2ebe 100644 --- a/Zend/Optimizer/zend_dfg.h +++ b/Zend/Optimizer/zend_dfg.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, DFG - Data Flow Graph | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_dump.c b/Zend/Optimizer/zend_dump.c index 56a2f65d6fb2..c6cc5193b2dc 100644 --- a/Zend/Optimizer/zend_dump.c +++ b/Zend/Optimizer/zend_dump.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Bytecode Visualisation | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_dump.h b/Zend/Optimizer/zend_dump.h index 671f7c064fb2..45740d9609cb 100644 --- a/Zend/Optimizer/zend_dump.h +++ b/Zend/Optimizer/zend_dump.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Bytecode Visualisation | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_func_info.c b/Zend/Optimizer/zend_func_info.c index cec52f7e9860..185fcc40be67 100644 --- a/Zend/Optimizer/zend_func_info.c +++ b/Zend/Optimizer/zend_func_info.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Func Info | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | diff --git a/Zend/Optimizer/zend_func_info.h b/Zend/Optimizer/zend_func_info.h index db00d843ee10..6b5b51cac58b 100644 --- a/Zend/Optimizer/zend_func_info.h +++ b/Zend/Optimizer/zend_func_info.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, Func Info | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index c19d864f1bd0..2e6cc70ec254 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, e-SSA based Type & Range Inference | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -1063,7 +1061,7 @@ static bool zend_inference_calc_binary_op_range( case ZEND_BW_XOR: // TODO break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return 0; } @@ -2350,7 +2348,7 @@ static uint32_t binary_op_result_type( /* TODO: +MAY_BE_OBJECT ??? */ tmp = MAY_BE_STRING | MAY_BE_RC1 | MAY_BE_RCN; break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return tmp; } @@ -3708,7 +3706,7 @@ static zend_always_inline zend_result _zend_update_type_info( case ZEND_FREE: /* This may happen if the using opcode is DCEd. */ break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } j = zend_ssa_next_use(ssa->ops, ssa_op->result_def, j); if (j >= 0) { @@ -3905,6 +3903,7 @@ static zend_always_inline zend_result _zend_update_type_info( } break; case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: UPDATE_SSA_TYPE(MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN, ssa_op->result_def); UPDATE_SSA_OBJ_TYPE(zend_ce_closure, /* is_instanceof */ false, ssa_op->result_def); break; @@ -5294,10 +5293,10 @@ ZEND_API bool zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op return (t1 & MAY_BE_OBJECT); case IS_OBJECT: return 0; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } /* GCC is getting confused here for the Wimplicit-fallthrough warning with - * EMPTY_SWITCH_DEFAULT_CASE() macro */ + * default: ZEND_UNREACHABLE(); macro */ return 0; case ZEND_ARRAY_KEY_EXISTS: if ((t2 & MAY_BE_ANY) != MAY_BE_ARRAY) { diff --git a/Zend/Optimizer/zend_inference.h b/Zend/Optimizer/zend_inference.h index 1b626fa2ee22..e6b4207c7494 100644 --- a/Zend/Optimizer/zend_inference.h +++ b/Zend/Optimizer/zend_inference.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, e-SSA based Type & Range Inference | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c index f8cbefdaaf2b..59a87823eb56 100644 --- a/Zend/Optimizer/zend_optimizer.c +++ b/Zend/Optimizer/zend_optimizer.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/zend_optimizer.h b/Zend/Optimizer/zend_optimizer.h index 43a0f60a2321..d2847c92869c 100644 --- a/Zend/Optimizer/zend_optimizer.h +++ b/Zend/Optimizer/zend_optimizer.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/zend_optimizer_internal.h b/Zend/Optimizer/zend_optimizer_internal.h index 869275811e3d..d01df56260bc 100644 --- a/Zend/Optimizer/zend_optimizer_internal.h +++ b/Zend/Optimizer/zend_optimizer_internal.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/Optimizer/zend_ssa.c b/Zend/Optimizer/zend_ssa.c index e30159f8f3c6..fa2901b89421 100644 --- a/Zend/Optimizer/zend_ssa.c +++ b/Zend/Optimizer/zend_ssa.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, SSA - Static Single Assignment Form | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Nikita Popov | diff --git a/Zend/Optimizer/zend_ssa.h b/Zend/Optimizer/zend_ssa.h index 4f591618750f..ee9faf9bfd23 100644 --- a/Zend/Optimizer/zend_ssa.h +++ b/Zend/Optimizer/zend_ssa.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine, SSA - Static Single Assignment Form | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/Optimizer/zend_worklist.h b/Zend/Optimizer/zend_worklist.h index 85e7b111d5c9..ea03048e9756 100644 --- a/Zend/Optimizer/zend_worklist.h +++ b/Zend/Optimizer/zend_worklist.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andy Wingo | +----------------------------------------------------------------------+ diff --git a/Zend/tests/enum/gh21760.phpt b/Zend/tests/enum/gh21760.phpt new file mode 100644 index 000000000000..0835e3ca937d --- /dev/null +++ b/Zend/tests/enum/gh21760.phpt @@ -0,0 +1,19 @@ +--TEST-- +GH-21760 (Trait with class constant name conflict against enum case causes SEGV) +--FILE-- + +--EXPECTF-- +Fatal error: Cannot use trait X, because X::Up conflicts with enum case Direction::Up in %s on line %d diff --git a/Zend/tests/first_class_callable/first_class_callable_non_unary_error.phpt b/Zend/tests/first_class_callable/first_class_callable_non_unary_error.phpt deleted file mode 100644 index 74e36a9ad0df..000000000000 --- a/Zend/tests/first_class_callable/first_class_callable_non_unary_error.phpt +++ /dev/null @@ -1,10 +0,0 @@ ---TEST-- -First class callable error: more than one argument ---FILE-- - ---EXPECTF-- -Fatal error: Cannot create a Closure for call expression with more than one argument, or non-variadic placeholders in %s on line %d diff --git a/Zend/tests/first_class_callable/first_class_callable_non_variadic_error.phpt b/Zend/tests/first_class_callable/first_class_callable_non_variadic_error.phpt deleted file mode 100644 index efbd13b7593b..000000000000 --- a/Zend/tests/first_class_callable/first_class_callable_non_variadic_error.phpt +++ /dev/null @@ -1,10 +0,0 @@ ---TEST-- -First class callable error: non-variadic placeholder ---FILE-- - ---EXPECTF-- -Fatal error: Cannot create a Closure for call expression with more than one argument, or non-variadic placeholders in %s on line %d diff --git a/Zend/tests/gh16799.phpt b/Zend/tests/gh16799.phpt index ce1dbd5b1655..d31d1a5705c6 100644 --- a/Zend/tests/gh16799.phpt +++ b/Zend/tests/gh16799.phpt @@ -15,7 +15,12 @@ Test::test(); --EXPECTF-- Fatal error: Uncaught Exception: Use of "static" in callables is deprecated in %s:%d Stack trace: -#0 %s(%d): {closure:%s:%d}(8192, 'Use of "static"...', %s, %d) +#0 %s(%d): {closure:%s}(8192, 'Use of "static"%s', '%s', %d) #1 %s(%d): Test::test() #2 {main} + +Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d +Stack trace: +#0 %s(%d): Test::test() +#1 {main} thrown in %s on line %d diff --git a/Zend/tests/gh21504.inc b/Zend/tests/gh21504.inc new file mode 100644 index 000000000000..71dc5c2e61f6 --- /dev/null +++ b/Zend/tests/gh21504.inc @@ -0,0 +1,3 @@ + var_dump(...); diff --git a/Zend/tests/gh21504.phpt b/Zend/tests/gh21504.phpt new file mode 100644 index 000000000000..5fd9eaff91ab --- /dev/null +++ b/Zend/tests/gh21504.phpt @@ -0,0 +1,12 @@ +--TEST-- +GH-21504: Incorrect RC-handling for ZEND_EXT_STMT op1 +--FILE-- + +--EXPECT-- +string(4) "1234" diff --git a/Zend/tests/gh21603.phpt b/Zend/tests/gh21603.phpt new file mode 100644 index 000000000000..ab2fbc44e797 --- /dev/null +++ b/Zend/tests/gh21603.phpt @@ -0,0 +1,22 @@ +--TEST-- +GH-21603: Missing addref for __unset +--CREDITS-- +cnwangjihe +--FILE-- +prop); + +?> +--EXPECTF-- +object(C)#%d (0) { +} diff --git a/Zend/tests/gh21605.phpt b/Zend/tests/gh21605.phpt new file mode 100644 index 000000000000..973339ad3bb9 --- /dev/null +++ b/Zend/tests/gh21605.phpt @@ -0,0 +1,24 @@ +--TEST-- +GH-21605: Missing addref for Countable::count() +--CREDITS-- +cnwangjihe +--FILE-- + +--EXPECTF-- +object(C)#%d (0) { +} +int(42) diff --git a/Zend/tests/gh_21699.phpt b/Zend/tests/gh_21699.phpt new file mode 100644 index 000000000000..49b58365dabf --- /dev/null +++ b/Zend/tests/gh_21699.phpt @@ -0,0 +1,31 @@ +--TEST-- +GH-21699: Assertion failure in shutdown_executor when error handler throws during self:: callable resolution +--FILE-- +test(); +?> +--EXPECTF-- +Fatal error: Uncaught Exception in %s:%d +Stack trace: +#0 %s(%d): {closure:%s}(%d, 'Use of "self" i%s', '%s', %d) +#1 %s(%d): bar->test() +#2 {main} + +Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d +Stack trace: +#0 %s(%d): bar->test() +#1 {main} + thrown in %s on line %d diff --git a/Zend/tests/gh_21699_parent.phpt b/Zend/tests/gh_21699_parent.phpt new file mode 100644 index 000000000000..73cae41f3f5b --- /dev/null +++ b/Zend/tests/gh_21699_parent.phpt @@ -0,0 +1,32 @@ +--TEST-- +GH-21699 (parent::): no shutdown_executor trampoline assertion when error handler throws during parent:: callable resolution +--FILE-- +test(); +?> +--EXPECTF-- +Fatal error: Uncaught Exception in %s:%d +Stack trace: +#0 %s(%d): {closure:%s}(%d, 'Use of "parent"%s', '%s', %d) +#1 %s(%d): Child->test() +#2 {main} + +Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d +Stack trace: +#0 %s(%d): Child->test() +#1 {main} + thrown in %s on line %d diff --git a/Zend/tests/gh_21699_static.phpt b/Zend/tests/gh_21699_static.phpt new file mode 100644 index 000000000000..4d9604ebe77b --- /dev/null +++ b/Zend/tests/gh_21699_static.phpt @@ -0,0 +1,31 @@ +--TEST-- +GH-21699 (static::): no shutdown_executor trampoline assertion when error handler throws during static:: callable resolution +--FILE-- +test(); +?> +--EXPECTF-- +Fatal error: Uncaught Exception in %s:%d +Stack trace: +#0 %s(%d): {closure:%s}(%d, 'Use of "static"%s', '%s', %d) +#1 %s(%d): bar->test() +#2 {main} + +Next TypeError: call_user_func(): Argument #1 ($callback) must be a valid callback, (null) in %s:%d +Stack trace: +#0 %s(%d): bar->test() +#1 {main} + thrown in %s on line %d diff --git a/Zend/tests/lazy_objects/gh18038-002.phpt b/Zend/tests/lazy_objects/gh18038-002.phpt index 4c12f21de811..d363731c62a0 100644 --- a/Zend/tests/lazy_objects/gh18038-002.phpt +++ b/Zend/tests/lazy_objects/gh18038-002.phpt @@ -34,5 +34,4 @@ var_dump($obj->prop); --EXPECT-- init string(19) "RealInstance::__set" -string(12) "Proxy::__set" int(2) diff --git a/Zend/tests/lazy_objects/gh18038-004.phpt b/Zend/tests/lazy_objects/gh18038-004.phpt index 8810efb6bec2..c1495c5a6d8d 100644 --- a/Zend/tests/lazy_objects/gh18038-004.phpt +++ b/Zend/tests/lazy_objects/gh18038-004.phpt @@ -36,7 +36,6 @@ var_dump($real->prop); --EXPECTF-- init string(19) "RealInstance::__get" -string(12) "Proxy::__get" Warning: Undefined property: RealInstance::$prop in %s on line %d NULL diff --git a/Zend/tests/lazy_objects/gh18038-007.phpt b/Zend/tests/lazy_objects/gh18038-007.phpt index 9925190a1980..4c7c0d0b4b0a 100644 --- a/Zend/tests/lazy_objects/gh18038-007.phpt +++ b/Zend/tests/lazy_objects/gh18038-007.phpt @@ -36,6 +36,5 @@ var_dump(isset($real->prop[''])); --EXPECT-- init string(21) "RealInstance::__isset" -string(14) "Proxy::__isset" bool(false) bool(false) diff --git a/Zend/tests/lazy_objects/gh18038-009.phpt b/Zend/tests/lazy_objects/gh18038-009.phpt index 3c165a71ccff..11067cdb970b 100644 --- a/Zend/tests/lazy_objects/gh18038-009.phpt +++ b/Zend/tests/lazy_objects/gh18038-009.phpt @@ -36,6 +36,5 @@ var_dump(isset($real->prop)); --EXPECT-- init string(21) "RealInstance::__isset" -string(14) "Proxy::__isset" bool(false) bool(false) diff --git a/Zend/tests/lazy_objects/gh20875.phpt b/Zend/tests/lazy_objects/gh20875.phpt index 72e16011320c..ff036edabd59 100644 --- a/Zend/tests/lazy_objects/gh20875.phpt +++ b/Zend/tests/lazy_objects/gh20875.phpt @@ -31,14 +31,6 @@ Warning: Undefined variable $a in %s on line %d Warning: Undefined variable $v in %s on line %d -Notice: Indirect modification of overloaded property A::$b has no effect in %s on line %d - -Warning: Undefined variable $x in %s on line %d - -Notice: Object of class stdClass could not be converted to int in %s on line %d - -Warning: Undefined variable $v in %s on line %d - Notice: Indirect modification of overloaded property A::$f has no effect in %s on line %d Fatal error: Uncaught Error: Cannot assign by reference to overloaded object in %s:%d diff --git a/Zend/tests/lazy_objects/gh21478-isset.phpt b/Zend/tests/lazy_objects/gh21478-isset.phpt new file mode 100644 index 000000000000..9138984af01b --- /dev/null +++ b/Zend/tests/lazy_objects/gh21478-isset.phpt @@ -0,0 +1,30 @@ +--TEST-- +GH-21478: __isset on lazy proxy should not double-invoke when real instance guard is set +--FILE-- +{$name}); + } +} + +class Bar extends Foo {} + +$rc = new ReflectionClass(Bar::class); +$proxy = $rc->newLazyProxy(function () { + echo "Init\n"; + return new Foo(); +}); + +$real = $rc->initializeLazyObject($proxy); +isset($real->x); + +?> +--EXPECT-- +Init +__isset($x) on Foo diff --git a/Zend/tests/lazy_objects/gh21478-proxy-get-override.phpt b/Zend/tests/lazy_objects/gh21478-proxy-get-override.phpt new file mode 100644 index 000000000000..520c8f662353 --- /dev/null +++ b/Zend/tests/lazy_objects/gh21478-proxy-get-override.phpt @@ -0,0 +1,30 @@ +--TEST-- +GH-21478: Proxy's own __get runs when accessed directly (not from real instance) +--FILE-- +newLazyProxy(function () { + return new Foo(); +}); +$rc->initializeLazyObject($proxy); + +$proxy->x; + +?> +--EXPECT-- +Bar x diff --git a/Zend/tests/lazy_objects/gh21478-proxy-get-ref-forward.phpt b/Zend/tests/lazy_objects/gh21478-proxy-get-ref-forward.phpt new file mode 100644 index 000000000000..fa737cf18f2e --- /dev/null +++ b/Zend/tests/lazy_objects/gh21478-proxy-get-ref-forward.phpt @@ -0,0 +1,32 @@ +--TEST-- +GH-21478: No assertion failure when &__get forwards through initialized lazy proxy +--FILE-- +{$name}; + } +} + +class Bar extends Foo {} + +$rc = new ReflectionClass(Bar::class); +$proxy = $rc->newLazyProxy(function () { + echo "Init\n"; + return new Foo(); +}); + +$real = $rc->initializeLazyObject($proxy); +$a = &$real->x; +var_dump($a); +?> +--EXPECTF-- +Init +Foo::__get($x) on Foo + +Warning: Undefined property: Foo::$x in %s on line %d +NULL diff --git a/Zend/tests/lazy_objects/gh21478-set.phpt b/Zend/tests/lazy_objects/gh21478-set.phpt new file mode 100644 index 000000000000..0b2f872de11a --- /dev/null +++ b/Zend/tests/lazy_objects/gh21478-set.phpt @@ -0,0 +1,32 @@ +--TEST-- +GH-21478: __set on lazy proxy should not double-invoke when real instance guard is set +--FILE-- +{$name} = $value; + } +} + +#[AllowDynamicProperties] +class Bar extends Foo {} + +$rc = new ReflectionClass(Bar::class); +$proxy = $rc->newLazyProxy(function () { + echo "Init\n"; + return new Foo(); +}); + +$real = $rc->initializeLazyObject($proxy); +$real->x = 1; + +?> +--EXPECT-- +Init +__set($x) on Foo diff --git a/Zend/tests/lazy_objects/gh21478-unset.phpt b/Zend/tests/lazy_objects/gh21478-unset.phpt new file mode 100644 index 000000000000..5febbd235d82 --- /dev/null +++ b/Zend/tests/lazy_objects/gh21478-unset.phpt @@ -0,0 +1,30 @@ +--TEST-- +GH-21478: __unset on lazy proxy should not double-invoke when real instance guard is set +--FILE-- +{$name}); + } +} + +class Bar extends Foo {} + +$rc = new ReflectionClass(Bar::class); +$proxy = $rc->newLazyProxy(function () { + echo "Init\n"; + return new Foo(); +}); + +$real = $rc->initializeLazyObject($proxy); +unset($real->x); + +?> +--EXPECT-- +Init +__unset($x) on Foo diff --git a/Zend/tests/lazy_objects/gh21478.phpt b/Zend/tests/lazy_objects/gh21478.phpt new file mode 100644 index 000000000000..aaa226a9a09a --- /dev/null +++ b/Zend/tests/lazy_objects/gh21478.phpt @@ -0,0 +1,32 @@ +--TEST-- +GH-21478 (Property access on lazy proxy may invoke magic method despite real instance guards) +--FILE-- +{$name}; + } +} + +class Bar extends Foo {} + +$rc = new ReflectionClass(Bar::class); +$proxy = $rc->newLazyProxy(function () { + echo "Init\n"; + return new Foo(); +}); + +$real = $rc->initializeLazyObject($proxy); +$real->x; + +?> +--EXPECTF-- +Init +__get($x) on Foo + +Warning: Undefined property: Foo::$x in %s on line %d diff --git a/Zend/tests/partial_application/assert.phpt b/Zend/tests/partial_application/assert.phpt new file mode 100644 index 000000000000..fe36e687f8d5 --- /dev/null +++ b/Zend/tests/partial_application/assert.phpt @@ -0,0 +1,35 @@ +--TEST-- +PFA of assert() behaves like a dynamic call to assert() +--FILE-- +getMessage(), "\n"; +} + +try { + echo "# Dynamic call:\n"; + (function ($f) { $f(false); })('assert'); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage() ?: '(no message)', "\n"; +} + +try { + echo "# PFA call:\n"; + $f = assert(?); + $f(false); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage() ?: '(no message)', "\n"; +} + +?> +--EXPECT-- +# Static call: +AssertionError: assert(false) +# Dynamic call: +AssertionError: (no message) +# PFA call: +AssertionError: (no message) diff --git a/Zend/tests/partial_application/attributes_001.phpt b/Zend/tests/partial_application/attributes_001.phpt new file mode 100644 index 000000000000..827ad41321ec --- /dev/null +++ b/Zend/tests/partial_application/attributes_001.phpt @@ -0,0 +1,88 @@ +--TEST-- +PFA inherits NoDiscard and SensitiveParameter attributes +--FILE-- +getAttributes()); + + foreach ($r->getParameters() as $i => $p) { + echo "Parameter $i:\n"; + var_dump($p->getAttributes()); + } +} + +echo "# Orig attributes:\n"; + +dump_attributes('f'); + +$f = f(1, ?, ?, ...); + +echo "# PFA attributes:\n"; + +dump_attributes($f); + +?> +--EXPECTF-- +# Orig attributes: +array(2) { + [0]=> + object(ReflectionAttribute)#%d (1) { + ["name"]=> + string(9) "NoDiscard" + } + [1]=> + object(ReflectionAttribute)#%d (1) { + ["name"]=> + string(4) "Test" + } +} +Parameter 0: +array(0) { +} +Parameter 1: +array(1) { + [0]=> + object(ReflectionAttribute)#%d (1) { + ["name"]=> + string(18) "SensitiveParameter" + } +} +Parameter 2: +array(1) { + [0]=> + object(ReflectionAttribute)#%d (1) { + ["name"]=> + string(4) "Test" + } +} +# PFA attributes: +array(1) { + [0]=> + object(ReflectionAttribute)#%d (1) { + ["name"]=> + string(9) "NoDiscard" + } +} +Parameter 0: +array(1) { + [0]=> + object(ReflectionAttribute)#%d (1) { + ["name"]=> + string(18) "SensitiveParameter" + } +} +Parameter 1: +array(0) { +} +Parameter 2: +array(0) { +} diff --git a/Zend/tests/partial_application/attributes_002.phpt b/Zend/tests/partial_application/attributes_002.phpt new file mode 100644 index 000000000000..be1f1612f938 --- /dev/null +++ b/Zend/tests/partial_application/attributes_002.phpt @@ -0,0 +1,19 @@ +--TEST-- +PFA preserves #[SensitiveParameter] +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught Exception in %s:%d +Stack trace: +#0 %s(%d): f(1, Object(SensitiveParameterValue), 3, Object(SensitiveParameterValue), Object(SensitiveParameterValue)) +#1 %s(%d): {closure:pfa:%s:7}(Object(SensitiveParameterValue), 3, Object(SensitiveParameterValue), Object(SensitiveParameterValue)) +#2 {main} + thrown in %s on line %d diff --git a/Zend/tests/partial_application/attributes_003.phpt b/Zend/tests/partial_application/attributes_003.phpt new file mode 100644 index 000000000000..d113d02eb8f7 --- /dev/null +++ b/Zend/tests/partial_application/attributes_003.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA preserves #[NoDiscard] +--FILE-- + +--EXPECTF-- +Warning: The return value of function {closure:%s}() should either be used or intentionally ignored by casting it as (void) in %s on line 7 diff --git a/Zend/tests/partial_application/clone.phpt b/Zend/tests/partial_application/clone.phpt new file mode 100644 index 000000000000..f778d776b717 --- /dev/null +++ b/Zend/tests/partial_application/clone.phpt @@ -0,0 +1,50 @@ +--TEST-- +clone() can be partially applied +--FILE-- + 7])); + +$clone = clone(?, ['a' => 8]); +var_dump($clone(new C(9, 10))); + +?> +--EXPECTF-- +object(C)#%d (2) { + ["a"]=> + int(1) + ["b"]=> + int(2) +} +object(C)#%d (2) { + ["a"]=> + int(3) + ["b"]=> + int(4) +} +object(C)#%d (2) { + ["a"]=> + int(7) + ["b"]=> + int(6) +} +object(C)#%d (2) { + ["a"]=> + int(8) + ["b"]=> + int(10) +} diff --git a/Zend/tests/partial_application/compile_errors_001.phpt b/Zend/tests/partial_application/compile_errors_001.phpt new file mode 100644 index 000000000000..f08495a1f1e5 --- /dev/null +++ b/Zend/tests/partial_application/compile_errors_001.phpt @@ -0,0 +1,8 @@ +--TEST-- +PFA compile errors: multiple variadic placeholders +--FILE-- + +--EXPECTF-- +Fatal error: Variadic placeholder may only appear once in %s on line %d diff --git a/Zend/tests/partial_application/compile_errors_002.phpt b/Zend/tests/partial_application/compile_errors_002.phpt new file mode 100644 index 000000000000..b6a2073a8363 --- /dev/null +++ b/Zend/tests/partial_application/compile_errors_002.phpt @@ -0,0 +1,8 @@ +--TEST-- +PFA compile errors: variadic placeholder must be last +--FILE-- + +--EXPECTF-- +Fatal error: Variadic placeholder must be last in %s on line %d diff --git a/Zend/tests/partial_application/compile_errors_003.phpt b/Zend/tests/partial_application/compile_errors_003.phpt new file mode 100644 index 000000000000..26ff8435111b --- /dev/null +++ b/Zend/tests/partial_application/compile_errors_003.phpt @@ -0,0 +1,8 @@ +--TEST-- +PFA compile errors: placeholders can not appear after named args +--FILE-- + +--EXPECTF-- +Fatal error: Cannot use positional argument after named argument in %s on line %d diff --git a/Zend/tests/partial_application/compile_errors_004.phpt b/Zend/tests/partial_application/compile_errors_004.phpt new file mode 100644 index 000000000000..ac7ec163c5da --- /dev/null +++ b/Zend/tests/partial_application/compile_errors_004.phpt @@ -0,0 +1,8 @@ +--TEST-- +PFA compile errors: variadic placeholder must be last, including after named args +--FILE-- + +--EXPECTF-- +Fatal error: Variadic placeholder must be last in %s on line %d diff --git a/Zend/tests/partial_application/compile_errors_005.phpt b/Zend/tests/partial_application/compile_errors_005.phpt new file mode 100644 index 000000000000..30e4aa12b488 --- /dev/null +++ b/Zend/tests/partial_application/compile_errors_005.phpt @@ -0,0 +1,8 @@ +--TEST-- +PFA compile errors: variadic placeholder must be last, including after positional args +--FILE-- + +--EXPECTF-- +Fatal error: Variadic placeholder must be last in %s on line %d diff --git a/Zend/tests/partial_application/compile_errors_006.phpt b/Zend/tests/partial_application/compile_errors_006.phpt new file mode 100644 index 000000000000..8549c671e906 --- /dev/null +++ b/Zend/tests/partial_application/compile_errors_006.phpt @@ -0,0 +1,8 @@ +--TEST-- +PFA compile errors: can not use unpacking in PFA, including with variadic placeholders +--FILE-- + "bar"], ...); +?> +--EXPECTF-- +Fatal error: Cannot combine partial application and unpacking in %s on line %d diff --git a/Zend/tests/partial_application/deprecated.phpt b/Zend/tests/partial_application/deprecated.phpt new file mode 100644 index 000000000000..5a6280347cfc --- /dev/null +++ b/Zend/tests/partial_application/deprecated.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFAs may emit deprecation warnings +--FILE-- + +--EXPECTF-- +Deprecated: Function f() is deprecated in %s on line %d diff --git a/Zend/tests/partial_application/errors_001.phpt b/Zend/tests/partial_application/errors_001.phpt new file mode 100644 index 000000000000..2d5348cb28af --- /dev/null +++ b/Zend/tests/partial_application/errors_001.phpt @@ -0,0 +1,62 @@ +--TEST-- +PFA errors: PFA instantiation follows the usual argument count validation +--FILE-- +getMessage()); +} + +try { + foo(?, ?, ?, ?); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +try { + $c = new C(); + $c->f(?); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +try { + property_exists(?); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +try { + usleep(?, ?); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +try { + foo(?, ?, ?, ?, ...); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +/* It is allowed to specify less than the number of required params, when there + * is a variadic placeholder */ +foo(?, ...); + +?> +--EXPECT-- +ArgumentCountError: Partial application of foo() expects exactly 3 arguments, 1 given +ArgumentCountError: Partial application of foo() expects at most 3 arguments, 4 given +ArgumentCountError: Partial application of C::f() expects exactly 3 arguments, 1 given +ArgumentCountError: Partial application of property_exists() expects exactly 2 arguments, 1 given +ArgumentCountError: Partial application of usleep() expects at most 1 arguments, 2 given +ArgumentCountError: Partial application of foo() expects at most 3 arguments, 4 given diff --git a/Zend/tests/partial_application/errors_002.phpt b/Zend/tests/partial_application/errors_002.phpt new file mode 100644 index 000000000000..0132d8873e2a --- /dev/null +++ b/Zend/tests/partial_application/errors_002.phpt @@ -0,0 +1,15 @@ +--TEST-- +PFA errors: named parameter that resolve to the position of a placeholder is an error +--FILE-- +getMessage()); +} +?> +--EXPECT-- +Error: Named parameter $a overwrites previous placeholder diff --git a/Zend/tests/partial_application/errors_003.phpt b/Zend/tests/partial_application/errors_003.phpt new file mode 100644 index 000000000000..85ecf398fa1b --- /dev/null +++ b/Zend/tests/partial_application/errors_003.phpt @@ -0,0 +1,74 @@ +--TEST-- +PFA errors: PFA call follows the usual argument count validation +--FILE-- +getMessage()); +} + +$foo = foo(?, ?); + +try { + $foo(1); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +$bar = bar(?, ?, ...); + +try { + $bar(1); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +class Foo { + public function bar($a, ...$b) {} +} + +$foo = new Foo; + +$bar = $foo->bar(?); + +try { + $bar(); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +$repeat = str_repeat('a', ...); + +try { + $repeat(); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +$usleep = usleep(?); + +try { + $usleep(); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +$usleep(1, 2); + +?> +--EXPECTF-- +ArgumentCountError: Too few arguments to function {closure:%s:%d}(), 0 passed in %s on line %d and exactly 1 expected +ArgumentCountError: Too few arguments to function {closure:%s:%d}(), 1 passed in %s on line %d and exactly 2 expected +ArgumentCountError: Too few arguments to function {closure:%s:%d}(), 1 passed in %s on line %d and exactly 3 expected +ArgumentCountError: Too few arguments to function Foo::{closure:%s:%d}(), 0 passed in %s on line %d and exactly 1 expected +ArgumentCountError: Too few arguments to function {closure:%s:%d}(), 0 passed in %s on line %d and exactly 1 expected +ArgumentCountError: Too few arguments to function {closure:%s:%d}(), 0 passed in %s on line %d and exactly 1 expected diff --git a/Zend/tests/partial_application/errors_004.phpt b/Zend/tests/partial_application/errors_004.phpt new file mode 100644 index 000000000000..e5e1432753b2 --- /dev/null +++ b/Zend/tests/partial_application/errors_004.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA errors: not specifying a required param is an error +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught ArgumentCountError: f(): Argument #2 ($b) not passed in %s:6 +Stack trace: +#0 {main} + thrown in %s on line %d diff --git a/Zend/tests/partial_application/errors_005.phpt b/Zend/tests/partial_application/errors_005.phpt new file mode 100644 index 000000000000..2c28f0565e2d --- /dev/null +++ b/Zend/tests/partial_application/errors_005.phpt @@ -0,0 +1,15 @@ +--TEST-- +PFA errors: Can not fetch default parameter value for Closure::__invoke() +--FILE-- +__invoke(0, 0, ?); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +ArgumentCountError: Closure::__invoke(): Argument #3 ($c) must be passed explicitly, because the default value is not known diff --git a/Zend/tests/partial_application/errors_006.phpt b/Zend/tests/partial_application/errors_006.phpt new file mode 100644 index 000000000000..9534bb40ee54 --- /dev/null +++ b/Zend/tests/partial_application/errors_006.phpt @@ -0,0 +1,45 @@ +--TEST-- +PFA errors: Some internal function parameters have UNKNOWN default value +--FILE-- + array_keys($array, ???, true) + $f = array_keys(?, strict: true); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +try { + // fn (array $array, mixed $filter_value = ???) => array_keys($array, $filter_value, true) + $f = array_keys(?, strict: true, ...); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +array(1) { + [0]=> + int(1) +} +array(0) { +} +array(1) { + [0]=> + int(1) +} +array(0) { +} +ArgumentCountError: array_keys(): Argument #2 ($filter_value) must be passed explicitly, because the default value is not known +ArgumentCountError: array_keys(): Argument #2 ($filter_value) must be passed explicitly, because the default value is not known diff --git a/Zend/tests/partial_application/export_001.phpt b/Zend/tests/partial_application/export_001.phpt new file mode 100644 index 000000000000..b48146bcc65a --- /dev/null +++ b/Zend/tests/partial_application/export_001.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA AST export +--INI-- +assert.exception=1 +--FILE-- +getMessage()); +} +?> +--EXPECT-- +AssertionError: assert(0 && foo(?) && foo(new stdClass(), bar: 1, ...)) diff --git a/Zend/tests/partial_application/extra_named.phpt b/Zend/tests/partial_application/extra_named.phpt new file mode 100644 index 000000000000..4dd80cfa0127 --- /dev/null +++ b/Zend/tests/partial_application/extra_named.phpt @@ -0,0 +1,49 @@ +--TEST-- +PFA extra named parameters are forwarded to the actual function +--FILE-- + +--EXPECT-- +array(3) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" + ["baz"]=> + string(3) "baz" +} +array(2) { + ["bar"]=> + string(3) "bar" + ["baz"]=> + string(3) "baz" +} +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} diff --git a/Zend/tests/partial_application/function_name.phpt b/Zend/tests/partial_application/function_name.phpt new file mode 100644 index 000000000000..68d2ccf84871 --- /dev/null +++ b/Zend/tests/partial_application/function_name.phpt @@ -0,0 +1,40 @@ +--TEST-- +Partial application function name +--FILE-- +getName()); + } +} + +function f() { + echo "# From a function:\n"; + var_dump((new ReflectionFunction(g(?)))->getName()); + + echo "# Declared on same line:\n"; + [$a, $b] = [g(?), g(?)]; + var_dump((new ReflectionFunction($a))->getName(), (new ReflectionFunction($b))->getName()); +} + +f(); +C::m(); + +echo "# From global scope:\n"; +var_dump((new ReflectionFunction(g(?)))->getName()); + +?> +--EXPECTF-- +# From a function: +string(20) "{closure:pfa:f():14}" +# Declared on same line: +string(20) "{closure:pfa:f():17}" +string(20) "{closure:pfa:f():17}" +# From a method: +string(22) "{closure:pfa:C::m():8}" +# From global scope: +string(%d) "{closure:pfa:%sfunction_name.php:25}" diff --git a/Zend/tests/partial_application/fuzz_001.phpt b/Zend/tests/partial_application/fuzz_001.phpt new file mode 100644 index 000000000000..790162ba6a36 --- /dev/null +++ b/Zend/tests/partial_application/fuzz_001.phpt @@ -0,0 +1,21 @@ +--TEST-- +Closure application fuzz 001 +--FILE-- + +--EXPECTF-- +Closure [ function {closure:%s:%d} ] { + @@ %s 4 - 4 + + - Bound Variables [2] { + Variable #0 [ $fn ] + Variable #1 [ $a ] + } + + - Parameters [1] { + Parameter #0 [ $b ] + } +} diff --git a/Zend/tests/partial_application/fuzz_002.phpt b/Zend/tests/partial_application/fuzz_002.phpt new file mode 100644 index 000000000000..685cb706e69b --- /dev/null +++ b/Zend/tests/partial_application/fuzz_002.phpt @@ -0,0 +1,13 @@ +--TEST-- +Closure application fuzz 002 +--FILE-- + +--EXPECTF-- +OK diff --git a/Zend/tests/partial_application/fuzz_003.phpt b/Zend/tests/partial_application/fuzz_003.phpt new file mode 100644 index 000000000000..6e9d583fda99 --- /dev/null +++ b/Zend/tests/partial_application/fuzz_003.phpt @@ -0,0 +1,20 @@ +--TEST-- +Closure application fuzz 003 +--FILE-- +method(1, ...); +$bar(2); +?> +--EXPECT-- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} diff --git a/Zend/tests/partial_application/fuzz_004.phpt b/Zend/tests/partial_application/fuzz_004.phpt new file mode 100644 index 000000000000..ea005304a3af --- /dev/null +++ b/Zend/tests/partial_application/fuzz_004.phpt @@ -0,0 +1,19 @@ +--TEST-- +Closure application fuzz 004 +--FILE-- +__invoke(UNDEFINED); +} catch (\Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +Error: Undefined constant "UNDEFINED" diff --git a/Zend/tests/partial_application/fuzz_005.phpt b/Zend/tests/partial_application/fuzz_005.phpt new file mode 100644 index 000000000000..ea04862d8399 --- /dev/null +++ b/Zend/tests/partial_application/fuzz_005.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA fuzz 005 +--FILE-- + +==DONE== +--EXPECT-- +==DONE== diff --git a/Zend/tests/partial_application/fuzz_006.phpt b/Zend/tests/partial_application/fuzz_006.phpt new file mode 100644 index 000000000000..26ec6e3e4dd1 --- /dev/null +++ b/Zend/tests/partial_application/fuzz_006.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA fuzz 006 +--FILE-- + +--EXPECT-- +int(1) diff --git a/Zend/tests/partial_application/fuzz_007.phpt b/Zend/tests/partial_application/fuzz_007.phpt new file mode 100644 index 000000000000..123ce29d8b18 --- /dev/null +++ b/Zend/tests/partial_application/fuzz_007.phpt @@ -0,0 +1,19 @@ +--TEST-- +PFA fuzz 007 +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECT-- +Undefined constant "UNDEFINED" diff --git a/Zend/tests/partial_application/hook.phpt b/Zend/tests/partial_application/hook.phpt new file mode 100644 index 000000000000..6402c5d01e74 --- /dev/null +++ b/Zend/tests/partial_application/hook.phpt @@ -0,0 +1,25 @@ +--TEST-- +Parent property hook call can not be partially applied +--FILE-- +a = 1; + +?> +--EXPECTF-- +Fatal error: Cannot create Closure for parent property hook call in %s on line %d diff --git a/Zend/tests/partial_application/instance_polymorphism.phpt b/Zend/tests/partial_application/instance_polymorphism.phpt new file mode 100644 index 000000000000..59fb5795d60f --- /dev/null +++ b/Zend/tests/partial_application/instance_polymorphism.phpt @@ -0,0 +1,43 @@ +--TEST-- +PFA: instance polymorphism +--FILE-- +m(?); + } +} + +class C extends P { + public function m(string|array $b): void { + echo __METHOD__, PHP_EOL; + var_dump($b); + } +} + +for ($i = 0; $i < 2; $i++) { + (new P())->get()(a: 'a'); + (new C())->get()(b: []); +} + +?> +--EXPECT-- +P::m +string(1) "a" +C::m +array(0) { +} +P::m +string(1) "a" +C::m +array(0) { +} diff --git a/Zend/tests/partial_application/invokable.phpt b/Zend/tests/partial_application/invokable.phpt new file mode 100644 index 000000000000..c21030e7733a --- /dev/null +++ b/Zend/tests/partial_application/invokable.phpt @@ -0,0 +1,51 @@ +--TEST-- +__invoke() can be partially applied +--FILE-- + +--EXPECTF-- +Closure [ public method {closure:%s:%d} ] { + @@ %s.php 11 - 11 + + - Parameters [2] { + Parameter #0 [ int $a ] + Parameter #1 [ object $b ] + } + - Return [ C ] +} + +Closure [ public method {closure:%s:%d} ] { + @@ %s.php 15 - 15 + + - Bound Variables [1] { + Variable #0 [ $b ] + } + + - Parameters [1] { + Parameter #0 [ int $a ] + } + - Return [ C ] +} + +int(1) +object(stdClass)#%d (0) { +} diff --git a/Zend/tests/partial_application/jit_001.phpt b/Zend/tests/partial_application/jit_001.phpt new file mode 100644 index 000000000000..84aefa05ab28 --- /dev/null +++ b/Zend/tests/partial_application/jit_001.phpt @@ -0,0 +1,9 @@ +--TEST-- +PFA JIT 001 +--FILE-- + +--EXPECT-- +int(1) +int(2) diff --git a/Zend/tests/partial_application/magic_001.phpt b/Zend/tests/partial_application/magic_001.phpt new file mode 100644 index 000000000000..6cd6044c62de --- /dev/null +++ b/Zend/tests/partial_application/magic_001.phpt @@ -0,0 +1,81 @@ +--TEST-- +__call() can be partially applied +--FILE-- +method(?); + +echo (string) new ReflectionFunction($bar); + +try { + $bar(); +} catch (Error $ex) { + printf("%s: %s\n", $ex::class, $ex->getMessage()); +} + +$bar(1, 2); +$bar(1); + +$bar = $foo->method(?, ...); + +echo (string) new ReflectionFunction($bar); + +$bar(10); +$bar(10, 20); + +$bar = $foo->method(new Foo, ...); + +echo (string) new ReflectionFunction($bar); + +$bar(100); +?> +--EXPECTF-- +Closure [ public method {closure:%s:%d} ] { + @@ %s 12 - 12 + + - Parameters [1] { + Parameter #0 [ mixed $arguments0 ] + } +} +ArgumentCountError: Too few arguments to function Foo::{closure:%s:%d}(), 0 passed in %s on line %d and exactly 1 expected +Foo::method +int(1) +Foo::method +int(1) +Closure [ public method {closure:%s:%d} ] { + @@ %s 25 - 25 + + - Parameters [2] { + Parameter #0 [ mixed $arguments0 ] + Parameter #1 [ mixed ...$arguments ] + } +} +Foo::method +int(10) +Foo::method +int(10) +int(20) +Closure [ public method {closure:%s:%d} ] { + @@ %s 32 - 32 + + - Bound Variables [1] { + Variable #0 [ $arguments0 ] + } + + - Parameters [1] { + Parameter #0 [ mixed ...$arguments ] + } +} +Foo::method +object(Foo)#%d (0) { +} +int(100) diff --git a/Zend/tests/partial_application/magic_002.phpt b/Zend/tests/partial_application/magic_002.phpt new file mode 100644 index 000000000000..d91ef7a7afe2 --- /dev/null +++ b/Zend/tests/partial_application/magic_002.phpt @@ -0,0 +1,72 @@ +--TEST-- +__callStatic() can be partially applied +--FILE-- + +--EXPECTF-- +Closure [ static public method {closure:%s:%d} ] { + @@ %s 10 - 10 + + - Parameters [1] { + Parameter #0 [ mixed $arguments0 ] + } +} +Foo::method +int(1) +Foo::method +int(1) +Closure [ static public method {closure:%s:%d} ] { + @@ %s 17 - 17 + + - Parameters [2] { + Parameter #0 [ mixed $arguments0 ] + Parameter #1 [ mixed ...$arguments ] + } +} +Foo::method +int(10) +Foo::method +int(10) +int(20) +Closure [ static public method {closure:%s:%d} ] { + @@ %s 24 - 24 + + - Bound Variables [1] { + Variable #0 [ $arguments0 ] + } + + - Parameters [1] { + Parameter #0 [ mixed ...$arguments ] + } +} +Foo::method +object(Foo)#%d (0) { +} +int(100) diff --git a/Zend/tests/partial_application/magic_003.phpt b/Zend/tests/partial_application/magic_003.phpt new file mode 100644 index 000000000000..242403ea38fc --- /dev/null +++ b/Zend/tests/partial_application/magic_003.phpt @@ -0,0 +1,13 @@ +--TEST-- +PFA magic trampoline release (result unused) +--FILE-- + +--EXPECT-- +OK diff --git a/Zend/tests/partial_application/magic_004.phpt b/Zend/tests/partial_application/magic_004.phpt new file mode 100644 index 000000000000..8ef93a91ce83 --- /dev/null +++ b/Zend/tests/partial_application/magic_004.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA magic trampoline release (result used) +--FILE-- + +--EXPECT-- +OK diff --git a/Zend/tests/partial_application/magic_005.phpt b/Zend/tests/partial_application/magic_005.phpt new file mode 100644 index 000000000000..e70ed90b1767 --- /dev/null +++ b/Zend/tests/partial_application/magic_005.phpt @@ -0,0 +1,29 @@ +--TEST-- +PFA magic null ptr deref in arginfo +--FILE-- +method(?); +var_dump($bar); +?> +--EXPECTF-- +object(Closure)#%d (%d) { + ["name"]=> + string(%d) "{closure:%s}" + ["file"]=> + string(%d) "%smagic_005.php" + ["line"]=> + int(7) + ["this"]=> + object(Foo)#%d (0) { + } + ["parameter"]=> + array(1) { + ["$arguments0"]=> + string(10) "" + } +} diff --git a/Zend/tests/partial_application/magic_006.phpt b/Zend/tests/partial_application/magic_006.phpt new file mode 100644 index 000000000000..29564d8b615a --- /dev/null +++ b/Zend/tests/partial_application/magic_006.phpt @@ -0,0 +1,20 @@ +--TEST-- +PFA magic varargs +--FILE-- +method(1,...); +$bar(2); +?> +--EXPECT-- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} diff --git a/Zend/tests/partial_application/named_placeholders.phpt b/Zend/tests/partial_application/named_placeholders.phpt new file mode 100644 index 000000000000..7d4a11f93624 --- /dev/null +++ b/Zend/tests/partial_application/named_placeholders.phpt @@ -0,0 +1,117 @@ +--TEST-- +PFA supports named placeholders +--FILE-- +getMessage(), "\n"; +} + +try { + $d = bar(c: ?, ...); +} catch (\Throwable $e) { + echo $e->getMessage(), "\n"; +} + +?> +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %snamed_placeholders.php 11 - 11 + + - Parameters [1] { + Parameter #0 [ $b = 2 ] + } +} +int(1) +object(B)#%d (0) { +} +int(3) +Closure [ static function {closure:%s:%d} ] { + @@ %snamed_placeholders.php 17 - 17 + + - Bound Variables [1] { + Variable #0 [ $fn ] + } + + - Parameters [1] { + Parameter #0 [ $b = 2 ] + } +} +int(1) +object(B)#%d (0) { +} +int(3) +Closure [ static function {closure:%s:%d} ] { + @@ %snamed_placeholders.php 24 - 24 + + - Bound Variables [1] { + Variable #0 [ $fn ] + } + + - Parameters [1] { + Parameter #0 [ $b = 2 ] + } +} +int(1) +object(B)#%d (0) { +} +int(3) +Closure [ static function {closure:%s:%d} ] { + @@ %snamed_placeholders.php 34 - 34 + + - Parameters [3] { + Parameter #0 [ $b = 2 ] + Parameter #1 [ $a = 1 ] + Parameter #2 [ ...$c ] + } +} +object(A)#%d (0) { +} +object(B)#%d (0) { +} +array(1) { + [0]=> + object(C)#%d (0) { + } +} +Named parameter $a overwrites previous placeholder +Cannot use named placeholder for unknown or variadic parameter $c diff --git a/Zend/tests/partial_application/never_cache_001.phpt b/Zend/tests/partial_application/never_cache_001.phpt new file mode 100644 index 000000000000..3c9e8a173e51 --- /dev/null +++ b/Zend/tests/partial_application/never_cache_001.phpt @@ -0,0 +1,30 @@ +--TEST-- +Inline cache can not be used for ZEND_ACC_NEVER_CACHE functions +--FILE-- +__invoke(?)); +} + +?> +--EXPECT-- +string(1) "A" +string(1) "B" +string(1) "A" +string(1) "B" diff --git a/Zend/tests/partial_application/non_dynamic_call_funcs.phpt b/Zend/tests/partial_application/non_dynamic_call_funcs.phpt new file mode 100644 index 000000000000..db25ef3dcc93 --- /dev/null +++ b/Zend/tests/partial_application/non_dynamic_call_funcs.phpt @@ -0,0 +1,46 @@ +--TEST-- +Functions that can not be called dynamically, can not be partially applied +--FILE-- +getMessage(), "\n"; + } +} + +?> +--EXPECT-- +Error: Cannot call func_get_arg() dynamically +Error: Cannot call compact() dynamically +Error: Cannot call extract() dynamically +Error: Cannot call func_get_args() dynamically +Error: Cannot call func_num_args() dynamically +Error: Cannot call get_defined_vars() dynamically diff --git a/Zend/tests/partial_application/observers.phpt b/Zend/tests/partial_application/observers.phpt new file mode 100644 index 000000000000..8717b38ca326 --- /dev/null +++ b/Zend/tests/partial_application/observers.phpt @@ -0,0 +1,34 @@ +--TEST-- +PFA support observers +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.show_output=1 +zend_test.observer.observe_all=1 +--FILE-- + +--EXPECTF-- + + + + <{closure:%s}> + + + + +int(1) +int(2) + + + + diff --git a/Zend/tests/partial_application/param_reorder.phpt b/Zend/tests/partial_application/param_reorder.phpt new file mode 100644 index 000000000000..3ade1beb0af7 --- /dev/null +++ b/Zend/tests/partial_application/param_reorder.phpt @@ -0,0 +1,202 @@ +--TEST-- +Named parameters define the order of parameters in a PFA +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECTF-- +# All named +Closure [ static function {closure:%s:%d} ] { + @@ %sparam_reorder.php 13 - 13 + + - Parameters [4] { + Parameter #0 [ $d ] + Parameter #1 [ $c ] + Parameter #2 [ $b ] + Parameter #3 [ $a ] + } +} + +array(4) { + [0]=> + int(4) + [1]=> + int(3) + [2]=> + int(2) + [3]=> + int(1) +} +# Some named: Positional first, then named in specified order +Closure [ static function {closure:%s:%d} ] { + @@ %sparam_reorder.php 19 - 19 + + - Parameters [4] { + Parameter #0 [ $a ] + Parameter #1 [ $b ] + Parameter #2 [ $d ] + Parameter #3 [ $c ] + } +} + +array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(4) + [3]=> + int(3) +} +# Some named, one unspecified +Closure [ static function {closure:%s:%d} ] { + @@ %sparam_reorder.php 25 - 25 + + - Parameters [3] { + Parameter #0 [ $a ] + Parameter #1 [ $c ] + Parameter #2 [ $b ] + } +} + +array(4) { + [0]=> + int(1) + [1]=> + int(3) + [2]=> + int(2) + [3]=> + NULL +} +# Some named, some implicit added by '...' +Closure [ static function {closure:%s:%d} ] { + @@ %sparam_reorder.php 31 - 31 + + - Parameters [4] { + Parameter #0 [ $c ] + Parameter #1 [ $b ] + Parameter #2 [ $a ] + Parameter #3 [ $d = NULL ] + } +} + +array(4) { + [0]=> + int(3) + [1]=> + int(2) + [2]=> + int(1) + [3]=> + int(4) +} +# Some named, some implicit added by '...' on variadic function +Closure [ static function {closure:%s:%d} ] { + @@ %sparam_reorder.php 37 - 37 + + - Parameters [4] { + Parameter #0 [ $c ] + Parameter #1 [ $b ] + Parameter #2 [ $a ] + Parameter #3 [ ...$d ] + } +} + +array(4) { + [0]=> + int(3) + [1]=> + int(2) + [2]=> + int(1) + [3]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } +} +# Some prebound, some named +Closure [ static function {closure:%s:%d} ] { + @@ %sparam_reorder.php 43 - 43 + + - Bound Variables [2] { + Variable #0 [ $a ] + Variable #1 [ $d ] + } + + - Parameters [2] { + Parameter #0 [ $c ] + Parameter #1 [ $b ] + } +} + +array(4) { + [0]=> + int(-1) + [1]=> + int(2) + [2]=> + int(1) + [3]=> + int(-2) +} +# Some named, some required missing +ArgumentCountError: f(): Argument #1 ($a) not passed diff --git a/Zend/tests/partial_application/pipe_optimization_001.phpt b/Zend/tests/partial_application/pipe_optimization_001.phpt new file mode 100644 index 000000000000..9610f37b76ac --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_001.phpt @@ -0,0 +1,47 @@ +--TEST-- +PFA optimization: PFA with single placeholder arg can be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a) { + var_dump($a); + } +} + +1 |> foo(?); + +?> +--EXPECTF-- +$_main: + ; (lines=9, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_001.php:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 1 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 DO_FCALL_BY_NAME +0008 RETURN int(1) + +foo: + ; (lines=5, args=1, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_001.php:4-6 +0000 CV0($a) = RECV 1 +0001 INIT_FCALL 1 %d string("var_dump") +0002 SEND_VAR CV0($a) 1 +0003 DO_ICALL +0004 RETURN null +int(1) diff --git a/Zend/tests/partial_application/pipe_optimization_002.phpt b/Zend/tests/partial_application/pipe_optimization_002.phpt new file mode 100644 index 000000000000..729e70d30e6b --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_002.phpt @@ -0,0 +1,51 @@ +--TEST-- +PFA pipe optimization: PFA with only one placeholder can be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +2 |> foo(1, ?); + +?> +--EXPECTF-- +$_main: + ; (lines=10, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_002.php:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 2 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 SEND_VAL_EX int(2) 2 +0008 DO_FCALL_BY_NAME +0009 RETURN int(1) + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_002.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null +int(1) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_003.phpt b/Zend/tests/partial_application/pipe_optimization_003.phpt new file mode 100644 index 000000000000..da112f8f3cea --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_003.phpt @@ -0,0 +1,51 @@ +--TEST-- +PFA pipe optimization: PFA with only one placeholder can be optimized (placeholder first) +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +2 |> foo(?, 1); + +?> +--EXPECTF-- +$_main: + ; (lines=10, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_003.php:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 2 string("foo") +0006 SEND_VAL_EX int(2) 1 +0007 SEND_VAL_EX int(1) 2 +0008 DO_FCALL_BY_NAME +0009 RETURN int(1) + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_003.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null +int(2) +int(1) diff --git a/Zend/tests/partial_application/pipe_optimization_004.phpt b/Zend/tests/partial_application/pipe_optimization_004.phpt new file mode 100644 index 000000000000..addee498d810 --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_004.phpt @@ -0,0 +1,88 @@ +--TEST-- +PFA pipe optimization: PFA with multiple placeholders can not be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +try { + 2 |> foo(?, ?); +} catch (\Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECTF-- +$_main: + ; (lines=22, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_004.php:1-16 +0000 INIT_FCALL 0 %d string("time") +0001 T2 = DO_ICALL +0002 T1 = IS_SMALLER int(0) T2 +0003 JMPZ T1 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 2 string("foo") +0006 SEND_PLACEHOLDER 1 +0007 SEND_PLACEHOLDER 2 +0008 T1 = CALLABLE_CONVERT_PARTIAL %d +0009 INIT_DYNAMIC_CALL 1 T1 +0010 SEND_VAL_EX int(2) 1 +0011 DO_FCALL +0012 RETURN int(1) +0013 CV0($e) = CATCH string("Throwable") +0014 T1 = FETCH_CLASS_NAME CV0($e) +0015 ECHO T1 +0016 ECHO string(": ") +0017 INIT_METHOD_CALL 0 CV0($e) string("getMessage") +0018 T1 = DO_FCALL +0019 ECHO T1 +0020 ECHO string("\n") +0021 RETURN int(1) +EXCEPTION TABLE: + 0005, 0013, -, - + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_004.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null + +$_main: + ; (lines=3, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %s:1-10 +0000 T0 = DECLARE_LAMBDA_FUNCTION 0 +0001 FREE T0 +0002 RETURN int(1) + +{closure:%s:%d}: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %s:10-10 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("foo") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 T2 = DO_UCALL +0006 RETURN T2 +ArgumentCountError: Too few arguments to function {closure:pfa:%s:%d}(), 1 passed in %s on line %d and exactly 2 expected diff --git a/Zend/tests/partial_application/pipe_optimization_005.phpt b/Zend/tests/partial_application/pipe_optimization_005.phpt new file mode 100644 index 000000000000..3ccfec836609 --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_005.phpt @@ -0,0 +1,51 @@ +--TEST-- +PFA pipe optimization: PFA with only one placeholder can be optimized (variadic) +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +2 |> foo(1, ...); + +?> +--EXPECTF-- +$_main: + ; (lines=10, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_005.php:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 2 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 SEND_VAL_EX int(2) 2 +0008 DO_FCALL_BY_NAME +0009 RETURN int(1) + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_005.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null +int(1) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_006.phpt b/Zend/tests/partial_application/pipe_optimization_006.phpt new file mode 100644 index 000000000000..6e06477427a3 --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_006.phpt @@ -0,0 +1,55 @@ +--TEST-- +PFA pipe optimization: PFA with only one placeholder can be optimized (named) +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b = null, $c = null) { + var_dump($a, $b, $c); + } +} + +2 |> foo(1, c: ?); + +?> +--EXPECTF-- +$_main: + ; (lines=11, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_006.php:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 1 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 SEND_VAL_EX int(2) string("c") +0008 CHECK_UNDEF_ARGS +0009 DO_FCALL_BY_NAME +0010 RETURN int(1) + +foo: + ; (lines=9, args=3, vars=3, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_006.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV_INIT 2 null +0002 CV2($c) = RECV_INIT 3 null +0003 INIT_FCALL 3 %d string("var_dump") +0004 SEND_VAR CV0($a) 1 +0005 SEND_VAR CV1($b) 2 +0006 SEND_VAR CV2($c) 3 +0007 DO_ICALL +0008 RETURN null +int(1) +NULL +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_007.phpt b/Zend/tests/partial_application/pipe_optimization_007.phpt new file mode 100644 index 000000000000..09c3c765d237 --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_007.phpt @@ -0,0 +1,88 @@ +--TEST-- +PFA pipe optimization: PFA with multiple placeholders can not be optimized (named) +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +try { + 2 |> foo(a: ?, b: ?); +} catch (\Throwable $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECTF-- +$_main: + ; (lines=22, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_007.php:1-16 +0000 INIT_FCALL 0 %d string("time") +0001 T2 = DO_ICALL +0002 T1 = IS_SMALLER int(0) T2 +0003 JMPZ T1 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 0 string("foo") +0006 SEND_PLACEHOLDER string("a") +0007 SEND_PLACEHOLDER string("b") +0008 T1 = CALLABLE_CONVERT_PARTIAL %d array(...) +0009 INIT_DYNAMIC_CALL 1 T1 +0010 SEND_VAL_EX int(2) 1 +0011 DO_FCALL +0012 RETURN int(1) +0013 CV0($e) = CATCH string("Throwable") +0014 T1 = FETCH_CLASS_NAME CV0($e) +0015 ECHO T1 +0016 ECHO string(": ") +0017 INIT_METHOD_CALL 0 CV0($e) string("getMessage") +0018 T1 = DO_FCALL +0019 ECHO T1 +0020 ECHO string("\n") +0021 RETURN int(1) +EXCEPTION TABLE: + 0005, 0013, -, - + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_007.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null + +$_main: + ; (lines=3, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %s:1-10 +0000 T0 = DECLARE_LAMBDA_FUNCTION 0 +0001 FREE T0 +0002 RETURN int(1) + +{closure:%s:%d}: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %s:10-10 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("foo") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 T2 = DO_UCALL +0006 RETURN T2 +ArgumentCountError: Too few arguments to function {closure:pfa:%s:%d}(), 1 passed in %s on line %d and exactly 2 expected diff --git a/Zend/tests/partial_application/pipe_optimization_008.phpt b/Zend/tests/partial_application/pipe_optimization_008.phpt new file mode 100644 index 000000000000..070074632c77 --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_008.phpt @@ -0,0 +1,99 @@ +--TEST-- +PFA pipe optimization: PFA with both a variadic placeholder and named arg can not be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +try { + 2 |> foo(a: 1, ...); +} catch (\Throwable $e) { + echo $e->getMessage(), "\n"; +} + +?> +--EXPECTF-- +$_main: + ; (lines=18, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_008.php:1-16 +0000 INIT_FCALL 0 %d string("time") +0001 T2 = DO_ICALL +0002 T1 = IS_SMALLER int(0) T2 +0003 JMPZ T1 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 0 string("foo") +0006 SEND_VAL_EX int(1) string("a") +0007 T1 = CALLABLE_CONVERT_PARTIAL %d +0008 INIT_DYNAMIC_CALL 1 T1 +0009 SEND_VAL_EX int(2) 1 +0010 DO_FCALL +0011 RETURN int(1) +0012 CV0($e) = CATCH string("Throwable") +0013 INIT_METHOD_CALL 0 CV0($e) string("getMessage") +0014 T1 = DO_FCALL +0015 ECHO T1 +0016 ECHO string("\n") +0017 RETURN int(1) +EXCEPTION TABLE: + 0005, 0012, -, - + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_008.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null + +$_main: + ; (lines=4, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %s:1-10 +0000 T1 = DECLARE_LAMBDA_FUNCTION 0 +0001 BIND_LEXICAL T1 CV0($a) +0002 FREE T1 +0003 RETURN int(1) +LIVE RANGES: + 1: 0001 - 0002 (tmp/var) + +{closure:%s:%d}: + ; (lines=18, args=1, vars=2, tmps=%d) + ; (after optimizer) + ; %s:10-10 +0000 CV0($b) = RECV 1 +0001 BIND_STATIC CV1($a) +0002 T3 = FUNC_NUM_ARGS +0003 T2 = IS_SMALLER_OR_EQUAL T3 int(1) +0004 JMPZ T2 0010 +0005 INIT_FCALL 2 %d string("foo") +0006 SEND_VAR CV1($a) 1 +0007 SEND_VAR CV0($b) 2 +0008 T2 = DO_UCALL +0009 RETURN T2 +0010 INIT_FCALL 2 %d string("foo") +0011 SEND_VAR CV1($a) 1 +0012 SEND_VAR CV0($b) 2 +0013 T2 = FUNC_GET_ARGS int(1) +0014 SEND_UNPACK T2 +0015 CHECK_UNDEF_ARGS +0016 T2 = DO_UCALL +0017 RETURN T2 +int(1) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_009.phpt b/Zend/tests/partial_application/pipe_optimization_009.phpt new file mode 100644 index 000000000000..118482a3860b --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_009.phpt @@ -0,0 +1,102 @@ +--TEST-- +PFA pipe optimization: Evaluation order +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b, $c) { + var_dump($a, $b, $c); + } + function lhs() { + echo __FUNCTION__, "\n"; + return 0; + } + function arg1() { + echo __FUNCTION__, "\n"; + return 1; + } + function arg2() { + echo __FUNCTION__, "\n"; + return 2; + } +} + +lhs() |> foo(arg1(), ?, arg2()); + +?> +--EXPECTF-- +$_main: + ; (lines=20, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_009.php:1-24 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0008 +0004 DECLARE_FUNCTION string("foo") 0 +0005 DECLARE_FUNCTION string("lhs") 1 +0006 DECLARE_FUNCTION string("arg1") 2 +0007 DECLARE_FUNCTION string("arg2") 3 +0008 INIT_FCALL_BY_NAME 0 string("lhs") +0009 T0 = DO_FCALL_BY_NAME +0010 INIT_FCALL_BY_NAME 3 string("foo") +0011 INIT_FCALL_BY_NAME 0 string("arg1") +0012 V1 = DO_FCALL_BY_NAME +0013 SEND_VAR_NO_REF_EX V1 1 +0014 SEND_VAL_EX T0 2 +0015 INIT_FCALL_BY_NAME 0 string("arg2") +0016 V0 = DO_FCALL_BY_NAME +0017 SEND_VAR_NO_REF_EX V0 3 +0018 DO_FCALL_BY_NAME +0019 RETURN int(1) +LIVE RANGES: + 0: 0010 - 0014 (tmp/var) + +foo: + ; (lines=9, args=3, vars=3, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_009.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 CV2($c) = RECV 3 +0003 INIT_FCALL 3 %d string("var_dump") +0004 SEND_VAR CV0($a) 1 +0005 SEND_VAR CV1($b) 2 +0006 SEND_VAR CV2($c) 3 +0007 DO_ICALL +0008 RETURN null + +lhs: + ; (lines=2, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_009.php:7-10 +0000 ECHO string("lhs\n") +0001 RETURN int(0) + +arg1: + ; (lines=2, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_009.php:11-14 +0000 ECHO string("arg1\n") +0001 RETURN int(1) + +arg2: + ; (lines=2, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_009.php:15-18 +0000 ECHO string("arg2\n") +0001 RETURN int(2) +lhs +arg1 +arg2 +int(1) +int(0) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_010.phpt b/Zend/tests/partial_application/pipe_optimization_010.phpt new file mode 100644 index 000000000000..f77c2a97732e --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_010.phpt @@ -0,0 +1,58 @@ +--TEST-- +PFA pipe optimization: References +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo(&$a, $b) { + var_dump($a, $b); + $a = 2; + } +} + +1 |> foo($a, ?); +var_dump($a); + +?> +--EXPECTF-- +$_main: + ; (lines=13, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_010.php:1-14 +0000 INIT_FCALL 0 %d string("time") +0001 T2 = DO_ICALL +0002 T1 = IS_SMALLER int(0) T2 +0003 JMPZ T1 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 2 string("foo") +0006 SEND_VAR_EX CV0($a) 1 +0007 SEND_VAL_EX int(1) 2 +0008 DO_FCALL_BY_NAME +0009 INIT_FCALL 1 %d string("var_dump") +0010 SEND_VAR CV0($a) 1 +0011 DO_ICALL +0012 RETURN int(1) + +foo: + ; (lines=8, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_010.php:4-7 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 ASSIGN CV0($a) int(2) +0007 RETURN null +NULL +int(1) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_011.phpt b/Zend/tests/partial_application/pipe_optimization_011.phpt new file mode 100644 index 000000000000..cd1c986d99e7 --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_011.phpt @@ -0,0 +1,98 @@ +--TEST-- +PFA pipe optimization: Evaluation order +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b, $c) { + var_dump($a, $b, $c); + } + function arg1() { + global $a; + $a = 2; + echo __FUNCTION__, "\n"; + return 1; + } + function arg2() { + global $a; + $a = 3; + echo __FUNCTION__, "\n"; + return 2; + } +} + +$a = 0; +$a |> foo(arg1(), ?, arg2()); + +?> +--EXPECTF-- +$_main: + ; (lines=19, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_011.php:1-25 +0000 INIT_FCALL 0 %d string("time") +0001 T2 = DO_ICALL +0002 T1 = IS_SMALLER int(0) T2 +0003 JMPZ T1 0007 +0004 DECLARE_FUNCTION string("foo") 0 +0005 DECLARE_FUNCTION string("arg1") %d +0006 DECLARE_FUNCTION string("arg2") %d +0007 ASSIGN CV0($a) int(0) +0008 T1 = QM_ASSIGN CV0($a) +0009 INIT_FCALL_BY_NAME 3 string("foo") +0010 INIT_FCALL_BY_NAME 0 string("arg1") +0011 V2 = DO_FCALL_BY_NAME +0012 SEND_VAR_NO_REF_EX V2 1 +0013 SEND_VAL_EX T1 2 +0014 INIT_FCALL_BY_NAME 0 string("arg2") +0015 V1 = DO_FCALL_BY_NAME +0016 SEND_VAR_NO_REF_EX V1 3 +0017 DO_FCALL_BY_NAME +0018 RETURN int(1) +LIVE RANGES: + 1: 0009 - 0013 (tmp/var) + +foo: + ; (lines=9, args=3, vars=3, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_011.php:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 CV2($c) = RECV 3 +0003 INIT_FCALL 3 %d string("var_dump") +0004 SEND_VAR CV0($a) 1 +0005 SEND_VAR CV1($b) 2 +0006 SEND_VAR CV2($c) 3 +0007 DO_ICALL +0008 RETURN null + +arg1: + ; (lines=4, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_011.php:7-12 +0000 BIND_GLOBAL CV0($a) string("a") +0001 ASSIGN CV0($a) int(2) +0002 ECHO string("arg1\n") +0003 RETURN int(1) + +arg2: + ; (lines=4, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %spipe_optimization_011.php:13-18 +0000 BIND_GLOBAL CV0($a) string("a") +0001 ASSIGN CV0($a) int(3) +0002 ECHO string("arg2\n") +0003 RETURN int(2) +arg1 +arg2 +int(1) +int(0) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_012.phpt b/Zend/tests/partial_application/pipe_optimization_012.phpt new file mode 100644 index 000000000000..da172874adce --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_012.phpt @@ -0,0 +1,52 @@ +--TEST-- +PFA optimization: PFA with named args and placeholders can be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +1 |> foo(?, b: 2); + +?> +--EXPECTF-- +$_main: + ; (lines=11, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %s:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 1 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 SEND_VAL_EX int(2) string("b") +0008 CHECK_UNDEF_ARGS +0009 DO_FCALL_BY_NAME +0010 RETURN int(1) + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %s:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null +int(1) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_013.phpt b/Zend/tests/partial_application/pipe_optimization_013.phpt new file mode 100644 index 000000000000..7d1a48b2f2ed --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_013.phpt @@ -0,0 +1,87 @@ +--TEST-- +PFA optimization: PFA with named args and a variadic placeholder can not be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b) { + var_dump($a, $b); + } +} + +1 |> foo(b: 2, ...); + +?> +--EXPECTF-- +$_main: + ; (lines=12, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %s:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 0 string("foo") +0006 SEND_VAL_EX int(2) string("b") +0007 T0 = CALLABLE_CONVERT_PARTIAL 3 +0008 INIT_DYNAMIC_CALL 1 T0 +0009 SEND_VAL_EX int(1) 1 +0010 DO_FCALL +0011 RETURN int(1) + +foo: + ; (lines=7, args=2, vars=2, tmps=%d) + ; (after optimizer) + ; %s:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV 2 +0002 INIT_FCALL 2 %d string("var_dump") +0003 SEND_VAR CV0($a) 1 +0004 SEND_VAR CV1($b) 2 +0005 DO_ICALL +0006 RETURN null + +$_main: + ; (lines=4, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %s:1-9 +0000 T1 = DECLARE_LAMBDA_FUNCTION 0 +0001 BIND_LEXICAL T1 CV0($b) +0002 FREE T1 +0003 RETURN int(1) +LIVE RANGES: + 1: 0001 - 0002 (tmp/var) + +{closure:pfa:%s:9}: + ; (lines=18, args=1, vars=2, tmps=%d) + ; (after optimizer) + ; %s:9-9 +0000 CV0($a) = RECV 1 +0001 BIND_STATIC CV1($b) +0002 T3 = FUNC_NUM_ARGS +0003 T2 = IS_SMALLER_OR_EQUAL T3 int(1) +0004 JMPZ T2 0010 +0005 INIT_FCALL 2 %d string("foo") +0006 SEND_VAR CV0($a) 1 +0007 SEND_VAR CV1($b) 2 +0008 T2 = DO_UCALL +0009 RETURN T2 +0010 INIT_FCALL 2 %d string("foo") +0011 SEND_VAR CV0($a) 1 +0012 SEND_VAR CV1($b) 2 +0013 T2 = FUNC_GET_ARGS int(1) +0014 SEND_UNPACK T2 +0015 CHECK_UNDEF_ARGS +0016 T2 = DO_UCALL +0017 RETURN T2 +int(1) +int(2) diff --git a/Zend/tests/partial_application/pipe_optimization_014.phpt b/Zend/tests/partial_application/pipe_optimization_014.phpt new file mode 100644 index 000000000000..6e66d7e0e99d --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_014.phpt @@ -0,0 +1,68 @@ +--TEST-- +PFA pipe optimization: PFA with unknown named parameter can be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b = null, $c = null) { + var_dump($a, $b, $c); + } +} + +try { + 2 |> foo(1, unknown: ?); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECTF-- +$_main: + ; (lines=20, args=0, vars=1, tmps=%d) + ; (after optimizer) + ; %s:1-16 +0000 INIT_FCALL 0 %d string("time") +0001 T2 = DO_ICALL +0002 T1 = IS_SMALLER int(0) T2 +0003 JMPZ T1 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 1 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 SEND_VAL_EX int(2) string("unknown") +0008 CHECK_UNDEF_ARGS +0009 DO_FCALL_BY_NAME +0010 RETURN int(1) +0011 CV0($e) = CATCH string("Error") +0012 T1 = FETCH_CLASS_NAME CV0($e) +0013 ECHO T1 +0014 ECHO string(": ") +0015 INIT_METHOD_CALL 0 CV0($e) string("getMessage") +0016 T1 = DO_FCALL +0017 ECHO T1 +0018 ECHO string("\n") +0019 RETURN int(1) +EXCEPTION TABLE: + 0005, 0011, -, - + +foo: + ; (lines=9, args=3, vars=3, tmps=%d) + ; (after optimizer) + ; %s:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV_INIT 2 null +0002 CV2($c) = RECV_INIT 3 null +0003 INIT_FCALL 3 %d string("var_dump") +0004 SEND_VAR CV0($a) 1 +0005 SEND_VAR CV1($b) 2 +0006 SEND_VAR CV2($c) 3 +0007 DO_ICALL +0008 RETURN null +Error: Unknown named parameter $unknown diff --git a/Zend/tests/partial_application/pipe_optimization_015.phpt b/Zend/tests/partial_application/pipe_optimization_015.phpt new file mode 100644 index 000000000000..ce293c7a300c --- /dev/null +++ b/Zend/tests/partial_application/pipe_optimization_015.phpt @@ -0,0 +1,55 @@ +--TEST-- +PFA pipe optimization: PFA with skipped optional parameter can be optimized +--EXTENSIONS-- +opcache +--INI-- +opcache.opt_debug_level=0x20000 +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_cache= +opcache.file_cache_only=0 +--FILE-- + 0) { + function foo($a, $b = null, $c = null) { + var_dump($a, $b, $c); + } +} + +3 |> foo(1, c: ?); + +?> +--EXPECTF-- +$_main: + ; (lines=11, args=0, vars=0, tmps=%d) + ; (after optimizer) + ; %s:1-12 +0000 INIT_FCALL 0 %d string("time") +0001 T1 = DO_ICALL +0002 T0 = IS_SMALLER int(0) T1 +0003 JMPZ T0 0005 +0004 DECLARE_FUNCTION string("foo") 0 +0005 INIT_FCALL_BY_NAME 1 string("foo") +0006 SEND_VAL_EX int(1) 1 +0007 SEND_VAL_EX int(3) string("c") +0008 CHECK_UNDEF_ARGS +0009 DO_FCALL_BY_NAME +0010 RETURN int(1) + +foo: + ; (lines=9, args=3, vars=3, tmps=%d) + ; (after optimizer) + ; %s:4-6 +0000 CV0($a) = RECV 1 +0001 CV1($b) = RECV_INIT 2 null +0002 CV2($c) = RECV_INIT 3 null +0003 INIT_FCALL 3 %d string("var_dump") +0004 SEND_VAR CV0($a) 1 +0005 SEND_VAR CV1($b) 2 +0006 SEND_VAR CV2($c) 3 +0007 DO_ICALL +0008 RETURN null +int(1) +NULL +int(3) diff --git a/Zend/tests/partial_application/preloading.inc b/Zend/tests/partial_application/preloading.inc new file mode 100644 index 000000000000..885ed0c5b0f1 --- /dev/null +++ b/Zend/tests/partial_application/preloading.inc @@ -0,0 +1,13 @@ + diff --git a/Zend/tests/partial_application/preloading.phpt b/Zend/tests/partial_application/preloading.phpt new file mode 100644 index 000000000000..23ad6edf2c4c --- /dev/null +++ b/Zend/tests/partial_application/preloading.phpt @@ -0,0 +1,19 @@ +--TEST-- +PFA preloading +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.preload={PWD}/preloading.inc +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(2) +int(2) diff --git a/Zend/tests/partial_application/rebinding_001.phpt b/Zend/tests/partial_application/rebinding_001.phpt new file mode 100644 index 000000000000..d1913957a8c9 --- /dev/null +++ b/Zend/tests/partial_application/rebinding_001.phpt @@ -0,0 +1,59 @@ +--TEST-- +PFA can only be rebound to an instanceof $this +--FILE-- +f(?); +$g = $c->g(?); + +echo "# Can be rebound to \$this of the same class:\n"; +$f->bindTo(new C)(1); + +echo "# Can be rebound to \$this of a sub-class:\n"; +$f->bindTo(new SubClass)(1); + +echo "# Cannot be rebound to an unrelated class:\n"; +try { + $f->bindTo(new Unrelated)(1); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "# Cannot unbind \$this on instance method:\n"; +try { + $f->bindTo(null)(1); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "# Can unbind \$this on static method:\n"; +$g->bindTo(null)(1); + +?> +--EXPECTF-- +# Can be rebound to $this of the same class: +object(C)#%d (0) { +} +# Can be rebound to $this of a sub-class: +object(SubClass)#%d (0) { +} +# Cannot be rebound to an unrelated class: + +Warning: Cannot bind method C::{closure:%s:%d}() to object of class Unrelated, this will be an error in PHP 9 in %s on line %d +Error: Value of type null is not callable +# Cannot unbind $this on instance method: + +Warning: Cannot unbind $this of method, this will be an error in PHP 9 in %s on line %d +Error: Value of type null is not callable +# Can unbind $this on static method: +string(1) "C" diff --git a/Zend/tests/partial_application/rebinding_002.phpt b/Zend/tests/partial_application/rebinding_002.phpt new file mode 100644 index 000000000000..25e938120676 --- /dev/null +++ b/Zend/tests/partial_application/rebinding_002.phpt @@ -0,0 +1,45 @@ +--TEST-- +PFA scope cannot be rebound +--FILE-- +f(?); +$g = g(?); + +echo "# Can be rebound to the same scope:\n"; +$f->bindTo($c, C::class)(1); + +echo "# Method cannot be rebound to a different scope:\n"; +try { + $f->bindTo($c, SubClass::class)(1); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} + +echo "# Function cannot be rebound to a different scope:\n"; +try { + $g->bindTo($c, SubClass::class)(1); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} +?> +--EXPECTF-- +# Can be rebound to the same scope: +string(1) "C" +# Method cannot be rebound to a different scope: + +Warning: Cannot rebind scope of closure created from method, this will be an error in PHP 9 in %s on line %d +Value of type null is not callable +# Function cannot be rebound to a different scope: + +Warning: Cannot bind an instance to a static closure, this will be an error in PHP 9 in %s on line %d +Value of type null is not callable diff --git a/Zend/tests/partial_application/rebinding_003.phpt b/Zend/tests/partial_application/rebinding_003.phpt new file mode 100644 index 000000000000..9417bbc2d320 --- /dev/null +++ b/Zend/tests/partial_application/rebinding_003.phpt @@ -0,0 +1,69 @@ +--TEST-- +Rebinding PFA of Closure rebinds inner Closure +--FILE-- +getF()(?); +$g = $c->getG()(?); + +echo "# Can be rebound to \$this of the same class:\n"; +$d = new C(); +$f->bindTo($d)($d); + +echo "# Can be rebound to \$this of a sub-class:\n"; +$d = new SubClass(); +$f->bindTo($d)($d); + +echo "# Cannot be rebound to an unrelated class:\n"; +try { + $f->bindTo(new Unrelated)($c); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "# Cannot unbind \$this on non-static closure:\n"; +try { + $f->bindTo(null)($c); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "# Can unbind \$this on static closure:\n"; +$g->bindTo(null)($c); + +?> +--EXPECTF-- +# Can be rebound to $this of the same class: +object(C)#%d (0) { +} +bool(true) +# Can be rebound to $this of a sub-class: +object(SubClass)#%d (0) { +} +bool(true) +# Cannot be rebound to an unrelated class: + +Warning: Cannot bind method C::{closure:%s:%d}() to object of class Unrelated, this will be an error in PHP 9 in %s on line %d +Error: Value of type null is not callable +# Cannot unbind $this on non-static closure: + +Warning: Cannot unbind $this of method, this will be an error in PHP 9 in %s on line %d +Error: Value of type null is not callable +# Can unbind $this on static closure: +string(1) "C" +object(C)#%d (0) { +} diff --git a/Zend/tests/partial_application/recorded_warnings.phpt b/Zend/tests/partial_application/recorded_warnings.phpt new file mode 100644 index 000000000000..f25be826f525 --- /dev/null +++ b/Zend/tests/partial_application/recorded_warnings.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA compilation warnings are recorded and replayed +--FILE-- + +--EXPECTF-- +Deprecated: Using "_" as a type name is deprecated since 8.4 in %s on line 3 + +Deprecated: Using "_" as a type name is deprecated since 8.4 in %s on line 5 diff --git a/Zend/tests/partial_application/references_001.phpt b/Zend/tests/partial_application/references_001.phpt new file mode 100644 index 000000000000..080b3085acc0 --- /dev/null +++ b/Zend/tests/partial_application/references_001.phpt @@ -0,0 +1,24 @@ +--TEST-- +PFA receives by val if the actual function does +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + &string(49) "unchanged because foo() doesn't take by reference" +} +string(49) "unchanged because foo() doesn't take by reference" diff --git a/Zend/tests/partial_application/references_002.phpt b/Zend/tests/partial_application/references_002.phpt new file mode 100644 index 000000000000..42a90648c1ae --- /dev/null +++ b/Zend/tests/partial_application/references_002.phpt @@ -0,0 +1,24 @@ +--TEST-- +PFA receives by ref if the actual function does +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + &int(2) +} +int(2) diff --git a/Zend/tests/partial_application/references_003.phpt b/Zend/tests/partial_application/references_003.phpt new file mode 100644 index 000000000000..be116b06c79f --- /dev/null +++ b/Zend/tests/partial_application/references_003.phpt @@ -0,0 +1,20 @@ +--TEST-- +PFA receives by ref if the actual function does +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECTF-- +{closure:%s}(): Argument #1 ($b) could not be passed by reference diff --git a/Zend/tests/partial_application/references_004.phpt b/Zend/tests/partial_application/references_004.phpt new file mode 100644 index 000000000000..8ef3ff002ce7 --- /dev/null +++ b/Zend/tests/partial_application/references_004.phpt @@ -0,0 +1,42 @@ +--TEST-- +PFA receives variadic param by ref if the actual function does +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %sreferences_004.php 13 - 13 + + - Bound Variables [2] { + Variable #0 [ $a ] + Variable #1 [ $args1 ] + } + + - Parameters [2] { + Parameter #0 [ &$args0 ] + Parameter #1 [ &...$args ] + } +} + +int(-2) +int(-3) +int(-4) diff --git a/Zend/tests/partial_application/references_005.phpt b/Zend/tests/partial_application/references_005.phpt new file mode 100644 index 000000000000..e8c7c27a07be --- /dev/null +++ b/Zend/tests/partial_application/references_005.phpt @@ -0,0 +1,26 @@ +--TEST-- +PFA inherits return by ref +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + int(1) +} +array(1) { + [0]=> + int(1) +} diff --git a/Zend/tests/partial_application/reflection_001.phpt b/Zend/tests/partial_application/reflection_001.phpt new file mode 100644 index 000000000000..f101bc3348e0 --- /dev/null +++ b/Zend/tests/partial_application/reflection_001.phpt @@ -0,0 +1,48 @@ +--TEST-- +PFA reflection: optional parameters +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %sreflection_001.php 6 - 6 + + - Parameters [3] { + Parameter #0 [ $a = 1 ] + Parameter #1 [ $b = 5 ] + Parameter #2 [ $c = 10 ] + } +} +Closure [ static function {closure:%s:%d} ] { + @@ %sreflection_001.php 10 - 10 + + - Parameters [3] { + Parameter #0 [ $a = 1 ] + Parameter #1 [ $b = 5 ] + Parameter #2 [ $c = 10 ] + } +} +Closure [ static function {closure:%s:%d} ] { + @@ %sreflection_001.php 14 - 14 + + - Parameters [3] { + Parameter #0 [ $a = 1 ] + Parameter #1 [ $b = 5 ] + Parameter #2 [ $c = 10 ] + } +} diff --git a/Zend/tests/partial_application/reflection_002.phpt b/Zend/tests/partial_application/reflection_002.phpt new file mode 100644 index 000000000000..da91a7af50cf --- /dev/null +++ b/Zend/tests/partial_application/reflection_002.phpt @@ -0,0 +1,57 @@ +--TEST-- +PFA reflection: variadics +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %s 6 - 6 + + - Parameters [1] { + Parameter #0 [ $a ] + } +} +Closure [ static function {closure:%s:%d} ] { + @@ %s 10 - 10 + + - Parameters [2] { + Parameter #0 [ $a ] + Parameter #1 [ ...$b ] + } +} +Closure [ static function {closure:%s:%d} ] { + @@ %s 14 - 14 + + - Parameters [2] { + Parameter #0 [ $a ] + Parameter #1 [ $b0 ] + } +} +Closure [ static function {closure:%s:%d} ] { + @@ %s 18 - 18 + + - Parameters [3] { + Parameter #0 [ $a ] + Parameter #1 [ $b0 ] + Parameter #2 [ $b1 ] + } +} diff --git a/Zend/tests/partial_application/reflection_003.phpt b/Zend/tests/partial_application/reflection_003.phpt new file mode 100644 index 000000000000..90506d38a778 --- /dev/null +++ b/Zend/tests/partial_application/reflection_003.phpt @@ -0,0 +1,43 @@ +--TEST-- +PFA reflection: internal with variadics +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %sreflection_003.php 2 - 2 + + - Parameters [1] { + Parameter #0 [ string $format ] + } + - Return [ string ] +} +Closure [ static function {closure:%s:%d} ] { + @@ %sreflection_003.php 6 - 6 + + - Parameters [2] { + Parameter #0 [ string $format ] + Parameter #1 [ mixed ...$values ] + } + - Return [ string ] +} +Closure [ static function {closure:%s:%d} ] { + @@ %sreflection_003.php 10 - 10 + + - Parameters [2] { + Parameter #0 [ string $format ] + Parameter #1 [ mixed $values0 ] + } + - Return [ string ] +} diff --git a/Zend/tests/partial_application/reflection_004.phpt b/Zend/tests/partial_application/reflection_004.phpt new file mode 100644 index 000000000000..7226383f5afa --- /dev/null +++ b/Zend/tests/partial_application/reflection_004.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA reflection: ReflectionFunction::isAnonymous() is true for partials +--FILE-- +isAnonymous()); + +var_dump((new ReflectionFunction(function () {}))->isAnonymous()); + +var_dump((new ReflectionFunction(sprintf(?)))->isAnonymous()); + +?> +--EXPECT-- +bool(false) +bool(true) +bool(true) diff --git a/Zend/tests/partial_application/reflection_005.phpt b/Zend/tests/partial_application/reflection_005.phpt new file mode 100644 index 000000000000..be86270c004c --- /dev/null +++ b/Zend/tests/partial_application/reflection_005.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA reflection: ReflectionFunction::isClosure() is true for partials +--FILE-- +isClosure()); + +var_dump((new ReflectionFunction(function () {}))->isClosure()); + +var_dump((new ReflectionFunction(sprintf(?)))->isClosure()); + +?> +--EXPECT-- +bool(false) +bool(true) +bool(true) diff --git a/Zend/tests/partial_application/relative_return_types.phpt b/Zend/tests/partial_application/relative_return_types.phpt new file mode 100644 index 000000000000..5729f7edfd02 --- /dev/null +++ b/Zend/tests/partial_application/relative_return_types.phpt @@ -0,0 +1,148 @@ +--TEST-- +PFA supports relative return types +--FILE-- + 0) { + trait T { + public function getSelf(object $o): self { + return $o; + } + public function getStatic(object $o): static { + return $o; + } + } +} + +class C { + use T; +} + +class D extends C { +} + +$c = new C; + +echo "# C::getSelf():\n"; + +$self = $c->getSelf(?); + +echo (string) new ReflectionFunction($self), "\n"; + +var_dump($self($c)); +var_dump($self(new D)); +try { + $self(new stdClass); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} + +echo "# C::getStatic():\n"; + +$static = $c->getStatic(?); + +echo (string) new ReflectionFunction($static), "\n"; + +var_dump($static($c)); +var_dump($static(new D)); +try { + $static(new stdClass); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} + +$d = new D; + +echo "# D::getSelf():\n"; + +$self = $d->getSelf(?); + +echo (string) new ReflectionFunction($self), "\n"; + +var_dump($self($d)); +var_dump($self(new C)); +try { + $self(new stdClass); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +echo "# D::getStatic():\n"; + +$static = $d->getStatic(?); + +echo (string) new ReflectionFunction($static), "\n"; + +var_dump($static($d)); +try { + var_dump($static(new C)); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} +try { + $static(new stdClass); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} + +?> +--EXPECTF-- +# C::getSelf(): +Closure [ public method {closure:%s:%d} ] { + @@ %s 25 - 25 + + - Parameters [1] { + Parameter #0 [ object $o ] + } + - Return [ self ] +} + +object(C)#%d (0) { +} +object(D)#%d (0) { +} +C::getSelf(): Return value must be of type C, stdClass returned +# C::getStatic(): +Closure [ public method {closure:%s:%d} ] { + @@ %s 39 - 39 + + - Parameters [1] { + Parameter #0 [ object $o ] + } + - Return [ static ] +} + +object(C)#%d (0) { +} +object(D)#%d (0) { +} +C::getStatic(): Return value must be of type C, stdClass returned +# D::getSelf(): +Closure [ public method {closure:%s:%d} ] { + @@ %s 55 - 55 + + - Parameters [1] { + Parameter #0 [ object $o ] + } + - Return [ self ] +} + +object(D)#%d (0) { +} +object(C)#%d (0) { +} +TypeError: C::getSelf(): Return value must be of type C, stdClass returned +# D::getStatic(): +Closure [ public method {closure:%s:%d} ] { + @@ %s 69 - 69 + + - Parameters [1] { + Parameter #0 [ object $o ] + } + - Return [ static ] +} + +object(D)#%d (0) { +} +TypeError: C::getStatic(): Return value must be of type D, C returned +C::getStatic(): Return value must be of type D, stdClass returned diff --git a/Zend/tests/partial_application/return_type.phpt b/Zend/tests/partial_application/return_type.phpt new file mode 100644 index 000000000000..ae3738e2c660 --- /dev/null +++ b/Zend/tests/partial_application/return_type.phpt @@ -0,0 +1,20 @@ +--TEST-- +PFA inherits return type +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %s 4 - 4 + + - Bound Variables [1] { + Variable #0 [ $a ] + } + + - Parameters [0] { + } + - Return [ array ] +} diff --git a/Zend/tests/partial_application/rfc_examples.inc b/Zend/tests/partial_application/rfc_examples.inc new file mode 100644 index 000000000000..53babc07888b --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples.inc @@ -0,0 +1,76 @@ + [$pfa, $closure]) { + echo "# ", $test, ": "; + $pfaReflector = new ReflectionFunction($pfa); + $closureReflector = new ReflectionFunction($closure); + + try { + if (count($pfaReflector->getParameters()) !== count($closureReflector->getParameters())) { + throw new Exception(sprintf( + "Arity does not match: expected %d, got %d", + count($closureReflector->getParameters()), + count($pfaReflector->getParameters()), + )); + } + + $it = new MultipleIterator(); + $it->attachIterator(new ArrayIterator($pfaReflector->getParameters())); + $it->attachIterator(new ArrayIterator($closureReflector->getParameters())); + foreach ($it as $i => [$pfaParam, $closureParam]) { + [$i] = $i; + if ($pfaParam->getName() !== $closureParam->getName()) { + throw new Exception(sprintf("Name of param %d does not match: %s vs %s", + $i, + $pfaParam->getName(), + $closureParam->getName(), + )); + } + if ((string)$pfaParam->getType() !== (string)$closureParam->getType()) { + throw new Exception(sprintf("Type of param %d does not match: %s vs %s", + $i, + $pfaParam->getType(), + $closureParam->getType(), + )); + } + if ($pfaParam->isOptional() !== $closureParam->isOptional()) { + throw new Exception(sprintf("Optionalness of param %d does not match: %d vs %d", + $i, + $pfaParam->isOptional(), + $closureParam->isOptional(), + )); + } + } + + $args = []; + foreach ($pfaReflector->getParameters() as $i => $p) { + $args[] = match ((string) $p->getType()) { + 'int' => 100 + $i, + 'float' => 100.5 + $i, + '?float' => 100.5 + $i, + 'string' => (string) (100 + $i), + 'Point' => new Point, + 'mixed' => "mixed($i)", + '' => "mixed($i)", + }; + } + + if ($pfaReflector->getClosureThis() !== $closureReflector->getClosureThis()) { + throw new Exception("\$this differs"); + } + + if ($pfa(...$args) !== $closure(...$args)) { + throw new Exception("PFA is not equivalent to closure"); + } + } catch (Exception $e) { + echo $e->getMessage(), "\n"; + echo $pfaReflector; + echo $closureReflector; + return; + } + + echo "Ok\n"; + } +} diff --git a/Zend/tests/partial_application/rfc_examples_const_expr.phpt b/Zend/tests/partial_application/rfc_examples_const_expr.phpt new file mode 100644 index 000000000000..e2fc57440256 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_const_expr.phpt @@ -0,0 +1,25 @@ +--TEST-- +PFA RFC examples: "Constant expressions" section +--XFAIL-- +PFA in constant expressions not implemented yet +--FILE-- + +==DONE== +--EXPECTF-- +==DONE== diff --git a/Zend/tests/partial_application/rfc_examples_debug.phpt b/Zend/tests/partial_application/rfc_examples_debug.phpt new file mode 100644 index 000000000000..9c5501090d4e --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_debug.phpt @@ -0,0 +1,25 @@ +--TEST-- +PFA RFC examples: "Debug output" section +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught Exception in %s:%d +Stack trace: +#0 %s(%d): g() +#1 %s(%d): f(1, Object(SensitiveParameterValue), 3) +#2 %s(%d): {closure:pfa:%s}(1, Object(SensitiveParameterValue)) +#3 {main} + thrown in %s on line %d diff --git a/Zend/tests/partial_application/rfc_examples_errors.phpt b/Zend/tests/partial_application/rfc_examples_errors.phpt new file mode 100644 index 000000000000..21818d7446e3 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_errors.phpt @@ -0,0 +1,34 @@ +--TEST-- +PFA RFC examples: "Error examples" section +--FILE-- +getMessage(), "\n"; +} + +try { + stuff(?, ?, ?, ?, ?, ?); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +try { + stuff(?, ?, 3.5, $point, i: 5); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +ArgumentCountError: Partial application of stuff() expects at least 4 arguments, 1 given +ArgumentCountError: Partial application of stuff() expects at most 5 arguments, 6 given +Error: Named parameter $i overwrites previous placeholder diff --git a/Zend/tests/partial_application/rfc_examples_eval_order.phpt b/Zend/tests/partial_application/rfc_examples_eval_order.phpt new file mode 100644 index 000000000000..2fd6c9422e92 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_eval_order.phpt @@ -0,0 +1,30 @@ +--TEST-- +PFA RFC examples: "Evaluation order" section +--FILE-- + speak($who, getArg()); +print "Arnaud\n"; +$arrow('Larry'); + +$partial = speak(?, getArg()); +print "Arnaud\n"; +$partial('Larry'); + +?> +--EXPECT-- +Arnaud +getArg +Larry: hi +getArg +Arnaud +Larry: hi diff --git a/Zend/tests/partial_application/rfc_examples_extra_args.phpt b/Zend/tests/partial_application/rfc_examples_extra_args.phpt new file mode 100644 index 000000000000..f6a24df8cc71 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_extra_args.phpt @@ -0,0 +1,54 @@ +--TEST-- +PFA RFC examples: "Variadics, func_get_args(), and extraneous arguments" section +--FILE-- + [ + foo(1, ?), + static function (int $j) { return foo(1, $j); }, + ], + 'If a PFA call has a ... placeholder, then any extraneous arguments will be passed through to the underlying function' => [ + foo(1, ?, ...), + static function (int $j) { return foo(1, $j, ...array_slice(func_get_args(), 1)); }, + ], + 'If a PFA call has a ... placeholder and the underlying function is variadic, then the trailing arguments will be forwarded directly but will get “collected” by the variadic parameter as normal' => [ + foo2(1, ?, ...), + static function (int $j, ...$extra) { return foo2(1, $j, ...$extra); }, + ], +]; + +check_equivalence($tests); + +echo "# The extra parameter here will be passed to the closure object, which will simply ignore it:\n"; +var_dump(foo(1, ?)(4, 'ignore me')); + +echo "# The extra parameter here will be passed to the closure object, which will forward it directly to the underlying function. It will be accessible only via ''func_get_args()'' et al:\n"; +var_dump(foo(1, ?, ...)(4, 'ignore me')); + +echo "# The extra parameter here will be passed to the closure object, which will forward it directly to the underlying function. It will show up as part of the \$extra array:\n"; +var_dump(foo2(1, ?, ...)(4, 'ignore me')); + +?> +==DONE== +--EXPECT-- +# If a PFA call has no ... placeholder, then any extraneous arguments to the resulting closure will be ignored. That is consistent with how manually writing the equivalent closure would behave, and is the same regardless of whether the underlying function is variadic: Ok +# If a PFA call has a ... placeholder, then any extraneous arguments will be passed through to the underlying function: Ok +# If a PFA call has a ... placeholder and the underlying function is variadic, then the trailing arguments will be forwarded directly but will get “collected” by the variadic parameter as normal: Ok +# The extra parameter here will be passed to the closure object, which will simply ignore it: +int(2) +# The extra parameter here will be passed to the closure object, which will forward it directly to the underlying function. It will be accessible only via ''func_get_args()'' et al: +int(3) +# The extra parameter here will be passed to the closure object, which will forward it directly to the underlying function. It will show up as part of the $extra array: +int(3) +==DONE== diff --git a/Zend/tests/partial_application/rfc_examples_incompatible_functions.phpt b/Zend/tests/partial_application/rfc_examples_incompatible_functions.phpt new file mode 100644 index 000000000000..dd99cb229ae8 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_incompatible_functions.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA RFC examples: "Incompatible functions" section +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECT-- +Error: Cannot call func_get_arg() dynamically diff --git a/Zend/tests/partial_application/rfc_examples_magic_methods.phpt b/Zend/tests/partial_application/rfc_examples_magic_methods.phpt new file mode 100644 index 000000000000..7162a790c57c --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_magic_methods.phpt @@ -0,0 +1,47 @@ +--TEST-- +PFA RFC examples: "Magic methods" section +--FILE-- + [ + $f->method(?, ?), + (function ($f) { + return fn(mixed $arguments0, mixed $arguments1) => $f->method($arguments0, $arguments1); + })($f)->bindTo($f), + ], +]); + +try { + $f->method(?, ?)(a: 1, b: 2); +} catch (Error $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} + +?> +--EXPECT-- +# Test 1: Foo::method +Array +( + [0] => mixed(0) + [1] => mixed(1) +) +Foo::method +Array +( + [0] => mixed(0) + [1] => mixed(1) +) +Ok +Error: Unknown named parameter $a diff --git a/Zend/tests/partial_application/rfc_examples_overview.phpt b/Zend/tests/partial_application/rfc_examples_overview.phpt new file mode 100644 index 000000000000..b6fc8c0586c2 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_overview.phpt @@ -0,0 +1,44 @@ +--TEST-- +PFA RFC examples: "Overview" section +--FILE-- + [ + foo(1, ?, 3, 4), + static fn(int $b): int => foo(1, $b, 3, 4), + ], + 'Test 2' => [ + foo(1, ?, 3, ?), + static fn(int $b, int $d): int => foo(1, $b, 3, $d), + ], + 'Test 3' => [ + foo(1, ...), + static fn(int $b, int $c, int $d): int => foo(1, $b, $c, $d), + ], + 'Test 4' => [ + foo(1, 2, ...), + static fn(int $c, int $d): int => foo(1, 2, $c, $d), + ], + 'Test 5' => [ + foo(1, ?, 3, ...), + static fn(int $b, int $d): int => foo(1, $b, 3, $d), + ], +]; + +check_equivalence($tests); + +?> +--EXPECT-- +# Test 1: Ok +# Test 2: Ok +# Test 3: Ok +# Test 4: Ok +# Test 5: Ok diff --git a/Zend/tests/partial_application/rfc_examples_scoping.phpt b/Zend/tests/partial_application/rfc_examples_scoping.phpt new file mode 100644 index 000000000000..071b4a5a5a39 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_scoping.phpt @@ -0,0 +1,113 @@ +--TEST-- +PFA RFC examples: "Scoping" section +--FILE-- + [ + foo(?, ?), + static fn(int $i, int $j = 0): string => foo($i, $j), + ], + 'Static closure 2' => [ + Foo::bar(?, ?), + static fn(int $i, int $j): string => Foo::bar($i, $j), + ], + 'Static closure 3' => [ + foo(?, ?)(1, ?), + static fn(int $j = 0): string => foo(1, $j), + ], + 'Static closure 4' => [ + foo(...)(?), + static fn(int $i): string => foo($i, 0), + ], +]; + +check_equivalence($tests); + +$c = new C(); +$f = $c->f(?); + +echo "# Cannot unbind \$this:\n"; +var_dump($f->bindTo(null, C::class)); // Warning: Cannot unbind $this of method, this will be an error in PHP 9 (returns null) + +echo "# Cannot rebind scope:\n"; +var_dump($f->bindTo($c, CSubClass::class)); // Warning: Cannot rebind scope of closure created from method, this will be an error in PHP 9 (returns null) + +echo "# Can rebind \$this with subclass:\n"; +var_dump($f->bindTo(new CSubClass, C::class)); // Allowed + +echo "# Cannot rebind \$this with unrelated class:\n"; +$f = $f->bindTo(new Unrelated, C::class); // Warning: Cannot bind method C::{closure:/path/to/test.php:11}() to object of class Unrelated, this will be an error in PHP 9 (returns null) + +echo "# self resolution:\n"; +$c = new CSubClass(); +var_dump($c->f(?)(1)); // string(1) "C" +var_dump($c->g(?)(1)); // string(9) "CSubClass" +var_dump($c->h(1)(1)); // string(1) "C" + +?> +--EXPECTF-- +# Static closure 1: Ok +# Static closure 2: Ok +# Static closure 3: Ok +# Static closure 4: Ok +# Cannot unbind $this: + +Warning: Cannot unbind $this of method, this will be an error in PHP 9 in %s on line %d +NULL +# Cannot rebind scope: + +Warning: Cannot rebind scope of closure created from method, this will be an error in PHP 9 in %s on line %d +NULL +# Can rebind $this with subclass: +object(Closure)#%d (5) { + ["name"]=> + string(%d) "{closure:pfa:%s}" + ["file"]=> + string(%d) "%s" + ["line"]=> + int(53) + ["this"]=> + object(CSubClass)#%d (0) { + } + ["parameter"]=> + array(1) { + ["$a"]=> + string(10) "" + } +} +# Cannot rebind $this with unrelated class: + +Warning: Cannot bind method C::{closure:pfa:%s}() to object of class Unrelated, this will be an error in PHP 9 in %s on line %d +# self resolution: +string(1) "C" +string(9) "CSubClass" +string(1) "C" diff --git a/Zend/tests/partial_application/rfc_examples_semantics.phpt b/Zend/tests/partial_application/rfc_examples_semantics.phpt new file mode 100644 index 000000000000..a3ea25c30d6d --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_semantics.phpt @@ -0,0 +1,30 @@ +--TEST-- +PFA RFC examples: "Placeholder Semantics" section +--FILE-- + [ + foo(?, ?, ?, ?), + static fn(int $a, int $b, string $c0, string $c1) => foo($a, $b, $c0, $c1), + ], + 'Test 2' => [ + stuff(1, ?, p: ?, f: 3.14, ...), + static fn(string $s, Point $p, int $m = 0) => stuff(1, $s, 3.14, $p, $m), + ], +]; + +check_equivalence($tests); + +?> +--EXPECT-- +# Test 1: Ok +# Test 2: Ok diff --git a/Zend/tests/partial_application/rfc_examples_semantics_examples.phpt b/Zend/tests/partial_application/rfc_examples_semantics_examples.phpt new file mode 100644 index 000000000000..9ee52d278689 --- /dev/null +++ b/Zend/tests/partial_application/rfc_examples_semantics_examples.phpt @@ -0,0 +1,217 @@ +--TEST-- +PFA RFC examples: "Placeholder Semantics: Examples" section +--FILE-- + [ + stuff(?, ?, ...), + static fn(int $i1, string $s2, float $f3, Point $p4, int $m5 = 0): array + => stuff($i1, $s2, $f3, $p4, $m5), + ], + 'The degenerate "first class callables" case. (Supported since 8.1)' => [ + stuff(...), + static fn(int $i1, string $s2, float $f3, Point $p4, int $m5 = 0): array + => stuff($i1, $s2, $f3, $p4, $m5), + ], + 'Provide some values, require the rest to be provided later (1)' => [ + stuff(1, 'hi', ?, ?, ?), + static fn(float $f3, Point $p4, int $m5 = 0): array => stuff(1, 'hi', $f3, $p4, $m5), + ], + 'Provide some values, require the rest to be provided later (2)' => [ + stuff(1, 'hi', ...), + static fn(float $f3, Point $p4, int $m5 = 0): array => stuff(1, 'hi', $f3, $p4, $m5), + ], + 'Provide some values, but not just from the left (1)' => [ + stuff(1, ?, 3.5, ?, ?), + static fn(string $s2, Point $p4, int $m5 = 0): array => stuff(1, $s2, 3.5, $p4, $m5), + ], + 'Provide some values, but not just from the left (2)' => [ + stuff(1, ?, 3.5, ...), + static fn(string $s2, Point $p4, int $m5 = 0): array => stuff(1, $s2, 3.5, $p4, $m5), + ], + 'Provide just the last value' => [ + stuff(?, ?, ?, ?, 5), + static fn(int $i1, string $s2, float $f3, Point $p4): array + => stuff($i1, $s2, $f3, $p4, 5), + ], + 'Not accounting for an optional argument means it will always get its default value' => [ + stuff(?, ?, ?, ?), + static fn(int $i1, string $s2, float $f3, Point $p4): array + => stuff($i1, $s2, $f3, $p4), + ], + 'Named arguments can be pulled "out of order", and still work (1)' => [ + stuff(?, ?, f3: 3.5, p4: $point), + static fn(int $i1, string $s2): array => stuff($i1, $s2, 3.5, $point), + ], + 'Named arguments can be pulled "out of order", and still work (2)' => [ + stuff(?, ?, p4: $point, f3: 3.5), + static fn(int $i1, string $s2): array => stuff($i1, $s2, 3.5, $point), + ], + + 'But named placeholders adopt the order listed' => [ + stuff(s2: ?, i1: ?, p4: ?, f3: 3.5), + static fn(string $s2, int $i1, Point $p4): array => stuff($i1, $s2, 3.5, $p4), + ], + 'The ... "everything else" placeholder respects named arguments' => [ + stuff(?, ?, f3: 3.5, p4: $point, ...), + static fn(int $i1, string $s2, int $m5 = 0): array => stuff($i1, $s2, 3.5, $point, $m5), + ], + 'Prefill all parameters, making a "delayed call" or "thunk"' => [ + stuff(1, 'hi', 3.4, $point, 5, ...), + static fn(): array => stuff(1, 'hi', 3.4, $point, 5), + ], + + // Variadics + + 'FCC equivalent. The signature is unchanged' => [ + things(...), + static fn(int $i1, ?float $f3 = null, Point ...$points): array => things(...[$i1, $f3, ...$points]), + ], + 'Provide some values, but allow the variadic to remain variadic' => [ + things(1, 3.14, ...), + static fn(Point ...$points): array => things(1, 3.14, ...$points), + ], + 'In this version, the partial requires precisely four arguments, the last two of which will get received by things() in the variadic parameter. Note too that $f becomes required in this case' => [ + things(?, ?, ?, ?), + static fn(int $i1, ?float $f3, Point $points0, Point $points1): array => things($i1, $f3, $points0, $points1), + ], + + // Esoteric examples + + 'Esoteric 1' => [ + four(...), + static fn(int $a, int $b, int $c, int $d): string => four($a, $b, $c, $d), + ], + 'Esoteric 2' => [ + four(1, 2, ...), + static fn(int $c, int $d): string => four(1, 2, $c, $d), + ], + 'Esoteric 3' => [ + four(1, 2, 3, ?), + static fn(int $d): string => four(1, 2, 3, $d), + ], + 'Esoteric 4' => [ + four(1, ?, ?, 4), + static fn(int $b, int $c): string => four(1, $b, $c, 4), + ], + 'Esoteric 5' => [ + four(1, 2, 3, 4, ...), + static fn(): string => four(1, 2, 3, 4, ...array_slice(func_get_args(), 4)), + ], + 'Esoteric 6' => [ + four(d: 4, a: 1, ...), + static fn(int $b, int $c): string => four(1, $b, $c, 4, ...array_slice(func_get_args(), 4)), + ], + 'Esoteric 7' => [ + four(c: ?, d: 4, b: ?, a: 1), + static fn(int $c, int $b): string => four(1, $b, $c, 4, ...array_slice(func_get_args(), 4)), + ], + + // Other callable styles + + 'This is allowed. Note the method is static, thus the partial closure is static' => [ + E::make(1, ?), + static fn(int $y): E => E::make(1, $y), + ], + 'Note the method is non-static, so the partial closure is non-static' => (function () { + $eMaker = E::make(1, ?); + $e = $eMaker(2); + return [ + $e->foo(?, ?, 3), + (function ($e) { + return fn(int $a, int $b): array => $e->foo($a, $b, 3); + })($e)->bindTo($e), + ]; + })(), + '$c can then be further refined' => (function () { + $eMaker = E::make(1, ?); + $e = $eMaker(2); + $c = $e->foo(?, ?, 3); + return [ + $c(1, ?), + (function ($e) { + return fn(int $b): array => $e->foo(1, $b, 3); + })($e)->bindTo($e), + ]; + })(), + 'RunMe' => (function () { + $r = new RunMe(); + return [ + $r(?, 3), + (function ($r) { + return fn(int $a): string => $r($a, 3); + })($r)->bindTo($r), + ]; + })(), +]; + +check_equivalence($tests); + +?> +--EXPECT-- +# Manually specify the first two values, and pull the rest "as is": Ok +# The degenerate "first class callables" case. (Supported since 8.1): Ok +# Provide some values, require the rest to be provided later (1): Ok +# Provide some values, require the rest to be provided later (2): Ok +# Provide some values, but not just from the left (1): Ok +# Provide some values, but not just from the left (2): Ok +# Provide just the last value: Ok +# Not accounting for an optional argument means it will always get its default value: Ok +# Named arguments can be pulled "out of order", and still work (1): Ok +# Named arguments can be pulled "out of order", and still work (2): Ok +# But named placeholders adopt the order listed: Ok +# The ... "everything else" placeholder respects named arguments: Ok +# Prefill all parameters, making a "delayed call" or "thunk": Ok +# FCC equivalent. The signature is unchanged: Ok +# Provide some values, but allow the variadic to remain variadic: Ok +# In this version, the partial requires precisely four arguments, the last two of which will get received by things() in the variadic parameter. Note too that $f becomes required in this case: Ok +# Esoteric 1: Ok +# Esoteric 2: Ok +# Esoteric 3: Ok +# Esoteric 4: Ok +# Esoteric 5: Ok +# Esoteric 6: Ok +# Esoteric 7: Ok +# This is allowed. Note the method is static, thus the partial closure is static: Ok +# Note the method is non-static, so the partial closure is non-static: Ok +# $c can then be further refined: Ok +# RunMe: Ok diff --git a/Zend/tests/partial_application/static_method_001.phpt b/Zend/tests/partial_application/static_method_001.phpt new file mode 100644 index 000000000000..ce4151441c33 --- /dev/null +++ b/Zend/tests/partial_application/static_method_001.phpt @@ -0,0 +1,18 @@ +--TEST-- +PFA supports static methods +--FILE-- + +--EXPECTF-- +Foo::method diff --git a/Zend/tests/partial_application/static_pfa_001.phpt b/Zend/tests/partial_application/static_pfa_001.phpt new file mode 100644 index 000000000000..bc0f65b1ffd8 --- /dev/null +++ b/Zend/tests/partial_application/static_pfa_001.phpt @@ -0,0 +1,45 @@ +--TEST-- +PFA of static method is static +--FILE-- +f(?); +echo new ReflectionFunction($f), "\n"; +$f(1); + +// Warns +var_dump($f->bindTo(new C)); + +?> +--EXPECTF-- +Closure [ static public method {closure:pfa:%s:9} ] { + @@ %s 9 - 9 + + - Parameters [1] { + Parameter #0 [ $a ] + } +} + +int(1) +Closure [ static public method {closure:pfa:%s:13} ] { + @@ %s 13 - 13 + + - Parameters [1] { + Parameter #0 [ $a ] + } +} + +int(1) + +Warning: Cannot bind an instance to a static closure, this will be an error in PHP 9 in %s on line %d +NULL diff --git a/Zend/tests/partial_application/static_pfa_002.phpt b/Zend/tests/partial_application/static_pfa_002.phpt new file mode 100644 index 000000000000..5222109958b8 --- /dev/null +++ b/Zend/tests/partial_application/static_pfa_002.phpt @@ -0,0 +1,35 @@ +--TEST-- +PFA of instance method is not static +--FILE-- +f(?); +echo new ReflectionFunction($f), "\n"; +$f($c); + +$c2 = new C(); +$f->bindTo($c2)($c2); + +?> +--EXPECTF-- +Closure [ public method {closure:pfa:%s:10} ] { + @@ %s 10 - 10 + + - Parameters [1] { + Parameter #0 [ $a ] + } +} + +object(C)#%d (0) { +} +bool(true) +object(C)#%d (0) { +} +bool(true) diff --git a/Zend/tests/partial_application/static_pfa_003.phpt b/Zend/tests/partial_application/static_pfa_003.phpt new file mode 100644 index 000000000000..e7b3c187e187 --- /dev/null +++ b/Zend/tests/partial_application/static_pfa_003.phpt @@ -0,0 +1,30 @@ +--TEST-- +PFA of standalone function is static +--FILE-- +bindTo(new class {})); + +?> +--EXPECTF-- +Closure [ static function {closure:pfa:%s:7} ] { + @@ %s 7 - 7 + + - Parameters [1] { + Parameter #0 [ $a ] + } +} + +int(1) + +Warning: Cannot bind an instance to a static closure, this will be an error in PHP 9 in %s on line %d +NULL diff --git a/Zend/tests/partial_application/static_pfa_004.phpt b/Zend/tests/partial_application/static_pfa_004.phpt new file mode 100644 index 000000000000..9b842c91c4cd --- /dev/null +++ b/Zend/tests/partial_application/static_pfa_004.phpt @@ -0,0 +1,39 @@ +--TEST-- +PFA of non-static closure is not static +--FILE-- +bindTo($c2)($c2); + +?> +--EXPECTF-- +Closure [ function {closure:pfa:%s:11} ] { + @@ %s 11 - 11 + + - Bound Variables [1] { + Variable #0 [ $fn ] + } + + - Parameters [1] { + Parameter #0 [ $a ] + } +} + +NULL +bool(false) +object(class@anonymous)#3 (0) { +} +bool(true) diff --git a/Zend/tests/partial_application/static_pfa_005.phpt b/Zend/tests/partial_application/static_pfa_005.phpt new file mode 100644 index 000000000000..2783485b2f49 --- /dev/null +++ b/Zend/tests/partial_application/static_pfa_005.phpt @@ -0,0 +1,34 @@ +--TEST-- +PFA of static closure is static +--FILE-- +bindTo(new class {})); + +?> +--EXPECTF-- +Closure [ static function {closure:pfa:%s:7} ] { + @@ %s 7 - 7 + + - Bound Variables [1] { + Variable #0 [ $fn ] + } + + - Parameters [1] { + Parameter #0 [ $a ] + } +} + +int(1) + +Warning: Cannot bind an instance to a static closure, this will be an error in PHP 9 in %s on line %d +NULL diff --git a/Zend/tests/partial_application/static_polymorphism.phpt b/Zend/tests/partial_application/static_polymorphism.phpt new file mode 100644 index 000000000000..5f121c65c0e8 --- /dev/null +++ b/Zend/tests/partial_application/static_polymorphism.phpt @@ -0,0 +1,43 @@ +--TEST-- +PFA: static polymorphism +--FILE-- + +--EXPECT-- +P::m +string(1) "a" +C::m +array(0) { +} +P::m +string(1) "a" +C::m +array(0) { +} diff --git a/Zend/tests/partial_application/static_vars_001.phpt b/Zend/tests/partial_application/static_vars_001.phpt new file mode 100644 index 000000000000..610cddf37b54 --- /dev/null +++ b/Zend/tests/partial_application/static_vars_001.phpt @@ -0,0 +1,21 @@ +--TEST-- +PFA static variables are shared (001) +--FILE-- + +--EXPECT-- +int(1) +int(2) diff --git a/Zend/tests/partial_application/static_vars_002.phpt b/Zend/tests/partial_application/static_vars_002.phpt new file mode 100644 index 000000000000..4e6cc82b720d --- /dev/null +++ b/Zend/tests/partial_application/static_vars_002.phpt @@ -0,0 +1,22 @@ +--TEST-- +PFA static variables are shared (002) +--FILE-- + +--EXPECT-- +int(1) +int(2) diff --git a/Zend/tests/partial_application/static_vars_003.phpt b/Zend/tests/partial_application/static_vars_003.phpt new file mode 100644 index 000000000000..04328bf717b8 --- /dev/null +++ b/Zend/tests/partial_application/static_vars_003.phpt @@ -0,0 +1,25 @@ +--TEST-- +PFA static variables are shared (003) +--FILE-- + +--EXPECT-- +int(1) +int(2) diff --git a/Zend/tests/partial_application/superfluous_args_are_forwarded.phpt b/Zend/tests/partial_application/superfluous_args_are_forwarded.phpt new file mode 100644 index 000000000000..506092655217 --- /dev/null +++ b/Zend/tests/partial_application/superfluous_args_are_forwarded.phpt @@ -0,0 +1,44 @@ +--TEST-- +PFAs forwards superfluous args iff a variadic placeholder is specified +--FILE-- + +--EXPECT-- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +array(1) { + [0]=> + int(1) +} +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} diff --git a/Zend/tests/partial_application/this.phpt b/Zend/tests/partial_application/this.phpt new file mode 100644 index 000000000000..bda6900bae39 --- /dev/null +++ b/Zend/tests/partial_application/this.phpt @@ -0,0 +1,20 @@ +--TEST-- +PFA $this +--FILE-- +method(new stdClass, ...); + +$baz = $bar(new stdClass, ...); + +var_dump($foo === $baz()); +?> +--EXPECT-- +bool(true) diff --git a/Zend/tests/partial_application/variation_call_001.phpt b/Zend/tests/partial_application/variation_call_001.phpt new file mode 100644 index 000000000000..b9c1c19ec9c6 --- /dev/null +++ b/Zend/tests/partial_application/variation_call_001.phpt @@ -0,0 +1,31 @@ +--TEST-- +PFA variation: call +--FILE-- +method(?, new Param); + +$closure(1); + +$closure->call(/* newThis: */ new Foo(), 10); +?> +--EXPECT-- +Bar: 1, Param +Foo: 10, Param diff --git a/Zend/tests/partial_application/variation_closure_001.phpt b/Zend/tests/partial_application/variation_closure_001.phpt new file mode 100644 index 000000000000..1d31f22c7f8a --- /dev/null +++ b/Zend/tests/partial_application/variation_closure_001.phpt @@ -0,0 +1,40 @@ +--TEST-- +PFA variation: Closure +--FILE-- + +--EXPECTF-- +Closure [ function {closure:%s:%d} ] { + @@ %s 5 - 5 + + - Bound Variables [2] { + Variable #0 [ $fn ] + Variable #1 [ $a ] + } + + - Parameters [1] { + Parameter #0 [ $b ] + } +} +Closure [ function {closure:pfa:%s:%d} ] { + @@ %s 10 - 10 + + - Bound Variables [2] { + Variable #0 [ $fn2 ] + Variable #1 [ $a ] + } + + - Parameters [1] { + Parameter #0 [ $fn ] + } +} diff --git a/Zend/tests/partial_application/variation_closure_002.phpt b/Zend/tests/partial_application/variation_closure_002.phpt new file mode 100644 index 000000000000..41abe0aaab0e --- /dev/null +++ b/Zend/tests/partial_application/variation_closure_002.phpt @@ -0,0 +1,28 @@ +--TEST-- +PFA variation: Closure::__invoke() +--FILE-- +__invoke(1, ?); + +echo (string) new ReflectionFunction($function); + +$function(10); +?> +--EXPECTF-- +Closure [ public method {closure:%s:%d} ] { + @@ %svariation_closure_002.php 6 - 6 + + - Bound Variables [1] { + Variable #0 [ $a ] + } + + - Parameters [1] { + Parameter #0 [ $b ] + } +} +int(1) +int(10) diff --git a/Zend/tests/partial_application/variation_closure_003.phpt b/Zend/tests/partial_application/variation_closure_003.phpt new file mode 100644 index 000000000000..da567e179853 --- /dev/null +++ b/Zend/tests/partial_application/variation_closure_003.phpt @@ -0,0 +1,46 @@ +--TEST-- +PFA variation: Closure::__invoke() with $this +--FILE-- +bar(); + +$function = $closure->__invoke(1, ?); + +echo (string) new ReflectionFunction($function); + +var_dump($function(10)); +?> +--EXPECTF-- +Closure [ public method {closure:%s:%d} ] { + @@ %svariation_closure_003.php 14 - 14 + + - Bound Variables [1] { + Variable #0 [ $a ] + } + + - Parameters [1] { + Parameter #0 [ $b ] + } +} +array(2) { + [0]=> + object(Foo)#1 (0) { + } + [1]=> + array(2) { + [0]=> + int(1) + [1]=> + int(10) + } +} diff --git a/Zend/tests/partial_application/variation_debug_001.phpt b/Zend/tests/partial_application/variation_debug_001.phpt new file mode 100644 index 000000000000..d2f6458634e9 --- /dev/null +++ b/Zend/tests/partial_application/variation_debug_001.phpt @@ -0,0 +1,40 @@ +--TEST-- +PFA variation: var_dump(), user function +--FILE-- + +--EXPECTF-- +object(Closure)#%d (5) { + ["name"]=> + string(%d) "{closure:%s}" + ["file"]=> + string(%d) "%svariation_debug_001.php" + ["line"]=> + int(6) + ["static"]=> + array(4) { + ["b"]=> + object(stdClass)#%d (0) { + } + ["c"]=> + int(20) + ["c0"]=> + object(stdClass)#%d (0) { + } + ["extra_named_params"]=> + array(1) { + ["four"]=> + int(4) + } + } + ["parameter"]=> + array(1) { + ["$a"]=> + string(10) "" + } +} diff --git a/Zend/tests/partial_application/variation_debug_002.phpt b/Zend/tests/partial_application/variation_debug_002.phpt new file mode 100644 index 000000000000..9a1121ed7918 --- /dev/null +++ b/Zend/tests/partial_application/variation_debug_002.phpt @@ -0,0 +1,49 @@ +--TEST-- +PFA variation: var_dump(), internal function +--FILE-- + +--EXPECTF-- +object(Closure)#%d (5) { + ["name"]=> + string(%d) "{closure:%s}" + ["file"]=> + string(%d) "%svariation_debug_002.php" + ["line"]=> + int(2) + ["static"]=> + array(3) { + ["array"]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + ["arrays0"]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } + ["extra_named_params"]=> + array(1) { + ["four"]=> + object(stdClass)#%d (0) { + } + } + } + ["parameter"]=> + array(2) { + ["$callback"]=> + string(10) "" + ["$arrays"]=> + string(10) "" + } +} diff --git a/Zend/tests/partial_application/variation_ex_001.phpt b/Zend/tests/partial_application/variation_ex_001.phpt new file mode 100644 index 000000000000..0f36e90f616d --- /dev/null +++ b/Zend/tests/partial_application/variation_ex_001.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA variation: UAF in cleanup unfinished calls +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECTF-- +ArgumentCountError: Partial application of {closure:%s:%d}() expects at most 0 arguments, 1 given diff --git a/Zend/tests/partial_application/variation_gc_001.phpt b/Zend/tests/partial_application/variation_gc_001.phpt new file mode 100644 index 000000000000..2db49cc74363 --- /dev/null +++ b/Zend/tests/partial_application/variation_gc_001.phpt @@ -0,0 +1,19 @@ +--TEST-- +PFA variation: GC (001) +--FILE-- +method = self::__construct(new stdClass, ...); + } +} + +$foo = new Foo(new stdClass); +$foo->bar = $foo; + +echo "OK"; +?> +--EXPECT-- +OK diff --git a/Zend/tests/partial_application/variation_gc_002.phpt b/Zend/tests/partial_application/variation_gc_002.phpt new file mode 100644 index 000000000000..31c721e8e681 --- /dev/null +++ b/Zend/tests/partial_application/variation_gc_002.phpt @@ -0,0 +1,11 @@ +--TEST-- +PFA variation: GC (002) +--FILE-- +prop = var_dump($obj, ?); + +echo "OK"; +?> +--EXPECT-- +OK diff --git a/Zend/tests/partial_application/variation_gc_003.phpt b/Zend/tests/partial_application/variation_gc_003.phpt new file mode 100644 index 000000000000..23cdaa1c666f --- /dev/null +++ b/Zend/tests/partial_application/variation_gc_003.phpt @@ -0,0 +1,15 @@ +--TEST-- +PFA variation: GC (003) +--FILE-- +prop = test(?, x: $obj); + +echo "OK"; +?> +--EXPECT-- +OK diff --git a/Zend/tests/partial_application/variation_invoke_001.phpt b/Zend/tests/partial_application/variation_invoke_001.phpt new file mode 100644 index 000000000000..9285c08da19b --- /dev/null +++ b/Zend/tests/partial_application/variation_invoke_001.phpt @@ -0,0 +1,21 @@ +--TEST-- +PFA variation: __invoke() +--FILE-- +__invoke(32)); + +try { + $foo->nothing(); +} catch (Error $ex) { + echo $ex::class, ": ", $ex->getMessage(), "\n"; +} +?> +--EXPECT-- +int(42) +Error: Call to undefined method Closure::nothing() diff --git a/Zend/tests/partial_application/variation_nocall_001.phpt b/Zend/tests/partial_application/variation_nocall_001.phpt new file mode 100644 index 000000000000..3fbb3ec8d8c3 --- /dev/null +++ b/Zend/tests/partial_application/variation_nocall_001.phpt @@ -0,0 +1,12 @@ +--TEST-- +PFA variation: no call args leak +--FILE-- + +--EXPECT-- +OK diff --git a/Zend/tests/partial_application/variation_nocall_002.phpt b/Zend/tests/partial_application/variation_nocall_002.phpt new file mode 100644 index 000000000000..cd4823f1bd05 --- /dev/null +++ b/Zend/tests/partial_application/variation_nocall_002.phpt @@ -0,0 +1,30 @@ +--TEST-- +PFA variation: no call, order of destruction +--FILE-- +id, "\n"; + } +} +$foo = new Foo; +$f = $foo->method(?); +$g = $f(?); + +$map = new WeakMap(); +$map[$f] = new Dtor(1); +$map[$g] = new Dtor(2); + +unset($f); +unset($g); + +echo "OK"; +?> +--EXPECT-- +Dtor::__destruct 2 +Dtor::__destruct 1 +OK diff --git a/Zend/tests/partial_application/variation_parent_001.phpt b/Zend/tests/partial_application/variation_parent_001.phpt new file mode 100644 index 000000000000..98095f45009a --- /dev/null +++ b/Zend/tests/partial_application/variation_parent_001.phpt @@ -0,0 +1,76 @@ +--TEST-- +PFA variation: parent +--FILE-- +method(10, ...); +$baz = $bar(20, ...); + +var_dump($baz, $c = $baz(), $c() === $foo); +?> +--EXPECTF-- +object(Closure)#%d (6) { + ["name"]=> + string(%d) "{closure:%s}" + ["file"]=> + string(%d) "%svariation_parent_001.php" + ["line"]=> + int(12) + ["static"]=> + array(2) { + ["fn"]=> + object(Closure)#%d (6) { + ["name"]=> + string(%d) "{closure:%s:%d}" + ["file"]=> + string(%d) "%s" + ["line"]=> + int(11) + ["static"]=> + array(1) { + ["a"]=> + int(10) + } + ["this"]=> + object(Foo)#%d (0) { + } + ["parameter"]=> + array(2) { + ["$b"]=> + string(10) "" + ["$c"]=> + string(10) "" + } + } + ["b"]=> + int(20) + } + ["this"]=> + object(Foo)#%d (0) { + } + ["parameter"]=> + array(1) { + ["$c"]=> + string(10) "" + } +} +object(Closure)#%d (4) { + ["name"]=> + string(25) "{closure:Foo::method():4}" + ["file"]=> + string(%d) "%s" + ["line"]=> + int(4) + ["this"]=> + object(Foo)#%d (0) { + } +} +bool(true) diff --git a/Zend/tests/partial_application/variation_scope_001.phpt b/Zend/tests/partial_application/variation_scope_001.phpt new file mode 100644 index 000000000000..0dcea0921c43 --- /dev/null +++ b/Zend/tests/partial_application/variation_scope_001.phpt @@ -0,0 +1,18 @@ +--TEST-- +PFA variation: called scope +--FILE-- +method(new stdClass, ...); + +$bar(); +?> +--EXPECT-- +Foo::method diff --git a/Zend/tests/partial_application/variation_strict_001.phpt b/Zend/tests/partial_application/variation_strict_001.phpt new file mode 100644 index 000000000000..835f6e138055 --- /dev/null +++ b/Zend/tests/partial_application/variation_strict_001.phpt @@ -0,0 +1,20 @@ +--TEST-- +PFA variation: strict_types declared +--FILE-- +getMessage()); +} +?> +--EXPECTF-- +TypeError: {closure:%s:%d}(): Argument #1 ($int) must be of type int, string given, called in %s on line %d diff --git a/Zend/tests/partial_application/variation_variadics_001.phpt b/Zend/tests/partial_application/variation_variadics_001.phpt new file mode 100644 index 000000000000..4710ca4d3b99 --- /dev/null +++ b/Zend/tests/partial_application/variation_variadics_001.phpt @@ -0,0 +1,31 @@ +--TEST-- +PFA variation: variadics, user function +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %s 6 - 6 + + - Bound Variables [2] { + Variable #0 [ $a ] + Variable #1 [ $b0 ] + } + + - Parameters [1] { + Parameter #0 [ ...$b ] + } +} +int(10) +int(100) +int(1000) +int(10000) diff --git a/Zend/tests/partial_application/variation_variadics_002.phpt b/Zend/tests/partial_application/variation_variadics_002.phpt new file mode 100644 index 000000000000..4269dd0e66f0 --- /dev/null +++ b/Zend/tests/partial_application/variation_variadics_002.phpt @@ -0,0 +1,25 @@ +--TEST-- +PFA variation: variadics, internal function +--FILE-- + +--EXPECTF-- +Closure [ static function {closure:%s:%d} ] { + @@ %svariation_variadics_002.php 2 - 2 + + - Bound Variables [2] { + Variable #0 [ $format ] + Variable #1 [ $values0 ] + } + + - Parameters [1] { + Parameter #0 [ mixed ...$values ] + } + - Return [ string ] +} +100 1000 10000 diff --git a/Zend/tests/partial_application/variation_variadics_004.phpt b/Zend/tests/partial_application/variation_variadics_004.phpt new file mode 100644 index 000000000000..228404dc8272 --- /dev/null +++ b/Zend/tests/partial_application/variation_variadics_004.phpt @@ -0,0 +1,45 @@ +--TEST-- +PFA variation: variadics and optional args +--FILE-- + +--EXPECT-- +# Bound year, pass day: +2006-01-02 +# Bound month, pass day: +2005-12-02 +# Bound month, bound year, pass day: +2016-12-02 +# Bound month, no args: +2005-12-01 +# Bound month, bound year, no args: +2016-12-01 diff --git a/Zend/tests/partial_application/variation_variadics_006.phpt b/Zend/tests/partial_application/variation_variadics_006.phpt new file mode 100644 index 000000000000..cda62a2f3bfb --- /dev/null +++ b/Zend/tests/partial_application/variation_variadics_006.phpt @@ -0,0 +1,17 @@ +--TEST-- +PFA variation: named may overwrite variadic placeholder +--FILE-- + +--EXPECTF-- +array(1) { + [0]=> + string(1) "a" +} diff --git a/Zend/tests/partial_application/variation_variadics_007.phpt b/Zend/tests/partial_application/variation_variadics_007.phpt new file mode 100644 index 000000000000..9624e05b449b --- /dev/null +++ b/Zend/tests/partial_application/variation_variadics_007.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA variation: extra through variadic +--FILE-- + $a + $b)); +?> +--EXPECT-- +int(3) diff --git a/Zend/tests/partial_application/variation_variadics_008.phpt b/Zend/tests/partial_application/variation_variadics_008.phpt new file mode 100644 index 000000000000..4190bb759e68 --- /dev/null +++ b/Zend/tests/partial_application/variation_variadics_008.phpt @@ -0,0 +1,16 @@ +--TEST-- +PFA variation: variadics wrong signature checked +--FILE-- +getMessage() . PHP_EOL; +} +?> +--EXPECTF-- +Partial application of {closure:%s:%d}() expects at most 1 arguments, 2 given diff --git a/Zend/zend.c b/Zend/zend.c index 2a5988273bcd..f4236053af3d 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -78,7 +77,7 @@ ZEND_API bool zend_dtrace_enabled; /* version information */ static char *zend_version_info; static uint32_t zend_version_info_length; -#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) Zend Technologies\n" +#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright © Zend by Perforce\n" #define PRINT_ZVAL_INDENT 4 /* true multithread-shared globals */ diff --git a/Zend/zend.h b/Zend/zend.h index ebb7d2391955..0d5303192b57 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -281,7 +280,9 @@ typedef size_t (*zend_write_func_t)(const char *str, size_t str_length); EG(bailout) = &__bailout; \ if (SETJMP(__bailout)==0) { #define zend_catch \ + ZEND_ASSERT(EG(bailout) == &__bailout); \ } else { \ + ZEND_ASSERT(EG(bailout) == &__bailout); \ EG(bailout) = __orig_bailout; #define zend_end_try() \ } \ diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 211a5d14e6c3..2643f9e61367 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -126,7 +125,7 @@ ZEND_API const char *zend_get_type_by_const(int type) /* {{{ */ return "mixed"; case _IS_NUMBER: return "int|float"; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -262,7 +261,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_parameter_error(int error_code, case ZPP_ERROR_FAILURE: ZEND_ASSERT(EG(exception) && "Should have produced an error already"); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -375,7 +374,9 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_unexpected_extra_named_error(void) ); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_entry *error_ce, uint32_t arg_num, const char *format, va_list va) /* {{{ */ +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic_ex( + const zend_function *function, uint32_t arg_num, + zend_class_entry *error_ce, const char *format, va_list va) { zend_string *func_name; const char *arg_name; @@ -384,8 +385,8 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_en return; } - func_name = get_active_function_or_method_name(); - arg_name = get_active_function_arg_name(arg_num); + func_name = get_function_or_method_name(function); + arg_name = get_function_arg_name(function, arg_num); zend_vspprintf(&message, 0, format, va); zend_throw_error(error_ce, "%s(): Argument #%d%s%s%s %s", @@ -395,8 +396,27 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_en efree(message); zend_string_release(func_name); } + +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_entry *error_ce, uint32_t arg_num, const char *format, va_list va) /* {{{ */ +{ + ZEND_ASSERT(zend_is_executing()); + + const zend_function *function = zend_active_function(); + + zend_argument_error_variadic_ex(function, arg_num, error_ce, format, va); +} /* }}} */ +ZEND_API ZEND_COLD void zend_argument_error_ex(const zend_function *function, + uint32_t arg_num, zend_class_entry *error_ce, const char *format, ...) +{ + va_list va; + + va_start(va, format); + zend_argument_error_variadic_ex(function, arg_num, error_ce, format, va); + va_end(va); +} + ZEND_API ZEND_COLD void zend_argument_error(zend_class_entry *error_ce, uint32_t arg_num, const char *format, ...) /* {{{ */ { va_list va; @@ -407,6 +427,18 @@ ZEND_API ZEND_COLD void zend_argument_error(zend_class_entry *error_ce, uint32_t } /* }}} */ +ZEND_API ZEND_COLD void zend_argument_type_error_ex( + const zend_function *function, uint32_t arg_num, + const char *format, ...) +{ + va_list va; + + va_start(va, format); + zend_argument_error_variadic_ex(function, arg_num, + zend_ce_type_error, format, va); + va_end(va); +} + ZEND_API ZEND_COLD void zend_argument_type_error(uint32_t arg_num, const char *format, ...) /* {{{ */ { va_list va; @@ -2997,6 +3029,7 @@ ZEND_API void zend_convert_internal_arg_info(zend_arg_info *new_arg_info, const new_arg_info->name = NULL; new_arg_info->default_value = NULL; } + new_arg_info->doc_comment = NULL; new_arg_info->type = arg_info->type; zend_convert_internal_arg_info_type(&new_arg_info->type, persistent); } @@ -3045,7 +3078,6 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend internal_function->prop_info = NULL; internal_function->attributes = NULL; internal_function->frameless_function_infos = ptr->frameless_function_infos; - internal_function->fn_flags2 = 0; if (EG(active)) { // at run-time: this ought to only happen if registered with dl() or somehow temporarily at runtime ZEND_MAP_PTR_INIT(internal_function->run_time_cache, zend_arena_calloc(&CG(arena), 1, zend_internal_run_time_cache_reserved_size())); } else { @@ -3055,7 +3087,7 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend ZEND_MAP_PTR_INIT(internal_function->run_time_cache, NULL); #endif } - if (ptr->flags) { + if (ptr->flags & UINT32_MAX) { if (!(ptr->flags & ZEND_ACC_PPP_MASK)) { if (ptr->flags != ZEND_ACC_DEPRECATED && scope) { zend_error(error_type, "Invalid access level for %s::%s() - access must be exactly one of public, protected or private", ZSTR_VAL(scope->name), ptr->fname); @@ -3067,6 +3099,7 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend } else { internal_function->fn_flags = ZEND_ACC_PUBLIC; } + internal_function->fn_flags2 = ptr->flags >> 32; if (ptr->arg_info) { zend_internal_function_info *info = (zend_internal_function_info*)ptr->arg_info; @@ -3769,6 +3802,10 @@ static bool zend_is_callable_check_class(zend_string *name, zend_class_entry *sc if (error) zend_spprintf(error, 0, "class \"%.*s\" not found", (int)name_len, ZSTR_VAL(name)); } ZSTR_ALLOCA_FREE(lcname, use_heap); + /* User error handlers may throw from deprecations above; do not report callable as valid. */ + if (UNEXPECTED(EG(exception))) { + return false; + } return ret; } /* }}} */ @@ -4030,7 +4067,7 @@ static zend_always_inline bool zend_is_callable_check_func(const zval *callable, } /* }}} */ -ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, const zend_object *object) /* {{{ */ +ZEND_API zend_string *zend_get_callable_name_ex(const zval *callable, const zend_object *object) /* {{{ */ { try_again: switch (Z_TYPE_P(callable)) { @@ -4088,7 +4125,7 @@ ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, const zend_objec } /* }}} */ -ZEND_API zend_string *zend_get_callable_name(zval *callable) /* {{{ */ +ZEND_API zend_string *zend_get_callable_name(const zval *callable) /* {{{ */ { return zend_get_callable_name_ex(callable, NULL); } @@ -4205,7 +4242,7 @@ ZEND_API bool zend_is_callable_at_frame( } /* }}} */ -ZEND_API bool zend_is_callable_ex(zval *callable, zend_object *object, uint32_t check_flags, zend_string **callable_name, zend_fcall_info_cache *fcc, char **error) /* {{{ */ +ZEND_API bool zend_is_callable_ex(const zval *callable, zend_object *object, uint32_t check_flags, zend_string **callable_name, zend_fcall_info_cache *fcc, char **error) /* {{{ */ { /* Determine callability at the first parent user frame. */ const zend_execute_data *frame = EG(current_execute_data); @@ -4220,13 +4257,13 @@ ZEND_API bool zend_is_callable_ex(zval *callable, zend_object *object, uint32_t return ret; } -ZEND_API bool zend_is_callable(zval *callable, uint32_t check_flags, zend_string **callable_name) /* {{{ */ +ZEND_API bool zend_is_callable(const zval *callable, uint32_t check_flags, zend_string **callable_name) /* {{{ */ { return zend_is_callable_ex(callable, NULL, check_flags, callable_name, NULL, NULL); } /* }}} */ -ZEND_API zend_result zend_fcall_info_init(zval *callable, uint32_t check_flags, zend_fcall_info *fci, zend_fcall_info_cache *fcc, zend_string **callable_name, char **error) /* {{{ */ +ZEND_API zend_result zend_fcall_info_init(const zval *callable, uint32_t check_flags, zend_fcall_info *fci, zend_fcall_info_cache *fcc, zend_string **callable_name, char **error) /* {{{ */ { if (!zend_is_callable_ex(callable, NULL, check_flags, callable_name, fcc, error)) { return FAILURE; diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 60acbd63044d..8de5ef771c0a 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -37,7 +36,7 @@ typedef struct _zend_function_entry { zif_handler handler; const struct _zend_internal_arg_info *arg_info; uint32_t num_args; - uint32_t flags; + uint64_t flags; const zend_frameless_function_info *frameless_function_infos; const char *doc_comment; } zend_function_entry; @@ -75,6 +74,8 @@ typedef struct _zend_fcall_info_cache { #define ZEND_FUNCTION(name) ZEND_NAMED_FUNCTION(zif_##name) #define ZEND_METHOD(classname, name) ZEND_NAMED_FUNCTION(zim_##classname##_##name) +#define ZEND_FENTRY_FLAGS(flags, flags2) (((uint64_t)flags) | ((uint64_t)flags2 << 32)) + #define ZEND_FENTRY(zend_name, name, arg_info, flags) { #zend_name, name, arg_info, (uint32_t) (sizeof(arg_info)/sizeof(struct _zend_internal_arg_info)-1), flags, NULL, NULL }, #define ZEND_RAW_FENTRY(zend_name, name, arg_info, flags, frameless_function_infos, doc_comment) { zend_name, name, arg_info, (uint32_t) (sizeof(arg_info)/sizeof(struct _zend_internal_arg_info)-1), flags, frameless_function_infos, doc_comment }, @@ -410,13 +411,13 @@ ZEND_API ZEND_COLD void zend_wrong_property_read(const zval *object, zval *prope #define IS_CALLABLE_SUPPRESS_DEPRECATIONS (1<<1) ZEND_API void zend_release_fcall_info_cache(zend_fcall_info_cache *fcc); -ZEND_API zend_string *zend_get_callable_name_ex(zval *callable, const zend_object *object); -ZEND_API zend_string *zend_get_callable_name(zval *callable); +ZEND_API zend_string *zend_get_callable_name_ex(const zval *callable, const zend_object *object); +ZEND_API zend_string *zend_get_callable_name(const zval *callable); ZEND_API bool zend_is_callable_at_frame( const zval *callable, zend_object *object, const zend_execute_data *frame, uint32_t check_flags, zend_fcall_info_cache *fcc, char **error); -ZEND_API bool zend_is_callable_ex(zval *callable, zend_object *object, uint32_t check_flags, zend_string **callable_name, zend_fcall_info_cache *fcc, char **error); -ZEND_API bool zend_is_callable(zval *callable, uint32_t check_flags, zend_string **callable_name); +ZEND_API bool zend_is_callable_ex(const zval *callable, zend_object *object, uint32_t check_flags, zend_string **callable_name, zend_fcall_info_cache *fcc, char **error); +ZEND_API bool zend_is_callable(const zval *callable, uint32_t check_flags, zend_string **callable_name); ZEND_API const char *zend_get_module_version(const char *module_name); ZEND_API zend_result zend_get_module_started(const char *module_name); @@ -701,7 +702,7 @@ ZEND_API zend_result _call_user_function_impl(zval *object, zval *function_name, * fci->params = NULL; * The callable_name argument may be NULL. */ -ZEND_API zend_result zend_fcall_info_init(zval *callable, uint32_t check_flags, zend_fcall_info *fci, zend_fcall_info_cache *fcc, zend_string **callable_name, char **error); +ZEND_API zend_result zend_fcall_info_init(const zval *callable, uint32_t check_flags, zend_fcall_info *fci, zend_fcall_info_cache *fcc, zend_string **callable_name, char **error); /** Clear arguments connected with zend_fcall_info *fci * If free_mem is not zero then the params array gets free'd as well @@ -895,6 +896,8 @@ static zend_always_inline zend_result zend_forbid_dynamic_call(void) const zend_execute_data *ex = EG(current_execute_data); ZEND_ASSERT(ex != NULL && ex->func != NULL); + ZEND_ASSERT(ex->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS); + if (ZEND_CALL_INFO(ex) & ZEND_CALL_DYNAMIC) { zend_string *function_or_method_name = get_active_function_or_method_name(); zend_throw_error(NULL, "Cannot call %.*s() dynamically", @@ -1560,8 +1563,16 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_callback_error(uint32_t num, ch ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_callback_or_null_error(uint32_t num, char *error); ZEND_API ZEND_COLD void ZEND_FASTCALL zend_unexpected_extra_named_error(void); ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_entry *error_ce, uint32_t arg_num, const char *format, va_list va); +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic_ex( + const zend_function *function, uint32_t arg_num, + zend_class_entry *error_ce, const char *format, va_list va); ZEND_API ZEND_COLD void zend_argument_error(zend_class_entry *error_ce, uint32_t arg_num, const char *format, ...); +ZEND_API ZEND_COLD void zend_argument_error_ex(const zend_function *function, + uint32_t arg_num, zend_class_entry *error_ce, const char *format, ...); ZEND_API ZEND_COLD void zend_argument_type_error(uint32_t arg_num, const char *format, ...); +ZEND_API ZEND_COLD void zend_argument_type_error_ex( + const zend_function *function, uint32_t arg_num, + const char *format, ...); ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *format, ...); ZEND_API ZEND_COLD void zend_argument_must_not_be_empty_error(uint32_t arg_num); ZEND_API ZEND_COLD void zend_class_redeclaration_error(int type, const zend_class_entry *old_ce); @@ -2482,7 +2493,7 @@ static zend_always_inline bool zend_parse_arg_resource(zval *arg, zval **dest, b return 1; } -static zend_always_inline bool zend_parse_arg_func(zval *arg, zend_fcall_info *dest_fci, zend_fcall_info_cache *dest_fcc, bool check_null, char **error, bool free_trampoline) +static zend_always_inline bool zend_parse_arg_func(const zval *arg, zend_fcall_info *dest_fci, zend_fcall_info_cache *dest_fcc, bool check_null, char **error, bool free_trampoline) { if (check_null && UNEXPECTED(Z_TYPE_P(arg) == IS_NULL)) { dest_fci->size = 0; diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index bca2190976c7..942a8b8e1309 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index 264e13848d1b..ff51c4fe8652 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_alloc_sizes.h b/Zend/zend_alloc_sizes.h index 502b982a5052..f806056ad9d3 100644 --- a/Zend/zend_alloc_sizes.h +++ b/Zend/zend_alloc_sizes.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_arena.h b/Zend/zend_arena.h index 37cda28f29db..9b917a47e927 100644 --- a/Zend/zend_arena.h +++ b/Zend/zend_arena.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index e6270262e452..5b1ff675e1c0 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bob Weinand | | Dmitry Stogov | @@ -814,7 +813,7 @@ static zend_result ZEND_FASTCALL zend_ast_evaluate_inner( case IS_OBJECT: zend_cast_zval_to_object(result, &op1, IS_VAR); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } zval_ptr_dtor_nogc(&op1); if (UNEXPECTED(EG(exception))) { @@ -1240,7 +1239,7 @@ static zend_result ZEND_FASTCALL zend_ast_evaluate_inner( break; } - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } zend_create_fake_closure(result, fptr, fptr->common.scope, called_scope, NULL); @@ -1460,6 +1459,16 @@ ZEND_API zend_ast_ref * ZEND_FASTCALL zend_ast_copy(zend_ast *ast) return ref; } +ZEND_API zend_ast * ZEND_FASTCALL zend_ast_dup(zend_ast *ast) +{ + ZEND_ASSERT(ast != NULL); + + zend_ast *buf = zend_ast_alloc(zend_ast_tree_size(ast)); + zend_ast_tree_copy(ast, buf); + + return buf; +} + ZEND_API void ZEND_FASTCALL zend_ast_destroy(zend_ast *ast) { tail_call: @@ -1961,7 +1970,7 @@ static ZEND_COLD void zend_ast_export_zval(smart_str *str, const zval *zv, int p case IS_CONSTANT_AST: zend_ast_export_ex(str, Z_ASTVAL_P(zv), priority, indent); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -2396,7 +2405,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case T_PROPERTY_C: APPEND_STR("__PROPERTY__"); case T_NS_C: APPEND_STR("__NAMESPACE__"); case T_CLASS_C: APPEND_STR("__CLASS__"); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_TYPE: @@ -2405,7 +2414,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case IS_CALLABLE: APPEND_STR("callable"); case IS_STATIC: APPEND_STR("static"); case IS_MIXED: APPEND_STR("mixed"); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_PLACEHOLDER_ARG: @@ -2439,7 +2448,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case IS_STRING: PREFIX_OP("(string)", 240, 241); case IS_ARRAY: PREFIX_OP("(array)", 240, 241); case IS_OBJECT: PREFIX_OP("(object)", 240, 241); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_CAST_VOID: @@ -2473,14 +2482,14 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case ZEND_REQUIRE_ONCE: FUNC_OP("require_once"); case ZEND_REQUIRE: FUNC_OP("require"); case ZEND_EVAL: FUNC_OP("eval"); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_UNARY_OP: switch (ast->attr) { case ZEND_BW_NOT: PREFIX_OP("~", 240, 241); case ZEND_BOOL_NOT: PREFIX_OP("!", 240, 241); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_PRE_INC: @@ -2555,12 +2564,6 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio smart_str_appendc(str, ')'); break; } - case ZEND_AST_PARENT_PROPERTY_HOOK_CALL: - smart_str_append(str, Z_STR_P(zend_ast_get_zval(ast->child[0]))); - smart_str_appendc(str, '('); - zend_ast_export_ex(str, ast->child[1], 0, indent); - smart_str_appendc(str, ')'); - break; case ZEND_AST_CALLABLE_CONVERT: { zend_ast_fcc *fcc_ast = (zend_ast_fcc*)ast; ast = fcc_ast->args; @@ -2581,7 +2584,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case ZEND_FETCH_CLASS_PARENT: smart_str_append(str, ZSTR_KNOWN(ZEND_STR_PARENT)); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } else { zend_ast_export_ns_name(str, ast->child[0], 0, indent); @@ -2604,7 +2607,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case ZEND_BW_AND: BINARY_OP(" &= ", 90, 91, 90); case ZEND_BW_XOR: BINARY_OP(" ^= ", 90, 91, 90); case ZEND_POW: BINARY_OP(" **= ", 90, 91, 90); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_ASSIGN_COALESCE: BINARY_OP(" \?\?= ", 90, 91, 90); @@ -2630,7 +2633,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio case ZEND_POW: BINARY_OP(" ** ", 250, 251, 250); case ZEND_BOOL_XOR: BINARY_OP(" xor ", 40, 40, 41); case ZEND_SPACESHIP: BINARY_OP(" <=> ", 180, 181, 181); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; case ZEND_AST_GREATER: BINARY_OP(" > ", 180, 181, 181); @@ -2809,7 +2812,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio smart_str_appends(str, " insteadof "); zend_ast_export_ex(str, ast->child[1], 0, indent); break; - case ZEND_AST_METHOD_REFERENCE: + case ZEND_AST_TRAIT_METHOD_REFERENCE: if (ast->child[0]) { zend_ast_export_name(str, ast->child[0], 0, indent); smart_str_appends(str, "::"); @@ -2982,7 +2985,7 @@ static ZEND_COLD void zend_ast_export_ex(smart_str *str, zend_ast *ast, int prio zend_ast_export_indent(str, indent); smart_str_appendc(str, '}'); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return; @@ -3079,7 +3082,7 @@ zend_ast * ZEND_FASTCALL zend_ast_with_attributes(zend_ast *ast, zend_ast *attr) * zend_compile_const_decl() checks the kind of the list elements. */ ast = zend_ast_list_add(ast, attr); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return ast; diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h index a88efefd85b2..c029d7615e47 100644 --- a/Zend/zend_ast.h +++ b/Zend/zend_ast.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bob Weinand | | Dmitry Stogov | @@ -144,7 +143,7 @@ enum _zend_ast_kind { ZEND_AST_DECLARE, ZEND_AST_USE_TRAIT, ZEND_AST_TRAIT_PRECEDENCE, - ZEND_AST_METHOD_REFERENCE, + ZEND_AST_TRAIT_METHOD_REFERENCE, ZEND_AST_NAMESPACE, ZEND_AST_USE_ELEM, ZEND_AST_TRAIT_ALIAS, @@ -153,7 +152,6 @@ enum _zend_ast_kind { ZEND_AST_MATCH, ZEND_AST_MATCH_ARM, ZEND_AST_NAMED_ARG, - ZEND_AST_PARENT_PROPERTY_HOOK_CALL, ZEND_AST_PIPE, /* 3 child nodes */ @@ -352,7 +350,10 @@ ZEND_API zend_result ZEND_FASTCALL zend_ast_evaluate(zval *result, zend_ast *ast ZEND_API zend_result ZEND_FASTCALL zend_ast_evaluate_ex(zval *result, zend_ast *ast, zend_class_entry *scope, bool *short_circuited_ptr, zend_ast_evaluate_ctx *ctx); ZEND_API zend_string *zend_ast_export(const char *prefix, zend_ast *ast, const char *suffix); +/* Copies 'ast' to the heap, returns a refcounted AST reference */ ZEND_API zend_ast_ref * ZEND_FASTCALL zend_ast_copy(zend_ast *ast); +/* Duplicates 'ast' on the arena */ +ZEND_API zend_ast * ZEND_FASTCALL zend_ast_dup(zend_ast *ast); ZEND_API void ZEND_FASTCALL zend_ast_destroy(zend_ast *ast); ZEND_API void ZEND_FASTCALL zend_ast_ref_destroy(zend_ast_ref *ast); diff --git a/Zend/zend_atomic.c b/Zend/zend_atomic.c index 5f6a7793beea..98a39c583437 100644 --- a/Zend/zend_atomic.c +++ b/Zend/zend_atomic.c @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Levi Morrison | +----------------------------------------------------------------------+ @@ -57,7 +57,7 @@ ZEND_API void zend_atomic_int_store(zend_atomic_int *obj, int desired) { zend_atomic_int_store_ex(obj, desired); } -#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS) +#if (defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS)) && !defined(HAVE_C11_ATOMICS) /* On these platforms it is non-const due to underlying APIs. */ ZEND_API bool zend_atomic_bool_load(zend_atomic_bool *obj) { return zend_atomic_bool_load_ex(obj); diff --git a/Zend/zend_atomic.h b/Zend/zend_atomic.h index 56422a721fdb..31558996c3c3 100644 --- a/Zend/zend_atomic.h +++ b/Zend/zend_atomic.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Levi Morrison | +----------------------------------------------------------------------+ @@ -39,7 +39,7 @@ * and alignment purposes. */ -#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS) +#if (defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS)) && !defined(HAVE_C11_ATOMICS) typedef struct zend_atomic_bool_s { volatile char value; } zend_atomic_bool; @@ -68,7 +68,7 @@ typedef struct zend_atomic_int_s { BEGIN_EXTERN_C() -#ifdef ZEND_WIN32 +#if defined(ZEND_WIN32) && !defined(HAVE_C11_ATOMICS) #ifndef InterlockedExchange8 #define InterlockedExchange8 _InterlockedExchange8 @@ -123,7 +123,7 @@ static zend_always_inline bool zend_atomic_int_compare_exchange_ex(zend_atomic_i } } -/* On this platform it is non-const due to Iterlocked API*/ +/* On this platform it is non-const due to Interlocked API */ static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) { /* Or'ing with false won't change the value. */ return InterlockedOr8(&obj->value, false); @@ -376,7 +376,7 @@ ZEND_API bool zend_atomic_int_compare_exchange(zend_atomic_int *obj, int *expect ZEND_API void zend_atomic_bool_store(zend_atomic_bool *obj, bool desired); ZEND_API void zend_atomic_int_store(zend_atomic_int *obj, int desired); -#if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS) +#if (defined(ZEND_WIN32) && !defined(HAVE_C11_ATOMICS)) || defined(HAVE_SYNC_ATOMICS) /* On these platforms it is non-const due to underlying APIs. */ ZEND_API bool zend_atomic_bool_load(zend_atomic_bool *obj); ZEND_API int zend_atomic_int_load(zend_atomic_int *obj); diff --git a/Zend/zend_attributes.c b/Zend/zend_attributes.c index cba95810ba49..71f0d788e921 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Benjamin Eberlei | | Martin Schröder | diff --git a/Zend/zend_attributes.h b/Zend/zend_attributes.h index f8b61ac9d166..c044ef073cc8 100644 --- a/Zend/zend_attributes.h +++ b/Zend/zend_attributes.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Benjamin Eberlei | | Martin Schröder | diff --git a/Zend/zend_autoload.c b/Zend/zend_autoload.c index bc74efa1afda..2ca3d7eea022 100644 --- a/Zend/zend_autoload.c +++ b/Zend/zend_autoload.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gina Peter Banyard | +----------------------------------------------------------------------+ diff --git a/Zend/zend_autoload.h b/Zend/zend_autoload.h index fde4a4a82e9a..84e6ab80b5af 100644 --- a/Zend/zend_autoload.h +++ b/Zend/zend_autoload.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gina Peter Banyard | +----------------------------------------------------------------------+ diff --git a/Zend/zend_bitset.h b/Zend/zend_bitset.h index d990b6a2a871..877f2aaabc05 100644 --- a/Zend/zend_bitset.h +++ b/Zend/zend_bitset.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_build.h b/Zend/zend_build.h index c604fb311a74..8ba7064042e3 100644 --- a/Zend/zend_build.h +++ b/Zend/zend_build.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 0a0f50362598..c19bf2779fbf 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -2,21 +2,21 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ +#include "php_version.h" #include "zend.h" #include "zend_API.h" #include "zend_attributes.h" diff --git a/Zend/zend_builtin_functions.h b/Zend/zend_builtin_functions.h index 237b34b2927b..018d0cdb1c1d 100644 --- a/Zend/zend_builtin_functions.h +++ b/Zend/zend_builtin_functions.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_builtin_functions.stub.php b/Zend/zend_builtin_functions.stub.php index 9b2267b531eb..1d405587145d 100644 --- a/Zend/zend_builtin_functions.stub.php +++ b/Zend/zend_builtin_functions.stub.php @@ -18,11 +18,16 @@ function die(string|int $status = 0): never {} /** @refcount 1 */ function zend_version(): string {} +/** @forbid-dynamic-calls */ function func_num_args(): int {} +/** @forbid-dynamic-calls */ function func_get_arg(int $position): mixed {} -/** @return array */ +/** + * @return array + * @forbid-dynamic-calls + */ function func_get_args(): array {} function strlen(string $string): int {} @@ -156,6 +161,7 @@ function get_defined_functions(bool $exclude_disabled = true): array {} /** * @return array * @refcount 1 + * @forbid-dynamic-calls */ function get_defined_vars(): array {} diff --git a/Zend/zend_builtin_functions_arginfo.h b/Zend/zend_builtin_functions_arginfo.h index cb626ff430e6..b3af43fef340 100644 --- a/Zend/zend_builtin_functions_arginfo.h +++ b/Zend/zend_builtin_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit zend_builtin_functions.stub.php instead. - * Stub hash: 9b49f527064695c812cd204d9efc63c13681d942 */ + * Stub hash: 64c61862de86d9968930893bf21b516119724064 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_clone, 0, 1, IS_OBJECT, 0) ZEND_ARG_TYPE_INFO(0, object, IS_OBJECT, 0) @@ -316,9 +316,21 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(exit, arginfo_exit) ZEND_RAW_FENTRY("die", zif_exit, arginfo_die, 0, NULL, NULL) ZEND_FE(zend_version, arginfo_zend_version) - ZEND_FE(func_num_args, arginfo_func_num_args) - ZEND_FE(func_get_arg, arginfo_func_get_arg) - ZEND_FE(func_get_args, arginfo_func_get_args) +#if (PHP_VERSION_ID >= 80600) + ZEND_RAW_FENTRY("func_num_args", zif_func_num_args, arginfo_func_num_args, ZEND_FENTRY_FLAGS(0, ZEND_ACC2_FORBID_DYN_CALLS), NULL, NULL) +#elif (PHP_VERSION_ID >= 80400) + ZEND_RAW_FENTRY("func_num_args", zif_func_num_args, arginfo_func_num_args, 0, NULL, NULL) +#endif +#if (PHP_VERSION_ID >= 80600) + ZEND_RAW_FENTRY("func_get_arg", zif_func_get_arg, arginfo_func_get_arg, ZEND_FENTRY_FLAGS(0, ZEND_ACC2_FORBID_DYN_CALLS), NULL, NULL) +#elif (PHP_VERSION_ID >= 80400) + ZEND_RAW_FENTRY("func_get_arg", zif_func_get_arg, arginfo_func_get_arg, 0, NULL, NULL) +#endif +#if (PHP_VERSION_ID >= 80600) + ZEND_RAW_FENTRY("func_get_args", zif_func_get_args, arginfo_func_get_args, ZEND_FENTRY_FLAGS(0, ZEND_ACC2_FORBID_DYN_CALLS), NULL, NULL) +#elif (PHP_VERSION_ID >= 80400) + ZEND_RAW_FENTRY("func_get_args", zif_func_get_args, arginfo_func_get_args, 0, NULL, NULL) +#endif ZEND_FE(strlen, arginfo_strlen) ZEND_RAW_FENTRY("strcmp", zif_strcmp, arginfo_strcmp, ZEND_ACC_COMPILE_TIME_EVAL, NULL, NULL) ZEND_RAW_FENTRY("strncmp", zif_strncmp, arginfo_strncmp, ZEND_ACC_COMPILE_TIME_EVAL, NULL, NULL) @@ -358,7 +370,11 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(get_declared_traits, arginfo_get_declared_traits) ZEND_FE(get_declared_interfaces, arginfo_get_declared_interfaces) ZEND_FE(get_defined_functions, arginfo_get_defined_functions) - ZEND_FE(get_defined_vars, arginfo_get_defined_vars) +#if (PHP_VERSION_ID >= 80600) + ZEND_RAW_FENTRY("get_defined_vars", zif_get_defined_vars, arginfo_get_defined_vars, ZEND_FENTRY_FLAGS(0, ZEND_ACC2_FORBID_DYN_CALLS), NULL, NULL) +#elif (PHP_VERSION_ID >= 80400) + ZEND_RAW_FENTRY("get_defined_vars", zif_get_defined_vars, arginfo_get_defined_vars, 0, NULL, NULL) +#endif ZEND_FE(get_resource_type, arginfo_get_resource_type) ZEND_FE(get_resource_id, arginfo_get_resource_id) ZEND_FE(get_resources, arginfo_get_resources) diff --git a/Zend/zend_call_stack.c b/Zend/zend_call_stack.c index ed86ecc74a23..aa23c2e3e2fa 100644 --- a/Zend/zend_call_stack.c +++ b/Zend/zend_call_stack.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Arnaud Le Blanc | +----------------------------------------------------------------------+ diff --git a/Zend/zend_call_stack.h b/Zend/zend_call_stack.h index 58e91694f93f..c0b84334239d 100644 --- a/Zend/zend_call_stack.h +++ b/Zend/zend_call_stack.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Arnaud Le Blanc | +----------------------------------------------------------------------+ diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index cca69985a0df..e1fd7c04f129 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Seiler | | Dmitry Stogov | @@ -28,6 +27,14 @@ #include "zend_globals.h" #include "zend_closures_arginfo.h" +/* Closure is a PFA */ +#define ZEND_PARTIAL OBJ_EXTRA_FLAG_PRIV_1 +/* Closure is a PFA of a Closure. Rebinding the PFA requires rebinding the inner Closure. */ +#define ZEND_PARTIAL_OF_CLOSURE OBJ_EXTRA_FLAG_PRIV_2 + +#define ZEND_CLOSURE_FLAGS(closure) ((closure)->std.extra_flags & (ZEND_PARTIAL|ZEND_PARTIAL_OF_CLOSURE)) +#define ZEND_CLOSURE_IS_FAKE(closure) ((closure)->func.common.fn_flags & ZEND_ACC_FAKE_CLOSURE) + typedef struct _zend_closure { zend_object std; zend_function func; @@ -41,6 +48,7 @@ ZEND_API zend_class_entry *zend_ce_closure; static zend_object_handlers closure_handlers; static zend_result zend_closure_get_closure(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only); +static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr, bool is_fake, uint32_t flags); ZEND_METHOD(Closure, __invoke) /* {{{ */ { @@ -78,7 +86,9 @@ static bool zend_valid_closure_binding( zend_closure *closure, zval *newthis, zend_class_entry *scope) /* {{{ */ { zend_function *func = &closure->func; - bool is_fake_closure = (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) != 0; + // TODO: rename variable + bool is_fake_closure = (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) != 0 + || (closure->std.extra_flags & ZEND_PARTIAL); if (newthis) { if (func->common.fn_flags & ZEND_ACC_STATIC) { zend_error(E_WARNING, "Cannot bind an instance to a static closure, this will be an error in PHP 9"); @@ -161,7 +171,9 @@ ZEND_METHOD(Closure, call) if (closure->func.common.fn_flags & ZEND_ACC_GENERATOR) { zval new_closure; - zend_create_closure(&new_closure, &closure->func, newclass, closure->called_scope, newthis); + zend_create_closure_ex(&new_closure, &closure->func, newclass, + closure->called_scope, newthis, + ZEND_CLOSURE_IS_FAKE(closure), ZEND_CLOSURE_FLAGS(closure)); closure = (zend_closure *) Z_OBJ(new_closure); fci_cache.function_handler = &closure->func; @@ -177,6 +189,7 @@ ZEND_METHOD(Closure, call) memset(&fake_closure->std, 0, sizeof(fake_closure->std)); fake_closure->std.gc.refcount = 1; fake_closure->std.gc.u.type_info = GC_NULL; + fake_closure->std.extra_flags = ZEND_CLOSURE_FLAGS(closure); ZVAL_UNDEF(&fake_closure->this_ptr); fake_closure->called_scope = NULL; my_function = &fake_closure->func; @@ -223,7 +236,7 @@ ZEND_METHOD(Closure, call) } /* }}} */ -static void do_closure_bind(zval *return_value, zval *zclosure, zval *newthis, zend_object *scope_obj, zend_string *scope_str) +static zend_result do_closure_bind(zval *return_value, zval *zclosure, zval *newthis, zend_object *scope_obj, zend_string *scope_str) { zend_class_entry *ce, *called_scope; zend_closure *closure = (zend_closure *) Z_OBJ_P(zclosure); @@ -235,14 +248,15 @@ static void do_closure_bind(zval *return_value, zval *zclosure, zval *newthis, z ce = closure->func.common.scope; } else if ((ce = zend_lookup_class(scope_str)) == NULL) { zend_error(E_WARNING, "Class \"%s\" not found", ZSTR_VAL(scope_str)); - RETURN_NULL(); + RETVAL_NULL(); + return FAILURE; } } else { ce = NULL; } if (!zend_valid_closure_binding(closure, newthis, ce)) { - return; + return FAILURE; } if (newthis) { @@ -251,7 +265,32 @@ static void do_closure_bind(zval *return_value, zval *zclosure, zval *newthis, z called_scope = ce; } - zend_create_closure(return_value, &closure->func, ce, called_scope, newthis); + zend_create_closure_ex(return_value, &closure->func, ce, called_scope, newthis, + ZEND_CLOSURE_IS_FAKE(closure), ZEND_CLOSURE_FLAGS(closure)); + + if (ZEND_CLOSURE_FLAGS(closure) & ZEND_PARTIAL_OF_CLOSURE) { + /* Re-bind the inner closure */ + + closure = (zend_closure*)Z_OBJ_P(return_value); + HashTable *static_variables = ZEND_MAP_PTR_GET(closure->func.op_array.static_variables_ptr); + ZEND_ASSERT(static_variables->nNumOfElements > 0); + zval *inner = &static_variables->arData[0].val; + ZEND_ASSERT(Z_TYPE_P(inner) == IS_OBJECT && Z_OBJCE_P(inner) == zend_ce_closure); + + zval new_inner; + if (do_closure_bind(&new_inner, inner, newthis, scope_obj, scope_str) != SUCCESS) { + ZEND_UNREACHABLE(); + zval_ptr_dtor(return_value); + ZVAL_NULL(return_value); + return FAILURE; + } + + zend_object *garbage = Z_OBJ_P(inner); + ZVAL_COPY_VALUE(inner, &new_inner); + zend_object_release(garbage); + } + + return SUCCESS; } /* {{{ Create a closure from another one and bind to another object and scope */ @@ -588,8 +627,9 @@ static zend_object *zend_closure_clone(zend_object *zobject) /* {{{ */ zend_closure *closure = (zend_closure *)zobject; zval result; - zend_create_closure(&result, &closure->func, - closure->func.common.scope, closure->called_scope, &closure->this_ptr); + zend_create_closure_ex(&result, &closure->func, + closure->func.common.scope, closure->called_scope, &closure->this_ptr, + ZEND_CLOSURE_IS_FAKE(closure), ZEND_CLOSURE_FLAGS(closure)); return Z_OBJ(result); } /* }}} */ @@ -750,13 +790,14 @@ static ZEND_NAMED_FUNCTION(zend_closure_internal_handler) /* {{{ */ { zend_closure *closure = (zend_closure*)ZEND_CLOSURE_OBJECT(EX(func)); closure->orig_internal_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); + ZEND_ASSERT(!(closure->func.common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS) || EG(exception)); // Assign to EX(this) so that it is released after observer checks etc. ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_RELEASE_THIS); Z_OBJ(EX(This)) = &closure->std; } /* }}} */ -static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr, bool is_fake) /* {{{ */ +static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr, bool is_fake, uint32_t flags) /* {{{ */ { zend_closure *closure; void *ptr; @@ -764,6 +805,7 @@ static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_en object_init_ex(res, zend_ce_closure); closure = (zend_closure *)Z_OBJ_P(res); + closure->std.extra_flags = flags; if ((scope == NULL) && this_ptr && (Z_TYPE_P(this_ptr) != IS_UNDEF)) { /* use dummy scope if we're binding an object without specifying a scope */ @@ -861,14 +903,14 @@ static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_en ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr) { zend_create_closure_ex(res, func, scope, called_scope, this_ptr, - /* is_fake */ (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) != 0); + /* is_fake */ (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) != 0, 0); } ZEND_API void zend_create_fake_closure(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr) /* {{{ */ { zend_closure *closure; - zend_create_closure_ex(res, func, scope, called_scope, this_ptr, /* is_fake */ true); + zend_create_closure_ex(res, func, scope, called_scope, this_ptr, /* is_fake */ true, 0); closure = (zend_closure *)Z_OBJ_P(res); closure->func.common.fn_flags |= ZEND_ACC_FAKE_CLOSURE; @@ -878,6 +920,16 @@ ZEND_API void zend_create_fake_closure(zval *res, zend_function *func, zend_clas } /* }}} */ +ZEND_API void zend_create_partial_closure(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr, bool partial_of_closure) +{ + int flags = ZEND_PARTIAL; + if (partial_of_closure) { + flags |= ZEND_PARTIAL_OF_CLOSURE; + } + zend_create_closure_ex(res, func, scope, called_scope, this_ptr, + /* is_fake */ false, flags); +} + void zend_closure_from_frame(zval *return_value, const zend_execute_data *call) { /* {{{ */ zval instance; zend_internal_function trampoline; diff --git a/Zend/zend_closures.h b/Zend/zend_closures.h index 8bea4ffb051e..305d82e5015a 100644 --- a/Zend/zend_closures.h +++ b/Zend/zend_closures.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Seiler | | Dmitry Stogov | @@ -37,6 +36,7 @@ extern ZEND_API zend_class_entry *zend_ce_closure; ZEND_API void zend_create_closure(zval *res, zend_function *op_array, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr); ZEND_API void zend_create_fake_closure(zval *res, zend_function *op_array, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr); +ZEND_API void zend_create_partial_closure(zval *res, zend_function *func, zend_class_entry *scope, zend_class_entry *called_scope, zval *this_ptr, bool partial_of_closure); ZEND_API zend_function *zend_get_closure_invoke_method(zend_object *obj); ZEND_API const zend_function *zend_get_closure_method_def(zend_object *obj); ZEND_API zval* zend_get_closure_this_ptr(zval *obj); diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index ee83ee75ff6e..c52b32da020e 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -29,6 +28,8 @@ #include "zend_exceptions.h" #include "zend_interfaces.h" #include "zend_types.h" +#include "zend_portability.h" +#include "zend_string.h" #include "zend_virtual_cwd.h" #include "zend_multibyte.h" #include "zend_language_scanner.h" @@ -103,6 +104,8 @@ static void zend_compile_expr(znode *result, zend_ast *ast); static void zend_compile_stmt(zend_ast *ast); static void zend_compile_assign(znode *result, zend_ast *ast, bool stmt, uint32_t type); +static zend_ast *zend_partial_apply(zend_ast *callable_ast, zend_ast *pipe_arg); + #ifdef ZEND_CHECK_STACK_LIMIT zend_never_inline static void zend_stack_limit_error(void) { @@ -188,10 +191,10 @@ static bool zend_get_unqualified_name(const zend_string *name, const char **resu if (ns_separator != NULL) { *result = ns_separator + 1; *result_len = ZSTR_VAL(name) + ZSTR_LEN(name) - *result; - return 1; + return true; } - return 0; + return false; } /* }}} */ @@ -234,11 +237,11 @@ static bool zend_is_reserved_class_name(const zend_string *name) /* {{{ */ if (uqname_len == reserved->len && zend_binary_strcasecmp(uqname, uqname_len, reserved->name, reserved->len) == 0 ) { - return 1; + return true; } } - return 0; + return false; } /* }}} */ @@ -891,7 +894,7 @@ static const char *zend_modifier_token_to_string(uint32_t token) return "protected(set)"; case T_PRIVATE_SET: return "private(set)"; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -1665,13 +1668,13 @@ static bool array_is_const(const zend_array *array) static bool can_ct_eval_const(const zend_constant *c) { if (ZEND_CONSTANT_FLAGS(c) & CONST_DEPRECATED) { - return 0; + return false; } if ((ZEND_CONSTANT_FLAGS(c) & CONST_PERSISTENT) && !(CG(compiler_options) & ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION) && !((ZEND_CONSTANT_FLAGS(c) & CONST_NO_FILE_CACHE) && (CG(compiler_options) & ZEND_COMPILE_WITH_FILE_CACHE))) { - return 1; + return true; } if (Z_TYPE(c->value) < IS_ARRAY && !(CG(compiler_options) & ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION)) { @@ -1681,7 +1684,7 @@ static bool can_ct_eval_const(const zend_constant *c) { && array_is_const(Z_ARR(c->value))) { return 1; } - return 0; + return false; } static bool zend_try_ct_eval_const(zval *zv, zend_string *name, bool is_fully_qualified) /* {{{ */ @@ -1698,14 +1701,14 @@ static bool zend_try_ct_eval_const(zval *zv, zend_string *name, bool is_fully_qu zend_constant *c; if ((c = zend_get_special_const(lookup_name, lookup_len))) { ZVAL_COPY_VALUE(zv, &c->value); - return 1; + return true; } c = zend_hash_find_ptr(EG(zend_constants), name); if (c && can_ct_eval_const(c)) { ZVAL_COPY_OR_DUP(zv, &c->value); - return 1; + return true; } - return 0; + return false; } /* }}} */ @@ -1713,12 +1716,12 @@ static inline bool zend_is_scope_known(void) /* {{{ */ { if (!CG(active_op_array)) { /* This can only happen when evaluating a default value string. */ - return 0; + return false; } if (CG(active_op_array)->fn_flags & ZEND_ACC_CLOSURE) { /* Closures can be rebound to a different scope */ - return 0; + return false; } if (!CG(active_class_entry)) { @@ -1735,10 +1738,10 @@ static inline bool zend_is_scope_known(void) /* {{{ */ static inline bool class_name_refers_to_active_ce(const zend_string *class_name, uint32_t fetch_type) /* {{{ */ { if (!CG(active_class_entry)) { - return 0; + return false; } if (fetch_type == ZEND_FETCH_CLASS_SELF && zend_is_scope_known()) { - return 1; + return true; } return fetch_type == ZEND_FETCH_CLASS_DEFAULT && zend_string_equals_ci(class_name, CG(active_class_entry)->name); @@ -1803,7 +1806,7 @@ static bool zend_try_compile_const_expr_resolve_class_name(zval *zv, zend_ast *c const zval *class_name; if (class_ast->kind != ZEND_AST_ZVAL) { - return 0; + return false; } class_name = zend_ast_get_zval(class_ast); @@ -1819,22 +1822,22 @@ static bool zend_try_compile_const_expr_resolve_class_name(zval *zv, zend_ast *c case ZEND_FETCH_CLASS_SELF: if (CG(active_class_entry) && zend_is_scope_known()) { ZVAL_STR_COPY(zv, CG(active_class_entry)->name); - return 1; + return true; } - return 0; + return false; case ZEND_FETCH_CLASS_PARENT: if (CG(active_class_entry) && CG(active_class_entry)->parent_name && zend_is_scope_known()) { ZVAL_STR_COPY(zv, CG(active_class_entry)->parent_name); - return 1; + return true; } - return 0; + return false; case ZEND_FETCH_CLASS_STATIC: - return 0; + return false; case ZEND_FETCH_CLASS_DEFAULT: ZVAL_STR(zv, zend_resolve_class_name_ast(class_ast)); - return 1; - EMPTY_SWITCH_DEFAULT_CASE() + return true; + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -1896,11 +1899,11 @@ static bool zend_try_ct_eval_class_const(zval *zv, zend_string *class_name, zend } if (CG(compiler_options) & ZEND_COMPILE_NO_PERSISTENT_CONSTANT_SUBSTITUTION) { - return 0; + return false; } if (!cc || !zend_verify_ct_const_access(cc, CG(active_class_entry))) { - return 0; + return false; } c = &cc->value; @@ -1914,7 +1917,7 @@ static bool zend_try_ct_eval_class_const(zval *zv, zend_string *class_name, zend return 1; } - return 0; + return false; } /* }}} */ @@ -1950,6 +1953,9 @@ static void zend_do_extended_stmt(znode* result) /* {{{ */ opline->opcode = ZEND_EXT_STMT; if (result) { + if (result->op_type == IS_CONST) { + Z_TRY_ADDREF(result->u.constant); + } SET_NODE(opline->op1, result); } } @@ -2278,7 +2284,7 @@ static void zend_adjust_for_fetch_type(zend_op *opline, znode *result, uint32_t case BP_VAR_UNSET: opline->opcode += 5 * factor; return; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -2441,7 +2447,7 @@ static inline void zend_update_jump_target(uint32_t opnum_jump, uint32_t opnum_t case ZEND_JMP_FRAMELESS: opline->op2.opline_num = opnum_target; break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -2510,9 +2516,9 @@ static bool zend_ast_kind_is_short_circuited(zend_ast_kind ast_kind) case ZEND_AST_METHOD_CALL: case ZEND_AST_NULLSAFE_METHOD_CALL: case ZEND_AST_STATIC_CALL: - return 1; + return true; default: - return 0; + return false; } } @@ -2527,9 +2533,9 @@ static bool zend_ast_is_short_circuited(const zend_ast *ast) return zend_ast_is_short_circuited(ast->child[0]); case ZEND_AST_NULLSAFE_PROP: case ZEND_AST_NULLSAFE_METHOD_CALL: - return 1; + return true; default: - return 0; + return false; } } @@ -2799,7 +2805,7 @@ static inline bool zend_can_write_to_variable(const zend_ast *ast) /* {{{ */ static inline bool zend_is_const_default_class_ref(zend_ast *name_ast) /* {{{ */ { if (name_ast->kind != ZEND_AST_ZVAL) { - return 0; + return false; } return ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type_ast(name_ast); @@ -2968,7 +2974,6 @@ static zend_op *zend_compile_simple_var_no_cv(znode *result, const zend_ast *ast opline->extended_value = ZEND_FETCH_GLOBAL; } else { - // TODO: Have a test case for this? if (name_node.op_type == IS_CONST && type == BP_VAR_R && zend_string_equals_literal(Z_STR(name_node.u.constant), "http_response_header")) { @@ -2991,7 +2996,7 @@ static bool is_this_fetch(const zend_ast *ast) /* {{{ */ return Z_TYPE_P(name) == IS_STRING && zend_string_equals(Z_STR_P(name), ZSTR_KNOWN(ZEND_STR_THIS)); } - return 0; + return false; } /* }}} */ @@ -3002,7 +3007,7 @@ static bool is_globals_fetch(const zend_ast *ast) return Z_TYPE_P(name) == IS_STRING && zend_string_equals_literal(Z_STR_P(name), "GLOBALS"); } - return 0; + return false; } static bool is_global_var_fetch(const zend_ast *ast) @@ -3458,7 +3463,7 @@ static void zend_ensure_writable_variable(const zend_ast *ast) /* {{{ */ static bool zend_is_assign_to_self(const zend_ast *var_ast, const zend_ast *expr_ast) /* {{{ */ { if (expr_ast->kind != ZEND_AST_VAR || expr_ast->child[0]->kind != ZEND_AST_ZVAL) { - return 0; + return false; } while (zend_is_variable(var_ast) && var_ast->kind != ZEND_AST_VAR) { @@ -3466,7 +3471,7 @@ static bool zend_is_assign_to_self(const zend_ast *var_ast, const zend_ast *expr } if (var_ast->kind != ZEND_AST_VAR || var_ast->child[0]->kind != ZEND_AST_ZVAL) { - return 0; + return false; } { @@ -3591,7 +3596,7 @@ static void zend_compile_assign(znode *result, zend_ast *ast, bool stmt, uint32_ result->op_type = IS_UNUSED; } return; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -3747,7 +3752,7 @@ static void zend_compile_compound_assign(znode *result, zend_ast *ast) /* {{{ */ opline = zend_emit_op_data(&expr_node); opline->extended_value = cache_slot; return; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -3765,12 +3770,16 @@ static uint32_t zend_get_arg_num(const zend_function *fn, const zend_string *arg return (uint32_t) -1; } -static uint32_t zend_compile_args( - zend_ast *ast, const zend_function *fbc, bool *may_have_extra_named_args) /* {{{ */ +static uint32_t zend_compile_args_ex( + zend_ast *ast, const zend_function *fbc, + bool *may_have_extra_named_args, + bool is_call_partial, bool *uses_variadic_placeholder_p, + zval *named_positions) /* {{{ */ { const zend_ast_list *args = zend_ast_get_list(ast); uint32_t i; bool uses_arg_unpack = false; + bool uses_variadic_placeholder = false; uint32_t arg_count = 0; /* number of arguments not including unpacks */ /* Whether named arguments are used syntactically, to enforce language level limitations. @@ -3796,6 +3805,11 @@ static uint32_t zend_compile_args( "Cannot use argument unpacking after named arguments"); } + if (is_call_partial) { + zend_error_noreturn(E_COMPILE_ERROR, + "Cannot combine partial application and unpacking"); + } + /* Unpack may contain named arguments. */ may_have_undef = true; if (!fbc || (fbc->common.fn_flags & ZEND_ACC_VARIADIC)) { @@ -3836,18 +3850,75 @@ static uint32_t zend_compile_args( may_have_undef = true; *may_have_extra_named_args = true; } + + if (uses_variadic_placeholder) { + zend_error_noreturn(E_COMPILE_ERROR, + "Variadic placeholder must be last"); + } } else { if (uses_arg_unpack) { zend_error_noreturn(E_COMPILE_ERROR, "Cannot use positional argument after argument unpacking"); } - if (uses_named_args) { + bool is_variadic_placeholder = arg->kind == ZEND_AST_PLACEHOLDER_ARG + && arg->attr == ZEND_PLACEHOLDER_VARIADIC; + + if (uses_named_args && !is_variadic_placeholder) { zend_error_noreturn(E_COMPILE_ERROR, "Cannot use positional argument after named argument"); } - arg_count++; + if (uses_variadic_placeholder) { + if (is_variadic_placeholder) { + zend_error_noreturn(E_COMPILE_ERROR, + "Variadic placeholder may only appear once"); + } else { + zend_error_noreturn(E_COMPILE_ERROR, + "Variadic placeholder must be last"); + } + } + + if (!is_variadic_placeholder) { + arg_count++; + } + } + + if (arg->kind == ZEND_AST_PLACEHOLDER_ARG) { + if (uses_arg_unpack) { + zend_error_noreturn(E_COMPILE_ERROR, + "Cannot combine partial application and unpacking"); + } + + if (arg->attr == ZEND_PLACEHOLDER_VARIADIC) { + uses_variadic_placeholder = true; + /* Do not emit ZEND_SEND_PLACEHOLDER: We represent the variadic + * placeholder with a flag on the ZEND_CONVERT_CALLABLE_PARTIAL + * op instead. */ + continue; + } + + if (arg_name) { + if (Z_ISUNDEF_P(named_positions)) { + array_init(named_positions); + } + zval tmp; + ZVAL_LONG(&tmp, zend_hash_num_elements(Z_ARRVAL_P(named_positions))); + zend_hash_add(Z_ARRVAL_P(named_positions), arg_name, &tmp); + } + + opline = zend_emit_op(NULL, ZEND_SEND_PLACEHOLDER, NULL, NULL); + if (arg_name) { + opline->op2_type = IS_CONST; + zend_string_addref(arg_name); + opline->op2.constant = zend_add_literal_string(&arg_name); + opline->result.num = zend_alloc_cache_slots(2); + } else if (arg->attr != ZEND_PLACEHOLDER_VARIADIC) { + opline->op2.opline_num = arg_num; + opline->result.var = EX_NUM_TO_VAR(arg_num - 1); + } + + continue; } /* Treat passing of $GLOBALS the same as passing a call. @@ -3962,14 +4033,24 @@ static uint32_t zend_compile_args( } } - if (may_have_undef) { - zend_emit_op(NULL, ZEND_CHECK_UNDEF_ARGS, NULL, NULL); + if (!is_call_partial) { + if (may_have_undef) { + zend_emit_op(NULL, ZEND_CHECK_UNDEF_ARGS, NULL, NULL); + } + } else { + *uses_variadic_placeholder_p = uses_variadic_placeholder; } return arg_count; } /* }}} */ +static uint32_t zend_compile_args(zend_ast *ast, const zend_function *fbc, + bool *may_have_extra_named_args) /* {{{ */ +{ + return zend_compile_args_ex(ast, fbc, may_have_extra_named_args, false, NULL, NULL); +} + ZEND_API uint8_t zend_get_call_op(const zend_op *init_op, const zend_function *fbc, bool result_used) /* {{{ */ { uint32_t no_discard = result_used ? 0 : ZEND_ACC_NODISCARD; @@ -4003,6 +4084,38 @@ ZEND_API uint8_t zend_get_call_op(const zend_op *init_op, const zend_function *f } /* }}} */ +static void zend_compile_call_partial(znode *result, uint32_t arg_count, + bool may_have_extra_named_args, bool uses_variadic_placeholder, + zval *named_positions, uint32_t opnum_init, const zend_function *fbc) { + + zend_op *init_opline = &CG(active_op_array)->opcodes[opnum_init]; + + init_opline->extended_value = arg_count; + + ZEND_ASSERT(init_opline->opcode != ZEND_NEW); + + if (init_opline->opcode == ZEND_INIT_FCALL) { + init_opline->op1.num = zend_vm_calc_used_stack(arg_count, fbc); + } + + zend_op *opline = zend_emit_op_tmp(result, ZEND_CALLABLE_CONVERT_PARTIAL, + NULL, NULL); + + opline->op1.num = zend_alloc_cache_slots(2); + + if (may_have_extra_named_args) { + opline->extended_value = ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS; + } + if (uses_variadic_placeholder) { + opline->extended_value |= ZEND_FCALL_USES_VARIADIC_PLACEHOLDER; + } + + if (!Z_ISUNDEF_P(named_positions)) { + opline->op2.constant = zend_add_literal(named_positions); + opline->op2_type = IS_CONST; + } +} + static bool zend_compile_call_common(znode *result, zend_ast *args_ast, const zend_function *fbc, uint32_t lineno, uint32_t type) /* {{{ */ { zend_op *opline; @@ -4018,23 +4131,43 @@ static bool zend_compile_call_common(znode *result, zend_ast *args_ast, const ze zend_error_noreturn(E_COMPILE_ERROR, "Cannot create Closure for new expression"); } - zend_ast_list *args = zend_ast_get_list(((zend_ast_fcc*)args_ast)->args); - if (args->children != 1 || args->child[0]->attr != ZEND_PLACEHOLDER_VARIADIC) { - zend_error_noreturn(E_COMPILE_ERROR, "Cannot create a Closure for call expression with more than one argument, or non-variadic placeholders"); - } + zend_ast_list *fcc_args = zend_ast_get_list(((zend_ast_fcc*)args_ast)->args); - if (opcode == ZEND_INIT_FCALL) { - opline->op1.num = zend_vm_calc_used_stack(0, fbc); - } + /* FCCs are a special case of PFAs with a single variadic placeholder */ + if (fcc_args->children == 1 && fcc_args->child[0]->attr == ZEND_PLACEHOLDER_VARIADIC) { - zend_op *callable_convert_op = zend_emit_op_tmp(result, ZEND_CALLABLE_CONVERT, NULL, NULL); - if (opcode == ZEND_INIT_FCALL - || opcode == ZEND_INIT_FCALL_BY_NAME - || opcode == ZEND_INIT_NS_FCALL_BY_NAME) { - callable_convert_op->extended_value = zend_alloc_cache_slot(); - } else { - callable_convert_op->extended_value = (uint32_t)-1; + if (opline->opcode == ZEND_INIT_FCALL) { + opline->op1.num = zend_vm_calc_used_stack(0, fbc); + } + + zend_op *callable_convert_op = zend_emit_op_tmp(result, ZEND_CALLABLE_CONVERT, NULL, NULL); + if (opcode == ZEND_INIT_FCALL + || opcode == ZEND_INIT_FCALL_BY_NAME + || opcode == ZEND_INIT_NS_FCALL_BY_NAME) { + callable_convert_op->extended_value = zend_alloc_cache_slot(); + } else { + callable_convert_op->extended_value = (uint32_t)-1; + } + + return true; } + + args_ast = ((zend_ast_fcc*)args_ast)->args; + + bool may_have_extra_named_args; + bool uses_variadic_placeholder; + + zval named_positions; + ZVAL_UNDEF(&named_positions); + + uint32_t arg_count = zend_compile_args_ex(args_ast, fbc, + &may_have_extra_named_args, true, &uses_variadic_placeholder, + &named_positions); + + zend_compile_call_partial(result, arg_count, + may_have_extra_named_args, uses_variadic_placeholder, + &named_positions, opnum_init, fbc); + return true; } @@ -4129,10 +4262,10 @@ static inline bool zend_args_contain_unpack_or_named(const zend_ast_list *args) for (i = 0; i < args->children; ++i) { const zend_ast *arg = args->child[i]; if (arg->kind == ZEND_AST_UNPACK || arg->kind == ZEND_AST_NAMED_ARG) { - return 1; + return true; } } - return 0; + return false; } /* }}} */ @@ -5009,7 +5142,7 @@ static zend_result zend_compile_func_sprintf(znode *result, zend_ast_list *args) case 'd': zend_emit_op_tmp(&elements[placeholder_count], ZEND_CAST, &elements[placeholder_count], NULL)->extended_value = IS_LONG; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } if (rope_elements == 0) { @@ -5120,42 +5253,21 @@ static zend_result zend_compile_func_array_map(znode *result, zend_ast_list *arg } zend_ast *callback = args->child[0]; - - /* Bail out if the callback is not a FCC/PFA. */ - zend_ast *args_ast; - switch (callback->kind) { - case ZEND_AST_CALL: - case ZEND_AST_STATIC_CALL: - args_ast = zend_ast_call_get_args(callback); - if (args_ast->kind != ZEND_AST_CALLABLE_CONVERT) { - return FAILURE; - } - - break; - default: - return FAILURE; - } - - /* Bail out if the callback is assert() due to the AST stringification logic - * breaking for the generated call. - */ - if (callback->kind == ZEND_AST_CALL - && callback->child[0]->kind == ZEND_AST_ZVAL - && Z_TYPE_P(zend_ast_get_zval(callback->child[0])) == IS_STRING - && zend_string_equals_literal_ci(zend_ast_get_str(callback->child[0]), "assert")) { - return FAILURE; - } - - zend_ast_list *callback_args = zend_ast_get_list(((zend_ast_fcc*)args_ast)->args); - if (callback_args->children != 1 || callback_args->child[0]->attr != ZEND_PLACEHOLDER_VARIADIC) { - /* Full PFA is not yet implemented, will fail in zend_compile_call_common(). */ + if (callback->kind != ZEND_AST_CALL && callback->kind != ZEND_AST_STATIC_CALL) { return FAILURE; } znode value; value.op_type = IS_TMP_VAR; value.u.op.var = get_temporary_variable(); - zend_ast *call_args = zend_ast_create_list(1, ZEND_AST_ARG_LIST, zend_ast_create_znode(&value)); + + zend_ast *call_args = zend_partial_apply(callback, + zend_ast_create_znode(&value)); + if (!call_args) { + CG(active_op_array)->T--; + /* The callback is not a FCC/PFA, or is not optimizable */ + return FAILURE; + } zend_op *opline; @@ -5326,7 +5438,7 @@ static const char *zend_get_cstring_from_property_hook_kind(zend_property_hook_k return "get"; case ZEND_PROPERTY_HOOK_SET: return "set"; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -5876,7 +5988,7 @@ static void zend_compile_unset(const zend_ast *ast) /* {{{ */ opline = zend_compile_static_prop(NULL, var_ast, BP_VAR_UNSET, false, false); opline->opcode = ZEND_UNSET_STATIC_PROP; return; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -5887,7 +5999,7 @@ static bool zend_handle_loops_and_finally_ex(zend_long depth, znode *return_valu zend_loop_var *loop_var = zend_stack_top(&CG(loop_var_stack)); if (!loop_var) { - return 1; + return true; } base = zend_stack_base(&CG(loop_var_stack)); for (; loop_var >= base; loop_var--) { @@ -5942,7 +6054,7 @@ static bool zend_has_finally_ex(zend_long depth) /* {{{ */ zend_loop_var *loop_var = zend_stack_top(&CG(loop_var_stack)); if (!loop_var) { - return 0; + return false; } base = zend_stack_base(&CG(loop_var_stack)); for (; loop_var >= base; loop_var--) { @@ -5958,7 +6070,7 @@ static bool zend_has_finally_ex(zend_long depth) /* {{{ */ depth--; } } - return 0; + return false; } /* }}} */ @@ -6560,7 +6672,7 @@ static uint8_t determine_switch_jumptable_type(const zend_ast_list *cases) { static bool should_use_jumptable(const zend_ast_list *cases, uint8_t jumptable_type) { if (CG(compiler_options) & ZEND_COMPILE_NO_JUMPTABLES) { - return 0; + return false; } /* Thresholds are chosen based on when the average switch time for equidistributed @@ -6743,17 +6855,17 @@ static bool can_match_use_jumptable(const zend_ast_list *arms) { zend_eval_const_expr(cond_ast); if ((*cond_ast)->kind != ZEND_AST_ZVAL) { - return 0; + return false; } const zval *cond_zv = zend_ast_get_zval(*cond_ast); if (Z_TYPE_P(cond_zv) != IS_LONG && Z_TYPE_P(cond_zv) != IS_STRING) { - return 0; + return false; } } } - return 1; + return true; } static bool zend_is_pipe_optimizable_callable_name(zend_ast *ast) @@ -6769,6 +6881,76 @@ static bool zend_is_pipe_optimizable_callable_name(zend_ast *ast) return true; } +static zend_ast *zend_partial_apply(zend_ast *callable_ast, zend_ast *pipe_arg) +{ + if (callable_ast->kind != ZEND_AST_CALL + && callable_ast->kind != ZEND_AST_STATIC_CALL + && callable_ast->kind != ZEND_AST_METHOD_CALL) { + return NULL; + } + + zend_ast *args_ast = zend_ast_call_get_args(callable_ast); + if (!args_ast || args_ast->kind != ZEND_AST_CALLABLE_CONVERT) { + return NULL; + } + + if (callable_ast->kind == ZEND_AST_CALL && + !zend_is_pipe_optimizable_callable_name(callable_ast->child[0])) { + return NULL; + } + + zend_ast_list *arg_list = zend_ast_get_list(((zend_ast_fcc*)args_ast)->args); + + zend_ast *first_placeholder = NULL; + bool uses_named_args = false; + + for (uint32_t i = 0; i < arg_list->children; i++) { + zend_ast *arg = arg_list->child[i]; + if (arg->kind == ZEND_AST_NAMED_ARG) { + uses_named_args = true; + arg = arg->child[1]; + } + + if (arg->kind == ZEND_AST_PLACEHOLDER_ARG) { + if (first_placeholder == NULL) { + first_placeholder = arg; + } else { + /* A PFA with multiple placeholders is unexpected in this + * context, and will usually error due to a missing argument, + * so we don't optimize those. */ + return NULL; + } + if (arg->attr == ZEND_PLACEHOLDER_VARIADIC && uses_named_args) { + /* A PFA with both a variadic placeholder and named args can not + * be optimized because this would result in a positional arg + * after a named arg: f(name: $v, ...) -> f(name: $v, pipe_arg). + * Arg placeholders ('?') are safe since they are not allowed + * after named args. */ + return NULL; + } + } + } + + ZEND_ASSERT(first_placeholder); + + zend_ast *new_arg_list = zend_ast_create_list(0, arg_list->kind); + for (uint32_t i = 0; i < arg_list->children; i++) { + zend_ast *arg = arg_list->child[i]; + if (arg == first_placeholder) { + new_arg_list = zend_ast_list_add(new_arg_list, pipe_arg); + } else if (arg->kind == ZEND_AST_NAMED_ARG + && arg->child[1] == first_placeholder) { + zend_ast *name = arg->child[0]; + new_arg_list = zend_ast_list_add(new_arg_list, + zend_ast_create(ZEND_AST_NAMED_ARG, name, pipe_arg)); + } else { + new_arg_list = zend_ast_list_add(new_arg_list, arg); + } + } + + return new_arg_list; +} + static void zend_compile_pipe(znode *result, zend_ast *ast, uint32_t type) { zend_ast *operand_ast = ast->child[0]; @@ -6793,29 +6975,35 @@ static void zend_compile_pipe(znode *result, zend_ast *ast, uint32_t type) } /* Turn the operand into a function parameter list. */ - zend_ast *arg_list_ast = zend_ast_create_list(1, ZEND_AST_ARG_LIST, zend_ast_create_znode(&wrapped_operand_result)); + zend_ast *arg = zend_ast_create_znode(&wrapped_operand_result); zend_ast *fcall_ast; znode callable_result; + zend_ast *pfa_arg_list_ast = NULL; - /* Turn $foo |> bar(...) into bar($foo). */ - if (callable_ast->kind == ZEND_AST_CALL - && callable_ast->child[1]->kind == ZEND_AST_CALLABLE_CONVERT - && zend_is_pipe_optimizable_callable_name(callable_ast->child[0])) { - fcall_ast = zend_ast_create(ZEND_AST_CALL, - callable_ast->child[0], arg_list_ast); - /* Turn $foo |> bar::baz(...) into bar::baz($foo). */ - } else if (callable_ast->kind == ZEND_AST_STATIC_CALL - && callable_ast->child[2]->kind == ZEND_AST_CALLABLE_CONVERT) { - fcall_ast = zend_ast_create(ZEND_AST_STATIC_CALL, - callable_ast->child[0], callable_ast->child[1], arg_list_ast); - /* Turn $foo |> $bar->baz(...) into $bar->baz($foo). */ - } else if (callable_ast->kind == ZEND_AST_METHOD_CALL - && callable_ast->child[2]->kind == ZEND_AST_CALLABLE_CONVERT) { - fcall_ast = zend_ast_create(ZEND_AST_METHOD_CALL, - callable_ast->child[0], callable_ast->child[1], arg_list_ast); + /* Turn $foo |> PFA into plain function call if possible */ + if ((pfa_arg_list_ast = zend_partial_apply(callable_ast, arg))) { + switch (callable_ast->kind) { + case ZEND_AST_CALL: + fcall_ast = zend_ast_create(ZEND_AST_CALL, + callable_ast->child[0], pfa_arg_list_ast); + break; + case ZEND_AST_STATIC_CALL: + fcall_ast = zend_ast_create(ZEND_AST_STATIC_CALL, + callable_ast->child[0], callable_ast->child[1], + pfa_arg_list_ast); + break; + case ZEND_AST_METHOD_CALL: + fcall_ast = zend_ast_create(ZEND_AST_METHOD_CALL, + callable_ast->child[0], callable_ast->child[1], + pfa_arg_list_ast); + break; + default: + ZEND_UNREACHABLE(); + } /* Turn $foo |> $expr into ($expr)($foo) */ } else { + zend_ast *arg_list_ast = zend_ast_create_list(1, ZEND_AST_ARG_LIST, arg); zend_compile_expr(&callable_result, callable_ast); callable_ast = zend_ast_create_znode(&callable_result); fcall_ast = zend_ast_create(ZEND_AST_CALL, @@ -7201,7 +7389,7 @@ bool zend_handle_encoding_declaration(zend_ast *ast) /* {{{ */ if (zend_string_equals_literal_ci(name, "encoding")) { if (value_ast->kind != ZEND_AST_ZVAL) { zend_throw_exception(zend_ce_compile_error, "Encoding must be a literal", 0); - return 0; + return false; } if (CG(multibyte)) { @@ -7235,7 +7423,7 @@ bool zend_handle_encoding_declaration(zend_ast *ast) /* {{{ */ } } - return 1; + return true; } /* }}} */ @@ -7469,15 +7657,15 @@ static void zend_are_intersection_types_redundant(const zend_type left_type, con unsigned int sum = 0; const zend_type *outer_type; - ZEND_TYPE_LIST_FOREACH(smaller_type_list, outer_type) + ZEND_TYPE_LIST_FOREACH(smaller_type_list, outer_type) { const zend_type *inner_type; - ZEND_TYPE_LIST_FOREACH(larger_type_list, inner_type) + ZEND_TYPE_LIST_FOREACH(larger_type_list, inner_type) { if (zend_string_equals_ci(ZEND_TYPE_NAME(*inner_type), ZEND_TYPE_NAME(*outer_type))) { sum++; break; } - ZEND_TYPE_LIST_FOREACH_END(); - ZEND_TYPE_LIST_FOREACH_END(); + } ZEND_TYPE_LIST_FOREACH_END(); + } ZEND_TYPE_LIST_FOREACH_END(); if (sum == smaller_type_list->num_types) { zend_string *smaller_type_str; @@ -7505,14 +7693,14 @@ static void zend_is_intersection_type_redundant_by_single_type(const zend_type i ZEND_ASSERT(!ZEND_TYPE_IS_INTERSECTION(single_type)); const zend_type *single_intersection_type = NULL; - ZEND_TYPE_FOREACH(intersection_type, single_intersection_type) + ZEND_TYPE_FOREACH(intersection_type, single_intersection_type) { if (zend_string_equals_ci(ZEND_TYPE_NAME(*single_intersection_type), ZEND_TYPE_NAME(single_type))) { zend_string *single_type_str = zend_type_to_string(single_type); zend_string *complete_type = zend_type_to_string(intersection_type); zend_error_noreturn(E_COMPILE_ERROR, "Type %s is redundant as it is more restrictive than type %s", ZSTR_VAL(complete_type), ZSTR_VAL(single_type_str)); } - ZEND_TYPE_FOREACH_END(); + } ZEND_TYPE_FOREACH_END(); } /* Used by both intersection and union types prior to transforming the type list to a full zend_type */ @@ -7773,14 +7961,14 @@ static bool zend_is_valid_default_value(zend_type type, zval *value) { ZEND_ASSERT(ZEND_TYPE_IS_SET(type)); if (ZEND_TYPE_CONTAINS_CODE(type, Z_TYPE_P(value))) { - return 1; + return true; } if ((ZEND_TYPE_FULL_MASK(type) & MAY_BE_DOUBLE) && Z_TYPE_P(value) == IS_LONG) { /* Integers are allowed as initializers for floating-point values. */ convert_to_double(value); - return 1; + return true; } - return 0; + return false; } static void zend_compile_attributes( @@ -8024,6 +8212,7 @@ static void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast, uint32 } else { arg_infos->type = (zend_type) ZEND_TYPE_INIT_CODE(fallback_return_type, 0, 0); } + arg_infos->doc_comment = NULL; arg_infos++; op_array->fn_flags |= ZEND_ACC_HAS_RETURN_TYPE; @@ -8122,6 +8311,7 @@ static void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast, uint32 arg_info->name = zend_string_copy(name); arg_info->type = (zend_type) ZEND_TYPE_INIT_NONE(0); arg_info->default_value = NULL; + arg_info->doc_comment = doc_comment_ast ? zend_string_copy(zend_ast_get_str(doc_comment_ast)) : NULL; if (attributes_ast) { zend_compile_attributes( @@ -8460,7 +8650,7 @@ static void compile_implicit_lexical_binds( op_array->static_variables = zend_new_array(8); } - ZEND_HASH_MAP_FOREACH_STR_KEY(&info->uses, var_name) + ZEND_HASH_MAP_FOREACH_STR_KEY(&info->uses, var_name) { zval *value = zend_hash_add( op_array->static_variables, var_name, &EG(uninitialized_zval)); uint32_t offset = (uint32_t)((char*)value - (char*)op_array->static_variables->arData); @@ -8469,7 +8659,7 @@ static void compile_implicit_lexical_binds( opline->op2_type = IS_CV; opline->op2.var = lookup_cv(var_name); opline->extended_value = offset | ZEND_BIND_IMPLICIT; - ZEND_HASH_FOREACH_END(); + } ZEND_HASH_FOREACH_END(); } static void zend_compile_closure_uses(zend_ast *ast) /* {{{ */ @@ -8509,11 +8699,11 @@ static void zend_compile_closure_uses(zend_ast *ast) /* {{{ */ static void zend_compile_implicit_closure_uses(const closure_info *info) { zend_string *var_name; - ZEND_HASH_MAP_FOREACH_STR_KEY(&info->uses, var_name) + ZEND_HASH_MAP_FOREACH_STR_KEY(&info->uses, var_name) { zval zv; ZVAL_NULL(&zv); zend_compile_static_var_common(var_name, &zv, ZEND_BIND_IMPLICIT); - ZEND_HASH_FOREACH_END(); + } ZEND_HASH_FOREACH_END(); } static void add_stringable_interface(zend_class_entry *ce) { @@ -9460,7 +9650,7 @@ static void zend_compile_use_trait(const zend_ast *ast) /* {{{ */ case ZEND_AST_TRAIT_ALIAS: zend_compile_trait_alias(adaptation_ast); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } } @@ -9832,7 +10022,7 @@ static HashTable *zend_get_import_ht(uint32_t type) /* {{{ */ zend_hash_init(FC(imports_const), 8, NULL, str_dtor, 0); } return FC(imports_const); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return NULL; @@ -9848,7 +10038,7 @@ static char *zend_get_use_type_str(uint32_t type) /* {{{ */ return " function"; case ZEND_SYMBOL_CONST: return " const"; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return " unknown"; @@ -10214,10 +10404,10 @@ static bool zend_try_ct_eval_magic_const(zval *zv, const zend_ast *ast) /* {{{ * ZVAL_EMPTY_STRING(zv); } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } - return 1; + return true; } /* }}} */ @@ -10321,12 +10511,12 @@ ZEND_API bool zend_binary_op_produces_error(uint32_t opcode, const zval *op1, co static inline bool zend_try_ct_eval_binary_op(zval *result, uint32_t opcode, zval *op1, zval *op2) /* {{{ */ { if (zend_binary_op_produces_error(opcode, op1, op2)) { - return 0; + return false; } const binary_op_type fn = get_binary_op(opcode); fn(result, op1, op2); - return 1; + return true; } /* }}} */ @@ -10351,12 +10541,12 @@ ZEND_API bool zend_unary_op_produces_error(uint32_t opcode, const zval *op) static inline bool zend_try_ct_eval_unary_op(zval *result, uint32_t opcode, zval *op) /* {{{ */ { if (zend_unary_op_produces_error(opcode, op)) { - return 0; + return false; } const unary_op_type fn = get_unary_op(opcode); fn(result, op); - return 1; + return true; } /* }}} */ @@ -10420,12 +10610,12 @@ static bool zend_try_ct_eval_array(zval *result, zend_ast *ast) /* {{{ */ } if (!is_constant) { - return 0; + return false; } if (!list->children) { ZVAL_EMPTY_ARRAY(result); - return 1; + return true; } array_init_size(result, list->children); @@ -10498,7 +10688,7 @@ static bool zend_try_ct_eval_array(zval *result, zend_ast *ast) /* {{{ */ } } - return 1; + return true; } /* }}} */ @@ -10956,7 +11146,7 @@ static void zend_compile_assign_coalesce(znode *result, zend_ast *ast) /* {{{ */ zend_emit_op_data(&default_node); assign_node = var_node_w; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } opline = zend_emit_op_tmp(NULL, ZEND_QM_ASSIGN, &assign_node, NULL); @@ -11176,7 +11366,7 @@ static void zend_compile_isset_or_empty(znode *result, const zend_ast *ast) /* { opline = zend_compile_static_prop(result, var_ast, BP_VAR_IS, false, false); opline->opcode = ZEND_ISSET_ISEMPTY_STATIC_PROP; break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } result->op_type = opline->result_type = IS_TMP_VAR; @@ -11692,7 +11882,7 @@ static void zend_compile_const_expr_class_name(zend_ast **ast_ptr) /* {{{ */ case ZEND_FETCH_CLASS_STATIC: zend_error_noreturn(E_COMPILE_ERROR, "static::class cannot be used for compile-time class name resolution"); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -11800,11 +11990,18 @@ static void zend_compile_const_expr_fcc(zend_ast **ast_ptr) case ZEND_AST_STATIC_CALL: args_ast = &(*ast_ptr)->child[2]; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } if ((*args_ast)->kind != ZEND_AST_CALLABLE_CONVERT) { zend_error_noreturn(E_COMPILE_ERROR, "Constant expression contains invalid operations"); } + + zend_ast_list *args = zend_ast_get_list(((zend_ast_fcc*)*args_ast)->args); + if (args->children != 1 || args->child[0]->attr != ZEND_PLACEHOLDER_VARIADIC) { + // TODO: PFAs + zend_error_noreturn(E_COMPILE_ERROR, "Constant expression contains invalid operations"); + } + ZEND_MAP_PTR_NEW(((zend_ast_fcc *)*args_ast)->fptr); switch ((*ast_ptr)->kind) { @@ -11838,7 +12035,7 @@ static void zend_compile_const_expr_fcc(zend_ast **ast_ptr) } break; } - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -12130,7 +12327,6 @@ static void zend_compile_expr_inner(znode *result, zend_ast *ast) /* {{{ */ case ZEND_AST_METHOD_CALL: case ZEND_AST_NULLSAFE_METHOD_CALL: case ZEND_AST_STATIC_CALL: - case ZEND_AST_PARENT_PROPERTY_HOOK_CALL: case ZEND_AST_PIPE: zend_compile_var(result, ast, BP_VAR_R, false); return; @@ -12287,9 +12483,6 @@ static zend_op *zend_compile_var_inner(znode *result, zend_ast *ast, uint32_t ty case ZEND_AST_CALL: zend_compile_call(result, ast, type); return NULL; - case ZEND_AST_PARENT_PROPERTY_HOOK_CALL: - zend_compile_parent_property_hook_call(result, ast, type); - return NULL; case ZEND_AST_METHOD_CALL: case ZEND_AST_NULLSAFE_METHOD_CALL: zend_compile_method_call(result, ast, type); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 5414467f3f87..da8aab3fe1dd 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -413,10 +412,11 @@ typedef struct _zend_oparray_context { /* op_array uses strict mode types | | | */ #define ZEND_ACC_STRICT_TYPES (1U << 31) /* | X | | */ /* | | | */ -/* Function Flags 2 (fn_flags2) (unused: 0-31) | | | */ +/* Function Flags 2 (fn_flags2) (unused: 1-31) | | | */ /* ============================ | | | */ /* | | | */ -/* #define ZEND_ACC2_EXAMPLE (1 << 0) | X | | */ +/* Function forbids dynamic calls | | | */ +#define ZEND_ACC2_FORBID_DYN_CALLS (1 << 0) /* | X | | */ #define ZEND_ACC_PPP_MASK (ZEND_ACC_PUBLIC | ZEND_ACC_PROTECTED | ZEND_ACC_PRIVATE) #define ZEND_ACC_PPP_SET_MASK (ZEND_ACC_PUBLIC_SET | ZEND_ACC_PROTECTED_SET | ZEND_ACC_PRIVATE_SET) @@ -430,7 +430,7 @@ static zend_always_inline uint32_t zend_visibility_to_set_visibility(uint32_t vi return ZEND_ACC_PROTECTED_SET; case ZEND_ACC_PRIVATE: return ZEND_ACC_PRIVATE_SET; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -515,6 +515,7 @@ typedef struct _zend_arg_info { zend_string *name; zend_type type; zend_string *default_value; + zend_string *doc_comment; } zend_arg_info; /* the following structure repeats the layout of zend_internal_arg_info, @@ -957,6 +958,7 @@ struct _zend_arena; ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type); ZEND_API zend_op_array *compile_string(zend_string *source_string, const char *filename, zend_compile_position position); ZEND_API zend_op_array *compile_filename(int type, zend_string *filename); +ZEND_API zend_op_array *zend_compile_ast(zend_ast *ast, int type, zend_string *filename); ZEND_API zend_ast *zend_compile_string_to_ast( zend_string *code, struct _zend_arena **ast_arena, zend_string *filename); ZEND_API zend_result zend_execute_scripts(int type, zval *retval, int file_count, ...); @@ -1118,7 +1120,8 @@ ZEND_API zend_string *zend_type_to_string(zend_type type); #define ZEND_THROW_IS_EXPR 1u -#define ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS 1 +#define ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS (1<<0) +#define ZEND_FCALL_USES_VARIADIC_PLACEHOLDER (1<<1) /* The send mode, the is_variadic, the is_promoted, and the is_tentative flags are stored as part of zend_type */ #define _ZEND_SEND_MODE_SHIFT _ZEND_TYPE_EXTRA_FLAGS_SHIFT diff --git a/Zend/zend_config.w32.h b/Zend/zend_config.w32.h index a44a8b9f70d2..629d7b4437f2 100644 --- a/Zend/zend_config.w32.h +++ b/Zend/zend_config.w32.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index 8704c523d113..18292203bee9 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_constants.h b/Zend/zend_constants.h index 3d7f60920bc1..9461ac764c90 100644 --- a/Zend/zend_constants.h +++ b/Zend/zend_constants.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_cpuinfo.c b/Zend/zend_cpuinfo.c index 9f8f1354be06..6fc42ca39e6c 100644 --- a/Zend/zend_cpuinfo.c +++ b/Zend/zend_cpuinfo.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Xinchen Hui | +----------------------------------------------------------------------+ diff --git a/Zend/zend_cpuinfo.h b/Zend/zend_cpuinfo.h index 7e53ba654dd4..513dacfd08f5 100644 --- a/Zend/zend_cpuinfo.h +++ b/Zend/zend_cpuinfo.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Xinchen Hui | +----------------------------------------------------------------------+ @@ -272,8 +271,8 @@ static zend_always_inline int zend_cpu_supports_avx512_vbmi(void) { } #endif -/* __builtin_cpu_supports has pclmul from gcc9 */ -#if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && (!defined(__GNUC__) || (ZEND_GCC_VERSION >= 9000)) +/* __builtin_cpu_supports has pclmul from gcc9 and clang 19 */ +#if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && (!defined(__GNUC__) || (defined(__clang__) && __clang_major__ >= 19) || (ZEND_GCC_VERSION >= 9000)) ZEND_NO_SANITIZE_ADDRESS static inline int zend_cpu_supports_pclmul(void) { #ifdef PHP_HAVE_BUILTIN_CPU_INIT @@ -287,8 +286,9 @@ static inline int zend_cpu_supports_pclmul(void) { } #endif -/* __builtin_cpu_supports has cldemote from gcc11 */ -#if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && defined(__GNUC__) && (ZEND_GCC_VERSION >= 11000) +/* __builtin_cpu_supports has cldemote from gcc11 and clang 19 */ +#if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && ((defined(__clang__) && (__clang_major__ >= 19)) || (!defined(__clang__) && defined(__GNUC__) && (ZEND_GCC_VERSION >= 11000))) +#define HAVE_ZEND_CPU_SUPPORTS_CLDEMOTE 1 ZEND_NO_SANITIZE_ADDRESS static inline int zend_cpu_supports_cldemote(void) { #ifdef PHP_HAVE_BUILTIN_CPU_INIT diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c index 7ab9b8325a39..cc534e04549d 100644 --- a/Zend/zend_default_classes.c +++ b/Zend/zend_default_classes.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sterling Hughes | | Marcus Boerger | diff --git a/Zend/zend_dtrace.c b/Zend/zend_dtrace.c index dfc43a85139b..1052022f3bed 100644 --- a/Zend/zend_dtrace.c +++ b/Zend/zend_dtrace.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: David Soria Parra | +----------------------------------------------------------------------+ diff --git a/Zend/zend_dtrace.d b/Zend/zend_dtrace.d index 6920d0e3602a..9ff085031178 100644 --- a/Zend/zend_dtrace.d +++ b/Zend/zend_dtrace.d @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: David Soria Parra | +----------------------------------------------------------------------+ diff --git a/Zend/zend_dtrace.h b/Zend/zend_dtrace.h index 53ccaca4e407..ada77ce664e3 100644 --- a/Zend/zend_dtrace.h +++ b/Zend/zend_dtrace.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: David Soria Parra | +----------------------------------------------------------------------+ diff --git a/Zend/zend_enum.c b/Zend/zend_enum.c index 6e9c68810d4b..f175e3e6bcc9 100644 --- a/Zend/zend_enum.c +++ b/Zend/zend_enum.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ilija Tovilo | +----------------------------------------------------------------------+ diff --git a/Zend/zend_enum.h b/Zend/zend_enum.h index 4d0799e4f0ac..96c9317d47c0 100644 --- a/Zend/zend_enum.h +++ b/Zend/zend_enum.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ilija Tovilo | +----------------------------------------------------------------------+ diff --git a/Zend/zend_errors.h b/Zend/zend_errors.h index 954be61a0aec..831e4a9b912a 100644 --- a/Zend/zend_errors.h +++ b/Zend/zend_errors.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index bc794fa3b902..d23fb647af9d 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Marcus Boerger | diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h index e5a6be2f32fe..f9b472598012 100644 --- a/Zend/zend_exceptions.h +++ b/Zend/zend_exceptions.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Marcus Boerger | diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 37278c5cb9a2..1fb8f208cff6 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -605,7 +604,7 @@ static zend_never_inline ZEND_COLD zval *zend_wrong_assign_to_variable_reference return zend_assign_to_variable_ex(variable_ptr, value_ptr, IS_TMP_VAR, EX_USES_STRICT_TYPES(), garbage_ptr); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference(uint32_t arg_num) +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference(uint32_t arg_num) { const zend_execute_data *execute_data = EG(current_execute_data); zend_string *func_name = get_function_or_method_name(EX(call)->func); @@ -647,7 +646,7 @@ static zend_never_inline ZEND_COLD void zend_throw_access_uninit_prop_by_ref_err } /* this should modify object only if it's empty */ -static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_throw_non_object_error(const zval *object, zval *property OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_throw_non_object_error(const zval *object, const zval *property OPLINE_DC EXECUTE_DATA_DC) { zend_string *tmp_property_name; zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); @@ -681,7 +680,7 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_throw_non_object_erro } } -static ZEND_COLD void zend_verify_type_error_common( +static zend_never_inline ZEND_COLD void zend_verify_type_error_common( const zend_function *zf, const zend_arg_info *arg_info, const zval *value, const char **fname, const char **fsep, const char **fclass, zend_string **need_msg, const char **given_kind) @@ -704,7 +703,7 @@ static ZEND_COLD void zend_verify_type_error_common( } } -ZEND_API ZEND_COLD void zend_verify_arg_error( +ZEND_API zend_never_inline ZEND_COLD void zend_verify_arg_error( const zend_function *zf, const zend_arg_info *arg_info, uint32_t arg_num, const zval *value) { const zend_execute_data *ptr = EG(current_execute_data)->prev_execute_data; @@ -836,7 +835,7 @@ ZEND_API bool zend_verify_scalar_type_hint(uint32_t type_mask, zval *arg, bool s return zend_verify_weak_scalar_type_hint(type_mask, arg); } -ZEND_COLD zend_never_inline void zend_verify_class_constant_type_error(const zend_class_constant *c, const zend_string *name, const zval *constant) +static zend_never_inline ZEND_COLD void zend_verify_class_constant_type_error(const zend_class_constant *c, const zend_string *name, const zval *constant) { zend_string *type_str = zend_type_to_string(c->type); @@ -846,7 +845,7 @@ ZEND_COLD zend_never_inline void zend_verify_class_constant_type_error(const zen zend_string_release(type_str); } -ZEND_COLD zend_never_inline void zend_verify_property_type_error(const zend_property_info *info, const zval *property) +static zend_never_inline ZEND_COLD void zend_verify_property_type_error(const zend_property_info *info, const zval *property) { zend_string *type_str; @@ -864,7 +863,7 @@ ZEND_COLD zend_never_inline void zend_verify_property_type_error(const zend_prop zend_string_release(type_str); } -ZEND_COLD zend_never_inline void zend_magic_get_property_type_inconsistency_error(const zend_property_info *info, const zval *property) +static zend_never_inline ZEND_COLD void zend_magic_get_property_type_inconsistency_error(const zend_property_info *info, const zval *property) { /* we _may_ land here in case reading already errored and runtime cache thus has not been updated (i.e. it contains a valid but unrelated info) */ if (EG(exception)) { @@ -881,7 +880,7 @@ ZEND_COLD zend_never_inline void zend_magic_get_property_type_inconsistency_erro zend_string_release(type_str); } -ZEND_COLD void zend_match_unhandled_error(const zval *value) +zend_never_inline ZEND_COLD void zend_match_unhandled_error(const zval *value) { zend_long max_len = EG(exception_string_param_max_len); smart_str msg = {0}; @@ -901,35 +900,35 @@ ZEND_COLD void zend_match_unhandled_error(const zval *value) smart_str_free(&msg); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error( +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error( const zend_property_info *info) { zend_readonly_property_modification_error_ex( ZSTR_VAL(info->ce->name), zend_get_unmangled_property_name(info->name)); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error_ex( +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error_ex( const char *class_name, const char *prop_name) { zend_throw_error(NULL, "Cannot modify readonly property %s::$%s", class_name, prop_name); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_indirect_modification_error(const zend_property_info *info) +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_readonly_property_indirect_modification_error(const zend_property_info *info) { zend_throw_error(NULL, "Cannot indirectly modify readonly property %s::$%s", ZSTR_VAL(info->ce->name), zend_get_unmangled_property_name(info->name)); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_invalid_class_constant_type_error(const uint8_t type) +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_invalid_class_constant_type_error(const uint8_t type) { zend_type_error("Cannot use value of type %s as class constant name", zend_get_type_by_const(type)); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_property_error(const zend_property_info *info) +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_property_error(const zend_property_info *info) { zend_throw_error(NULL, "Object was released while assigning to property %s::$%s", ZSTR_VAL(info->ce->name), zend_get_unmangled_property_name(info->name)); } -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error( +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error( const zend_property_info *prop_info, const char *operation ) { const zend_class_entry *scope; @@ -1230,6 +1229,13 @@ static zend_always_inline bool zend_check_type( return zend_check_type_slow(type, arg, ref, is_return_type, is_internal); } +/* We can not expose zend_check_type() directly because it's inline and uses static functions */ +ZEND_API bool zend_check_type_ex( + const zend_type *type, zval *arg, bool is_return_type, bool is_internal) +{ + return zend_check_type(type, arg, is_return_type, is_internal); +} + ZEND_API bool zend_check_user_type_slow( const zend_type *type, zval *arg, const zend_reference *ref, bool is_return_type) { @@ -1322,7 +1328,7 @@ ZEND_API bool zend_internal_call_should_throw(const zend_function *fbc, zend_exe return 0; } -ZEND_API ZEND_COLD void zend_internal_call_arginfo_violation(const zend_function *fbc) +ZEND_API zend_never_inline ZEND_COLD void zend_internal_call_arginfo_violation(const zend_function *fbc) { zend_error_noreturn(E_ERROR, "Arginfo / zpp mismatch during call of %s%s%s()", fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "", @@ -1393,7 +1399,7 @@ static void zend_verify_internal_func_info(const zend_function *fn, const zval * } #endif -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(const zend_execute_data *execute_data) +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(const zend_execute_data *execute_data) { const zend_execute_data *ptr = EX(prev_execute_data); @@ -1418,7 +1424,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(const zend_execute_ } } -ZEND_API ZEND_COLD void zend_verify_return_error(const zend_function *zf, const zval *value) +ZEND_API zend_never_inline ZEND_COLD void zend_verify_return_error(const zend_function *zf, const zval *value) { const zend_arg_info *arg_info = &zf->common.arg_info[-1]; const char *fname, *fsep, *fclass; @@ -1434,7 +1440,7 @@ ZEND_API ZEND_COLD void zend_verify_return_error(const zend_function *zf, const zend_string_release(need_msg); } -ZEND_API ZEND_COLD void zend_verify_never_error(const zend_function *zf) +ZEND_API zend_never_inline ZEND_COLD void zend_verify_never_error(const zend_function *zf) { zend_string *func_name = get_function_or_method_name(zf); @@ -1445,7 +1451,7 @@ ZEND_API ZEND_COLD void zend_verify_never_error(const zend_function *zf) } #if ZEND_DEBUG -static ZEND_COLD void zend_verify_internal_return_error(const zend_function *zf, const zval *value) +static zend_never_inline ZEND_COLD void zend_verify_internal_return_error(const zend_function *zf, const zval *value) { const zend_arg_info *arg_info = &zf->common.arg_info[-1]; const char *fname, *fsep, *fclass; @@ -1459,7 +1465,7 @@ static ZEND_COLD void zend_verify_internal_return_error(const zend_function *zf, fclass, fsep, fname, ZSTR_VAL(need_msg), given_msg); } -static ZEND_COLD void zend_verify_void_return_error(const zend_function *zf, const char *returned_msg, const char *returned_kind) +static zend_never_inline ZEND_COLD void zend_verify_void_return_error(const zend_function *zf, const char *returned_msg, const char *returned_kind) { const char *fname = ZSTR_VAL(zf->common.function_name); const char *fsep; @@ -1498,7 +1504,7 @@ ZEND_API bool zend_verify_internal_return_type(const zend_function *zf, zval *re } #endif -static ZEND_COLD void zend_verify_missing_return_type(const zend_function *zf) +static zend_never_inline ZEND_COLD void zend_verify_missing_return_type(const zend_function *zf) { /* VERIFY_RETURN_TYPE is not emitted for "void" functions, so this is always an error. */ zend_verify_return_error(zf, NULL); @@ -1710,7 +1716,7 @@ static zend_never_inline void zend_binary_assign_op_typed_prop(const zend_proper } } -static zend_never_inline zend_long zend_check_string_offset(zval *dim, int type EXECUTE_DATA_DC) +static zend_never_inline zend_long zend_check_string_offset(const zval *dim, int type EXECUTE_DATA_DC) { zend_long offset; @@ -1755,7 +1761,7 @@ static zend_never_inline zend_long zend_check_string_offset(zval *dim, int type return zval_get_long_func(dim, /* is_strict */ false); } -ZEND_API ZEND_COLD void zend_wrong_string_offset_error(void) +ZEND_API zend_never_inline ZEND_COLD void zend_wrong_string_offset_error(void) { const char *msg = NULL; const zend_execute_data *execute_data = EG(current_execute_data); @@ -1789,10 +1795,10 @@ ZEND_API ZEND_COLD void zend_wrong_string_offset_error(void) case ZEND_FETCH_DIM_INCDEC: msg = "Cannot increment/decrement string offsets"; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } ZEND_ASSERT(msg != NULL); zend_throw_error(NULL, "%s", msg); @@ -2185,7 +2191,7 @@ static zend_property_info *zend_get_prop_not_accepting_double(zend_reference *re return NULL; } -static ZEND_COLD zend_long zend_throw_incdec_ref_error(zend_property_info *error_prop OPLINE_DC) +static zend_never_inline ZEND_COLD zend_long zend_throw_incdec_ref_error(const zend_property_info *error_prop OPLINE_DC) { zend_string *type_str = zend_type_to_string(error_prop->type); if (ZEND_IS_INCREMENT(opline->opcode)) { @@ -2207,7 +2213,7 @@ static ZEND_COLD zend_long zend_throw_incdec_ref_error(zend_property_info *error } } -static ZEND_COLD zend_long zend_throw_incdec_prop_error(zend_property_info *prop OPLINE_DC) { +static zend_never_inline ZEND_COLD zend_long zend_throw_incdec_prop_error(const zend_property_info *prop OPLINE_DC) { zend_string *type_str = zend_type_to_string(prop->type); if (ZEND_IS_INCREMENT(opline->opcode)) { zend_type_error("Cannot increment property %s::$%s of type %s past its maximal value", @@ -2258,7 +2264,7 @@ static void zend_incdec_typed_ref(zend_reference *ref, zval *copy OPLINE_DC EXEC } } -static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, zval *copy OPLINE_DC EXECUTE_DATA_DC) +static void zend_incdec_typed_prop(const zend_property_info *prop_info, zval *var_ptr, zval *copy OPLINE_DC EXECUTE_DATA_DC) { zval tmp; @@ -2288,7 +2294,7 @@ static void zend_incdec_typed_prop(zend_property_info *prop_info, zval *var_ptr, } } -static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_info OPLINE_DC EXECUTE_DATA_DC) +static void zend_pre_incdec_property_zval(zval *prop, const zend_property_info *prop_info OPLINE_DC EXECUTE_DATA_DC) { if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { if (ZEND_IS_INCREMENT(opline->opcode)) { @@ -2326,7 +2332,7 @@ static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_i } } -static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_info OPLINE_DC EXECUTE_DATA_DC) +static void zend_post_incdec_property_zval(zval *prop, const zend_property_info *prop_info OPLINE_DC EXECUTE_DATA_DC) { if (EXPECTED(Z_TYPE_P(prop) == IS_LONG)) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(prop)); @@ -2554,13 +2560,13 @@ ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_undefined_method(co zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), ZSTR_VAL(method)); } -static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_invalid_method_call(zval *object, zval *function_name) +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_invalid_method_call(const zval *object, const zval *function_name) { zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_zval_value_name(object)); } -ZEND_API void ZEND_FASTCALL zend_non_static_method_call(const zend_function *fbc) +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_non_static_method_call(const zend_function *fbc) { zend_throw_error( zend_ce_error, @@ -2618,7 +2624,7 @@ ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_call_stack_size_err } #endif /* ZEND_CHECK_STACK_LIMIT */ -static ZEND_COLD void zend_binary_assign_op_dim_slow(zval *container, zval *dim OPLINE_DC EXECUTE_DATA_DC) +static ZEND_COLD void zend_binary_assign_op_dim_slow(const zval *container, const zval *dim OPLINE_DC EXECUTE_DATA_DC) { if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) { if (opline->op2_type == IS_UNUSED) { @@ -3052,7 +3058,7 @@ static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_UNSET(z zend_fetch_dimension_address(result, container_ptr, dim, dim_type, BP_VAR_UNSET EXECUTE_DATA_CC); } -static zend_always_inline void zend_fetch_dimension_address_read(zval *result, zval *container, zval *dim, int dim_type, int type, bool is_list, bool slow EXECUTE_DATA_DC) +static zend_always_inline void zend_fetch_dimension_address_read(zval *result, const zval *container, zval *dim, int dim_type, int type, bool is_list, bool slow EXECUTE_DATA_DC) { zval *retval; @@ -3206,36 +3212,36 @@ static zend_always_inline void zend_fetch_dimension_address_read(zval *result, z } } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_R(zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_R(const zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) { zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 0, 0 EXECUTE_DATA_CC); } -static zend_never_inline void zend_fetch_dimension_address_read_R_slow(zval *container, zval *dim OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_fetch_dimension_address_read_R_slow(const zval *container, zval *dim OPLINE_DC EXECUTE_DATA_DC) { zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, IS_CV, BP_VAR_R, 0, 1 EXECUTE_DATA_CC); } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_IS(zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_read_IS(const zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) { zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_IS, 0, 0 EXECUTE_DATA_CC); } -static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_LIST_r(zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void ZEND_FASTCALL zend_fetch_dimension_address_LIST_r(const zval *container, zval *dim, int dim_type OPLINE_DC EXECUTE_DATA_DC) { zval *result = EX_VAR(opline->result.var); zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_R, 1, 0 EXECUTE_DATA_CC); } -ZEND_API void zend_fetch_dimension_const(zval *result, zval *container, zval *dim, int type) +ZEND_API void zend_fetch_dimension_const(zval *result, const zval *container, zval *dim, int type) { zend_fetch_dimension_address_read(result, container, dim, IS_TMP_VAR, type, 0, 0 NO_EXECUTE_DATA_CC); } -static zend_never_inline zval* ZEND_FASTCALL zend_find_array_dim_slow(HashTable *ht, zval *offset EXECUTE_DATA_DC) +static zend_never_inline zval* ZEND_FASTCALL zend_find_array_dim_slow(HashTable *ht, const zval *offset EXECUTE_DATA_DC) { zend_ulong hval; @@ -3290,7 +3296,7 @@ static zend_never_inline zval* ZEND_FASTCALL zend_find_array_dim_slow(HashTable } } -static zend_never_inline bool ZEND_FASTCALL zend_isset_dim_slow(zval *container, zval *offset EXECUTE_DATA_DC) +static zend_never_inline bool ZEND_FASTCALL zend_isset_dim_slow(const zval *container, zval *offset EXECUTE_DATA_DC) { if (/*OP2_TYPE == IS_CV &&*/ UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) { offset = ZVAL_UNDEFINED_OP2(); @@ -3329,7 +3335,7 @@ static zend_never_inline bool ZEND_FASTCALL zend_isset_dim_slow(zval *container, } } -static zend_never_inline bool ZEND_FASTCALL zend_isempty_dim_slow(zval *container, zval *offset EXECUTE_DATA_DC) +static zend_never_inline bool ZEND_FASTCALL zend_isempty_dim_slow(const zval *container, zval *offset EXECUTE_DATA_DC) { if (/*OP2_TYPE == IS_CV &&*/ UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) { offset = ZVAL_UNDEFINED_OP2(); @@ -3368,7 +3374,7 @@ static zend_never_inline bool ZEND_FASTCALL zend_isempty_dim_slow(zval *containe } } -static zend_never_inline bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable *ht, zval *key OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable *ht, const zval *key OPLINE_DC EXECUTE_DATA_DC) { zend_string *str; zend_ulong hval; @@ -3426,8 +3432,8 @@ static zend_never_inline bool ZEND_FASTCALL zend_array_key_exists_fast(HashTable } } -static ZEND_COLD void ZEND_FASTCALL zend_array_key_exists_error( - zval *subject, zval *key OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_array_key_exists_error( + const zval *subject, const zval *key OPLINE_DC EXECUTE_DATA_DC) { if (Z_TYPE_P(key) == IS_UNDEF) { ZVAL_UNDEFINED_OP1(); @@ -3441,7 +3447,7 @@ static ZEND_COLD void ZEND_FASTCALL zend_array_key_exists_error( } } -static zend_always_inline bool promotes_to_array(zval *val) { +static zend_always_inline bool promotes_to_array(const zval *val) { return Z_TYPE_P(val) <= IS_FALSE || (Z_ISREF_P(val) && Z_TYPE_P(Z_REFVAL_P(val)) <= IS_FALSE); } @@ -3500,13 +3506,23 @@ static zend_never_inline bool zend_handle_fetch_obj_flags( ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(ptr), prop_info); } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return 1; } -static zend_always_inline void zend_fetch_property_address(zval *result, zval *container, uint32_t container_op_type, zval *prop_ptr, uint32_t prop_op_type, void **cache_slot, int type, uint32_t flags, zend_property_info **prop_info_p OPLINE_DC EXECUTE_DATA_DC) -{ +static zend_always_inline void zend_fetch_property_address( + zval *result, + const zval *container, + uint32_t container_op_type, + const zval *prop_ptr, + uint32_t prop_op_type, + void **cache_slot, + int type, + uint32_t flags, + zend_property_info **prop_info_p + OPLINE_DC EXECUTE_DATA_DC +) { zval *ptr; zend_object *zobj; zend_string *name, *tmp_name; @@ -3651,8 +3667,14 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c } } -static zend_always_inline void zend_assign_to_property_reference(zval *container, uint32_t container_op_type, zval *prop_ptr, uint32_t prop_op_type, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) -{ +static zend_always_inline void zend_assign_to_property_reference( + const zval *container, + uint32_t container_op_type, + const zval *prop_ptr, + uint32_t prop_op_type, + zval *value_ptr + OPLINE_DC EXECUTE_DATA_DC +) { zval variable, *variable_ptr = &variable; void **cache_addr = (prop_op_type == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL; zend_refcounted *garbage = NULL; @@ -3690,25 +3712,25 @@ static zend_always_inline void zend_assign_to_property_reference(zval *container } } -static zend_never_inline void zend_assign_to_property_reference_this_const(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_this_const(const zval *container, const zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) { zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline void zend_assign_to_property_reference_var_const(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_var_const(const zval *container, const zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) { zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_CONST, value_ptr OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline void zend_assign_to_property_reference_this_var(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_this_var(const zval *container, const zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) { zend_assign_to_property_reference(container, IS_UNUSED, prop_ptr, IS_VAR, value_ptr OPLINE_CC EXECUTE_DATA_CC); } -static zend_never_inline void zend_assign_to_property_reference_var_var(zval *container, zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) +static zend_never_inline void zend_assign_to_property_reference_var_var(const zval *container, const zval *prop_ptr, zval *value_ptr OPLINE_DC EXECUTE_DATA_DC) { zend_assign_to_property_reference(container, IS_VAR, prop_ptr, IS_VAR, value_ptr OPLINE_CC EXECUTE_DATA_CC); @@ -3879,7 +3901,7 @@ ZEND_API zval* ZEND_FASTCALL zend_fetch_static_property(zend_execute_data *ex, i return result; } -ZEND_API ZEND_COLD void zend_throw_ref_type_error_type(const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv) { +ZEND_API zend_never_inline ZEND_COLD void zend_throw_ref_type_error_type(const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv) { zend_string *type1_str = zend_type_to_string(prop1->type); zend_string *type2_str = zend_type_to_string(prop2->type); zend_type_error("Reference with value of type %s held by property %s::$%s of type %s is not compatible with property %s::$%s of type %s", @@ -3895,7 +3917,7 @@ ZEND_API ZEND_COLD void zend_throw_ref_type_error_type(const zend_property_info zend_string_release(type2_str); } -ZEND_API ZEND_COLD void zend_throw_ref_type_error_zval(const zend_property_info *prop, const zval *zv) { +ZEND_API zend_never_inline ZEND_COLD void zend_throw_ref_type_error_zval(const zend_property_info *prop, const zval *zv) { zend_string *type_str = zend_type_to_string(prop->type); zend_type_error("Cannot assign %s to reference held by property %s::$%s of type %s", zend_zval_value_name(zv), @@ -3906,7 +3928,7 @@ ZEND_API ZEND_COLD void zend_throw_ref_type_error_zval(const zend_property_info zend_string_release(type_str); } -ZEND_API ZEND_COLD void zend_throw_conflicting_coercion_error(const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv) { +static zend_never_inline ZEND_COLD void zend_throw_conflicting_coercion_error(const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv) { zend_string *type1_str = zend_type_to_string(prop1->type); zend_string *type2_str = zend_type_to_string(prop2->type); zend_type_error("Cannot assign %s to reference held by property %s::$%s of type %s and property %s::$%s of type %s, as this would result in an inconsistent type conversion", @@ -4220,7 +4242,7 @@ static zend_never_inline void zend_fetch_this_var(int type OPLINE_DC EXECUTE_DAT ZVAL_UNDEF(result); zend_throw_error(NULL, "Cannot unset $this"); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -4481,7 +4503,7 @@ ZEND_API zend_function * ZEND_FASTCALL zend_fetch_function(zend_string *name) /* ZEND_API zend_function * ZEND_FASTCALL zend_fetch_function_str(const char *name, size_t len) /* {{{ */ { - zval *zv = zend_hash_str_find(EG(function_table), name, len); + const zval *zv = zend_hash_str_find(EG(function_table), name, len); if (EXPECTED(zv != NULL)) { zend_function *fbc = Z_FUNC_P(zv); @@ -4651,6 +4673,7 @@ ZEND_API void zend_unfinished_calls_gc(zend_execute_data *execute_data, zend_exe case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: level++; break; case ZEND_INIT_FCALL: @@ -4707,6 +4730,7 @@ ZEND_API void zend_unfinished_calls_gc(zend_execute_data *execute_data, zend_exe case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: level++; break; case ZEND_INIT_FCALL: @@ -4787,6 +4811,7 @@ static void cleanup_unfinished_calls(zend_execute_data *execute_data, uint32_t o case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: level++; break; case ZEND_INIT_FCALL: @@ -4844,6 +4869,7 @@ static void cleanup_unfinished_calls(zend_execute_data *execute_data, uint32_t o case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: level++; break; case ZEND_INIT_FCALL: @@ -4890,9 +4916,7 @@ static void cleanup_unfinished_calls(zend_execute_data *execute_data, uint32_t o static void cleanup_live_vars(zend_execute_data *execute_data, uint32_t op_num, uint32_t catch_op_num) /* {{{ */ { - int i; - - for (i = 0; i < EX(func)->op_array.last_live_range; i++) { + for (uint32_t i = 0; i < EX(func)->op_array.last_live_range; i++) { const zend_live_range *range = &EX(func)->op_array.live_range[i]; if (range->start > op_num) { /* further blocks will not be relevant... */ @@ -4905,7 +4929,7 @@ static void cleanup_live_vars(zend_execute_data *execute_data, uint32_t op_num, /* Handle the split range for loop vars */ if (catch_op_num) { - zend_op *final_op = EX(func)->op_array.opcodes + range->end; + const zend_op *final_op = EX(func)->op_array.opcodes + range->end; if (final_op->extended_value & ZEND_FREE_ON_RETURN && (final_op->opcode == ZEND_FE_FREE || final_op->opcode == ZEND_FREE)) { if (catch_op_num < range->end + final_op->op2.num) { continue; @@ -5193,7 +5217,7 @@ static zend_never_inline zend_execute_data *zend_init_dynamic_call_object(zend_o } /* }}} */ -static zend_never_inline zend_execute_data *zend_init_dynamic_call_array(zend_array *function, uint32_t num_args) /* {{{ */ +static zend_never_inline zend_execute_data *zend_init_dynamic_call_array(const zend_array *function, uint32_t num_args) /* {{{ */ { zend_function *fbc; void *object_or_called_scope; @@ -5284,7 +5308,7 @@ static zend_never_inline zend_execute_data *zend_init_dynamic_call_array(zend_ar #define ZEND_FAKE_OP_ARRAY ((zend_op_array*)(intptr_t)-1) -static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval *inc_filename_zv, int type) /* {{{ */ +static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(const zval *inc_filename_zv, int type) /* {{{ */ { zend_op_array *new_op_array = NULL; zend_string *tmp_inc_filename; @@ -5357,7 +5381,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval efree(eval_desc); } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } zend_tmp_string_release(tmp_inc_filename); @@ -5555,9 +5579,10 @@ zval * ZEND_FASTCALL zend_handle_named_arg( } } else { arg = ZEND_CALL_VAR_NUM(call, arg_offset); + if (UNEXPECTED(!Z_ISUNDEF_P(arg))) { - zend_throw_error(NULL, "Named parameter $%s overwrites previous argument", - ZSTR_VAL(arg_name)); + zend_throw_error(NULL, "Named parameter $%s overwrites previous %s", + ZSTR_VAL(arg_name), Z_TYPE_P(arg) == _IS_PLACEHOLDER ? "placeholder" : "argument"); return NULL; } } diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index ef385b3ac4dc..48f7e7a72530 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -61,7 +60,7 @@ ZEND_API zend_result zend_eval_stringl_ex(const char *str, size_t str_len, zval /* export zend_pass_function to allow comparisons against it */ extern ZEND_API const zend_internal_function zend_pass_function; -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(const zend_execute_data *execute_data); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(const zend_execute_data *execute_data); ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_function(const zend_function *fbc); ZEND_API ZEND_COLD void ZEND_FASTCALL zend_nodiscard_function(const zend_function *fbc); ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_class_constant(const zend_class_constant *c, const zend_string *constant_name); @@ -81,39 +80,41 @@ typedef enum { ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref_ex(const zend_property_info *prop_info, zval *orig_val, bool strict, zend_verify_prop_assignable_by_ref_context context); ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref(const zend_property_info *prop_info, zval *orig_val, bool strict); -ZEND_API ZEND_COLD void zend_throw_ref_type_error_zval(const zend_property_info *prop, const zval *zv); -ZEND_API ZEND_COLD void zend_throw_ref_type_error_type(const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv); +ZEND_API zend_never_inline ZEND_COLD void zend_throw_ref_type_error_zval(const zend_property_info *prop, const zval *zv); +ZEND_API zend_never_inline ZEND_COLD void zend_throw_ref_type_error_type(const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv); ZEND_API ZEND_COLD zval* ZEND_FASTCALL zend_undefined_offset_write(HashTable *ht, zend_long lval); ZEND_API ZEND_COLD zval* ZEND_FASTCALL zend_undefined_index_write(HashTable *ht, zend_string *offset); -ZEND_API ZEND_COLD void zend_wrong_string_offset_error(void); +ZEND_API zend_never_inline ZEND_COLD void zend_wrong_string_offset_error(void); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error(const zend_property_info *info); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error_ex(const char *class_name, const char *prop_name); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_indirect_modification_error(const zend_property_info *info); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error(const zend_property_info *info); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error_ex(const char *class_name, const char *prop_name); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_readonly_property_indirect_modification_error(const zend_property_info *info); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_invalid_class_constant_type_error(uint8_t type); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_invalid_class_constant_type_error(uint8_t type); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_property_error(const zend_property_info *info); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_property_error(const zend_property_info *info); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_add_element(void); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_cannot_add_element(void); ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access(const zend_property_info *prop_info); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error(const zend_property_info *prop_info, const char *operation); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error(const zend_property_info *prop_info, const char *operation); ZEND_API bool zend_verify_scalar_type_hint(uint32_t type_mask, zval *arg, bool strict, bool is_internal_arg); -ZEND_API ZEND_COLD void zend_verify_arg_error( +ZEND_API zend_never_inline ZEND_COLD void zend_verify_arg_error( const zend_function *zf, const zend_arg_info *arg_info, uint32_t arg_num, const zval *value); -ZEND_API ZEND_COLD void zend_verify_return_error( +ZEND_API zend_never_inline ZEND_COLD void zend_verify_return_error( const zend_function *zf, const zval *value); -ZEND_API ZEND_COLD void zend_verify_never_error( +ZEND_API zend_never_inline ZEND_COLD void zend_verify_never_error( const zend_function *zf); ZEND_API bool zend_verify_ref_array_assignable(zend_reference *ref); ZEND_API bool zend_check_user_type_slow( const zend_type *type, zval *arg, const zend_reference *ref, bool is_return_type); +ZEND_API bool zend_check_type_ex( + const zend_type *type, zval *arg, bool is_return_type, bool is_internal); #if ZEND_DEBUG ZEND_API bool zend_internal_call_should_throw(const zend_function *fbc, zend_execute_data *call); -ZEND_API ZEND_COLD void zend_internal_call_arginfo_violation(const zend_function *fbc); +ZEND_API zend_never_inline ZEND_COLD void zend_internal_call_arginfo_violation(const zend_function *fbc); ZEND_API bool zend_verify_internal_return_type(const zend_function *zf, zval *ret); #endif @@ -135,7 +136,7 @@ ZEND_API void ZEND_FASTCALL zend_ref_del_type_source(zend_property_info_source_l ZEND_API zval* zend_assign_to_typed_ref(zval *variable_ptr, zval *value, uint8_t value_type, bool strict); ZEND_API zval* zend_assign_to_typed_ref_ex(zval *variable_ptr, zval *value, uint8_t value_type, bool strict, zend_refcounted **garbage_ptr); -static zend_always_inline void zend_copy_to_variable(zval *variable_ptr, zval *value, uint8_t value_type) +static zend_always_inline void zend_copy_to_variable(zval *variable_ptr, const zval *value, uint8_t value_type) { zend_refcounted *ref = NULL; @@ -211,7 +212,7 @@ static zend_always_inline zval* zend_assign_to_variable_ex(zval *variable_ptr, z return variable_ptr; } -static zend_always_inline void zend_safe_assign_to_variable_noref(zval *variable_ptr, zval *value) { +static zend_always_inline void zend_safe_assign_to_variable_noref(zval *variable_ptr, const zval *value) { if (Z_REFCOUNTED_P(variable_ptr)) { ZEND_ASSERT(Z_TYPE_P(variable_ptr) != IS_REFERENCE); zend_refcounted *ref = Z_COUNTED_P(variable_ptr); @@ -472,7 +473,7 @@ ZEND_API zend_string *zend_get_executed_filename_ex(void); ZEND_API uint32_t zend_get_executed_lineno(void); ZEND_API zend_class_entry *zend_get_executed_scope(void); ZEND_API bool zend_is_executing(void); -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference(uint32_t arg_num); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference(uint32_t arg_num); ZEND_API void zend_set_timeout(zend_long seconds, bool reset_signals); ZEND_API void zend_unset_timeout(void); @@ -485,7 +486,7 @@ ZEND_API zend_function * ZEND_FASTCALL zend_fetch_function(zend_string *name); ZEND_API zend_function * ZEND_FASTCALL zend_fetch_function_str(const char *name, size_t len); ZEND_API void ZEND_FASTCALL zend_init_func_run_time_cache(zend_op_array *op_array); -ZEND_API void zend_fetch_dimension_const(zval *result, zval *container, zval *dim, int type); +ZEND_API void zend_fetch_dimension_const(zval *result, const zval *container, zval *dim, int type); ZEND_API zval* zend_get_compiled_variable_value(const zend_execute_data *execute_data_ptr, uint32_t var); @@ -512,7 +513,7 @@ ZEND_API ZEND_ATTRIBUTE_DEPRECATED HashTable *zend_unfinished_execution_gc(zend_ ZEND_API HashTable *zend_unfinished_execution_gc_ex(zend_execute_data *execute_data, zend_execute_data *call, zend_get_gc_buffer *gc_buffer, bool suspended_by_yield); ZEND_API zval* ZEND_FASTCALL zend_fetch_static_property(zend_execute_data *ex, int fetch_type); ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_undefined_method(const zend_class_entry *ce, const zend_string *method); -ZEND_API void ZEND_FASTCALL zend_non_static_method_call(const zend_function *fbc); +ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_non_static_method_call(const zend_function *fbc); ZEND_API void zend_frameless_observed_call(zend_execute_data *execute_data); @@ -586,11 +587,8 @@ ZEND_API zend_result ZEND_FASTCALL zend_handle_undef_args(zend_execute_data *cal ZEND_API bool zend_verify_class_constant_type(const zend_class_constant *c, const zend_string *name, zval *constant); -ZEND_COLD void zend_verify_class_constant_type_error(const zend_class_constant *c, const zend_string *name, const zval *constant); ZEND_API bool zend_verify_property_type(const zend_property_info *info, zval *property, bool strict); -ZEND_COLD void zend_verify_property_type_error(const zend_property_info *info, const zval *property); -ZEND_COLD void zend_magic_get_property_type_inconsistency_error(const zend_property_info *info, const zval *property); #define ZEND_REF_ADD_TYPE_SOURCE(ref, source) \ zend_ref_add_type_source(&ZEND_REF_TYPE_SOURCES(ref), source) @@ -619,7 +617,7 @@ ZEND_COLD void zend_magic_get_property_type_inconsistency_error(const zend_prope } \ } while (0) -ZEND_COLD void zend_match_unhandled_error(const zval *value); +zend_never_inline ZEND_COLD void zend_match_unhandled_error(const zval *value); /* Call this to handle the timeout or the interrupt function. It will set * EG(vm_interrupt) to false. diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 30ed4f5914cf..dc302cc43dd5 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -39,6 +38,7 @@ #include "zend_observer.h" #include "zend_call_stack.h" #include "zend_frameless_function.h" +#include "zend_partial.h" #ifdef HAVE_SYS_TIME_H #include #endif @@ -202,6 +202,7 @@ void init_executor(void) /* {{{ */ zend_weakrefs_init(); zend_hash_init(&EG(callable_convert_cache), 8, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(&EG(partial_function_application_cache), 8, NULL, zend_partial_op_array_dtor, 0); EG(active) = 1; } @@ -419,6 +420,7 @@ ZEND_API void zend_shutdown_executor_values(bool fast_shutdown) zend_stack_clean(&EG(user_exception_handlers), (void (*)(void *))ZVAL_PTR_DTOR, 1); zend_hash_clean(&EG(callable_convert_cache)); + zend_hash_clean(&EG(partial_function_application_cache)); #if ZEND_DEBUG if (!CG(unclean_shutdown)) { @@ -515,6 +517,7 @@ void shutdown_executor(void) /* {{{ */ } zend_hash_destroy(&EG(callable_convert_cache)); + zend_hash_destroy(&EG(partial_function_application_cache)); } #if ZEND_DEBUG @@ -1025,10 +1028,13 @@ zend_result zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_ if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, fci->retval)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, fci->retval); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(fci->retval) : !Z_ISREF_P(fci->retval)); + ZEND_ASSERT(!(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif ZEND_OBSERVER_FCALL_END(call, fci->retval); @@ -1206,7 +1212,7 @@ ZEND_API zend_class_entry *zend_lookup_class_ex(zend_string *name, zend_string * ALLOC_HASHTABLE(CG(unlinked_uses)); zend_hash_init(CG(unlinked_uses), 0, NULL, NULL, 0); } - zend_hash_index_add_empty_element(CG(unlinked_uses), (zend_long)(uintptr_t)ce); + zend_hash_index_add_empty_element(CG(unlinked_uses), (zend_ulong)(uintptr_t)ce); return ce; } return NULL; @@ -1764,7 +1770,7 @@ zend_class_entry *zend_fetch_class_with_scope( case 0: break; /* Other fetch types are not supported by this function. */ - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ce = zend_lookup_class_ex(class_name, NULL, fetch_type); diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c index a4e5a38f90d8..4459c3015d15 100644 --- a/Zend/zend_extensions.c +++ b/Zend/zend_extensions.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h index 4de8ad5414c2..1e6887e444a6 100644 --- a/Zend/zend_extensions.h +++ b/Zend/zend_extensions.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_fibers.c b/Zend/zend_fibers.c index 248b4f401a71..c91436050856 100644 --- a/Zend/zend_fibers.c +++ b/Zend/zend_fibers.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Aaron Piotrowski | | Martin Schröder | diff --git a/Zend/zend_fibers.h b/Zend/zend_fibers.h index 9442019bfa25..d4726f97ddd2 100644 --- a/Zend/zend_fibers.h +++ b/Zend/zend_fibers.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Aaron Piotrowski | | Martin Schröder | diff --git a/Zend/zend_float.c b/Zend/zend_float.c index 90af0c4a5f90..12fd0fd74f7f 100644 --- a/Zend/zend_float.c +++ b/Zend/zend_float.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Seiler | +----------------------------------------------------------------------+ diff --git a/Zend/zend_float.h b/Zend/zend_float.h index 63e0f6f7f69b..12aa02005c2a 100644 --- a/Zend/zend_float.h +++ b/Zend/zend_float.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Seiler | +----------------------------------------------------------------------+ diff --git a/Zend/zend_frameless_function.c b/Zend/zend_frameless_function.c index 7ccda0cfb570..be390744fd92 100644 --- a/Zend/zend_frameless_function.c +++ b/Zend/zend_frameless_function.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/Zend/zend_frameless_function.h b/Zend/zend_frameless_function.h index d64ca7ee15e2..241507aa99e7 100644 --- a/Zend/zend_frameless_function.h +++ b/Zend/zend_frameless_function.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index 930903ac25e9..5de2b69bf568 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: David Wang | | Dmitry Stogov | diff --git a/Zend/zend_gc.h b/Zend/zend_gc.h index 06f550647bd7..b72b90ccd5ef 100644 --- a/Zend/zend_gc.h +++ b/Zend/zend_gc.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: David Wang | | Dmitry Stogov | diff --git a/Zend/zend_gdb.c b/Zend/zend_gdb.c index 5975d8c29c09..0c2a82a144c0 100644 --- a/Zend/zend_gdb.c +++ b/Zend/zend_gdb.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | diff --git a/Zend/zend_gdb.h b/Zend/zend_gdb.h index aad0fefb097b..554791f5255a 100644 --- a/Zend/zend_gdb.h +++ b/Zend/zend_gdb.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 3bec062e9ce1..52d409f2e69b 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | | Bob Weinand | @@ -179,7 +178,7 @@ static void zend_generator_remove_child(zend_generator_node *node, zend_generato node->child.single = NULL; } else { HashTable *ht = node->child.ht; - zend_hash_index_del(ht, (zend_ulong) child); + zend_hash_index_del(ht, (zend_ulong)(uintptr_t) child); if (node->children == 2) { zend_generator *other_child; ZEND_HASH_FOREACH_PTR(ht, other_child) { @@ -558,7 +557,7 @@ static void zend_generator_add_child(zend_generator *generator, zend_generator * node->child.ht = ht; } - zend_hash_index_add_new_ptr(node->child.ht, (zend_ulong) child, child); + zend_hash_index_add_new_ptr(node->child.ht, (zend_ulong)(uintptr_t) child, child); } ++node->children; diff --git a/Zend/zend_generators.h b/Zend/zend_generators.h index e7b01fb20ad7..73dd9ddc1f91 100644 --- a/Zend/zend_generators.h +++ b/Zend/zend_generators.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | | Bob Weinand | diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index db202dda66cb..e94550247701 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -326,6 +325,7 @@ struct _zend_executor_globals { zend_strtod_state strtod_state; HashTable callable_convert_cache; + HashTable partial_function_application_cache; void *reserved[ZEND_MAX_RESERVED_RESOURCES]; }; diff --git a/Zend/zend_globals_macros.h b/Zend/zend_globals_macros.h index d3cd9f923eee..bde10a0989d1 100644 --- a/Zend/zend_globals_macros.h +++ b/Zend/zend_globals_macros.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 7bcb97c392bc..2913af9c2b5f 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 6d6c29b5e6bc..6a695aeef449 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index c5fc874b9cb5..a3c65932ca4d 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_highlight.h b/Zend/zend_highlight.h index adc1d3c8c81e..2e399f408063 100644 --- a/Zend/zend_highlight.h +++ b/Zend/zend_highlight.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_hrtime.c b/Zend/zend_hrtime.c index 773e0525cadd..819f95c47662 100644 --- a/Zend/zend_hrtime.c +++ b/Zend/zend_hrtime.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Niklas Keller | | Author: Anatol Belski | diff --git a/Zend/zend_hrtime.h b/Zend/zend_hrtime.h index f3bc4deeaf50..464c7e571d5b 100644 --- a/Zend/zend_hrtime.h +++ b/Zend/zend_hrtime.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Niklas Keller | | Author: Anatol Belski | diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index bfa709ba60b6..bf4c84404a67 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -537,7 +536,7 @@ static inheritance_status zend_is_class_subtype_of_type( return INHERITANCE_SUCCESS; } continue; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -2766,6 +2765,19 @@ static void emit_incompatible_trait_constant_error( ); } +static void emit_trait_constant_enum_case_conflict_error( + const zend_class_entry *ce, const zend_class_constant *trait_constant, zend_string *name +) { + zend_error_noreturn(E_COMPILE_ERROR, + "Cannot use trait %s, because %s::%s conflicts with enum case %s::%s", + ZSTR_VAL(trait_constant->ce->name), + ZSTR_VAL(trait_constant->ce->name), + ZSTR_VAL(name), + ZSTR_VAL(ce->name), + ZSTR_VAL(name) + ); +} + static bool do_trait_constant_check( zend_class_entry *ce, zend_class_constant *trait_constant, zend_string *name, zend_class_entry **traits, size_t current_trait ) { @@ -2779,6 +2791,11 @@ static bool do_trait_constant_check( zend_class_constant *existing_constant = Z_PTR_P(zv); + if (UNEXPECTED(ZEND_CLASS_CONST_FLAGS(existing_constant) & ZEND_CLASS_CONST_IS_CASE)) { + emit_trait_constant_enum_case_conflict_error(ce, trait_constant, name); + return false; + } + if ((ZEND_CLASS_CONST_FLAGS(trait_constant) & flags_mask) != (ZEND_CLASS_CONST_FLAGS(existing_constant) & flags_mask)) { emit_incompatible_trait_constant_error(ce, existing_constant, trait_constant, name, traits, current_trait); return false; @@ -3308,7 +3325,7 @@ static void check_unrecoverable_load_failure(const zend_class_entry *ce) { * a dependence on the inheritance hierarchy of this specific class. Instead we fall back to * a fatal error, as would happen if we did not allow exceptions in the first place. */ if (CG(unlinked_uses) - && zend_hash_index_del(CG(unlinked_uses), (zend_long)(uintptr_t)ce) == SUCCESS) { + && zend_hash_index_del(CG(unlinked_uses), (zend_ulong)(uintptr_t)ce) == SUCCESS) { zend_exception_uncaught_error( "During inheritance of %s with variance dependencies", ZSTR_VAL(ce->name)); } @@ -3603,7 +3620,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string } if (CG(unlinked_uses)) { - zend_hash_index_del(CG(unlinked_uses), (zend_long)(uintptr_t) ce); + zend_hash_index_del(CG(unlinked_uses), (zend_ulong)(uintptr_t) ce); } orig_linking_class = CG(current_linking_class); diff --git a/Zend/zend_inheritance.h b/Zend/zend_inheritance.h index 7171a9385f3b..fdcbd95764b3 100644 --- a/Zend/zend_inheritance.h +++ b/Zend/zend_inheritance.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c index 85739415feb3..e4aec28c7b07 100644 --- a/Zend/zend_ini.c +++ b/Zend/zend_ini.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h index d2419bb160fd..16bc234d5849 100644 --- a/Zend/zend_ini.h +++ b/Zend/zend_ini.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index 748ccd2235a6..d35853ab5acd 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -4,15 +4,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | | Jani Taskinen | @@ -57,7 +56,7 @@ static int get_int_val(zval *op) { zend_string_free(Z_STR_P(op)); return val; } - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } diff --git a/Zend/zend_ini_scanner.h b/Zend/zend_ini_scanner.h index 9a6c84fce429..c013564a10f4 100644 --- a/Zend/zend_ini_scanner.h +++ b/Zend/zend_ini_scanner.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l index 5f9b77e6a3d8..7fd51654ac82 100644 --- a/Zend/zend_ini_scanner.l +++ b/Zend/zend_ini_scanner.l @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | | Jani Taskinen | diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index 404dd9db893e..49169dfca234 100644 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/Zend/zend_interfaces.h b/Zend/zend_interfaces.h index 883e482f510c..3aeac4fc8146 100644 --- a/Zend/zend_interfaces.h +++ b/Zend/zend_interfaces.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c index 64dbb0541a80..c05434486f89 100644 --- a/Zend/zend_iterators.c +++ b/Zend/zend_iterators.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Marcus Boerger | diff --git a/Zend/zend_iterators.h b/Zend/zend_iterators.h index 75549188ed6b..973903768405 100644 --- a/Zend/zend_iterators.h +++ b/Zend/zend_iterators.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Marcus Boerger | diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index e2686c7e1c5a..b4dda00404ea 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -3,15 +3,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -821,9 +820,9 @@ parameter: { $$ = zend_ast_create_ex(ZEND_AST_PARAM, $1 | $3 | $4, $2, $5, NULL, NULL, $6 ? zend_ast_create_zval_from_str($6) : NULL, $7); } | optional_cpp_modifiers optional_type_without_static - is_reference is_variadic T_VARIABLE backup_doc_comment '=' expr optional_property_hook_list - { $$ = zend_ast_create_ex(ZEND_AST_PARAM, $1 | $3 | $4, $2, $5, $8, - NULL, $6 ? zend_ast_create_zval_from_str($6) : NULL, $9); } + is_reference is_variadic T_VARIABLE '=' expr backup_doc_comment optional_property_hook_list + { $$ = zend_ast_create_ex(ZEND_AST_PARAM, $1 | $3 | $4, $2, $5, $7, + NULL, $8 ? zend_ast_create_zval_from_str($8) : NULL, $9); } ; optional_type_without_static: @@ -1059,13 +1058,13 @@ trait_alias: trait_method_reference: identifier - { $$ = zend_ast_create(ZEND_AST_METHOD_REFERENCE, NULL, $1); } + { $$ = zend_ast_create(ZEND_AST_TRAIT_METHOD_REFERENCE, NULL, $1); } | absolute_trait_method_reference { $$ = $1; } ; absolute_trait_method_reference: class_name T_PAAMAYIM_NEKUDOTAYIM identifier - { $$ = zend_ast_create(ZEND_AST_METHOD_REFERENCE, $1, $3); } + { $$ = zend_ast_create(ZEND_AST_TRAIT_METHOD_REFERENCE, $1, $3); } ; method_body: diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index c494564ba234..e502d91411b5 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 1c985189fd3c..f4fba2240784 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | | Nuno Lopes | @@ -591,6 +590,43 @@ ZEND_API zend_result open_file_for_scanning(zend_file_handle *file_handle) return SUCCESS; } +static zend_op_array *zend_compile_ast_internal(int type) +{ + ZEND_ASSERT(CG(in_compilation)); + ZEND_ASSERT(CG(ast)); + + uint32_t last_lineno = CG(zend_lineno); + zend_file_context original_file_context; + zend_oparray_context original_oparray_context; + zend_op_array *original_active_op_array = CG(active_op_array); + + zend_op_array *op_array = emalloc(sizeof(*op_array)); + init_op_array(op_array, type, INITIAL_OP_ARRAY_SIZE); + CG(active_op_array) = op_array; + + /* Use heap to not waste arena memory */ + op_array->fn_flags |= ZEND_ACC_HEAP_RT_CACHE; + + if (zend_ast_process) { + zend_ast_process(CG(ast)); + } + + zend_file_context_begin(&original_file_context); + zend_oparray_context_begin(&original_oparray_context, op_array); + zend_compile_top_stmt(CG(ast)); + CG(zend_lineno) = last_lineno; + zend_emit_final_return(type == ZEND_USER_FUNCTION); + op_array->line_start = 1; + op_array->line_end = last_lineno; + pass_two(op_array); + zend_oparray_context_end(&original_oparray_context); + zend_file_context_end(&original_file_context); + + CG(active_op_array) = original_active_op_array; + + return op_array; +} + static zend_op_array *zend_compile(zend_function_type type) { zend_op_array *op_array = NULL; @@ -601,34 +637,7 @@ static zend_op_array *zend_compile(zend_function_type type) CG(ast_arena) = zend_arena_create(1024 * 32); if (!zendparse()) { - uint32_t last_lineno = CG(zend_lineno); - zend_file_context original_file_context; - zend_oparray_context original_oparray_context; - zend_op_array *original_active_op_array = CG(active_op_array); - - op_array = emalloc(sizeof(zend_op_array)); - init_op_array(op_array, type, INITIAL_OP_ARRAY_SIZE); - CG(active_op_array) = op_array; - - /* Use heap to not waste arena memory */ - op_array->fn_flags |= ZEND_ACC_HEAP_RT_CACHE; - - if (zend_ast_process) { - zend_ast_process(CG(ast)); - } - - zend_file_context_begin(&original_file_context); - zend_oparray_context_begin(&original_oparray_context, op_array); - zend_compile_top_stmt(CG(ast)); - CG(zend_lineno) = last_lineno; - zend_emit_final_return(type == ZEND_USER_FUNCTION); - op_array->line_start = 1; - op_array->line_end = last_lineno; - pass_two(op_array); - zend_oparray_context_end(&original_oparray_context); - zend_file_context_end(&original_file_context); - - CG(active_op_array) = original_active_op_array; + op_array = zend_compile_ast_internal(type); } zend_ast_destroy(CG(ast)); @@ -671,6 +680,23 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type) return op_array; } +ZEND_API zend_op_array *zend_compile_ast( + zend_ast *ast, int type, zend_string *filename) +{ + zend_string *original_compiled_filename = CG(compiled_filename); + bool original_in_compilation = CG(in_compilation); + CG(in_compilation) = true; + CG(ast) = ast; + + zend_set_compiled_filename(filename); + zend_op_array *op_array = zend_compile_ast_internal(type); + + CG(in_compilation) = original_in_compilation; + zend_restore_compiled_filename(original_compiled_filename); + + return op_array; +} + ZEND_API zend_ast *zend_compile_string_to_ast( zend_string *code, zend_arena **ast_arena, zend_string *filename) { zval code_zv; diff --git a/Zend/zend_lazy_objects.c b/Zend/zend_lazy_objects.c index e88ecf9fbe65..a8316768ef5f 100644 --- a/Zend/zend_lazy_objects.c +++ b/Zend/zend_lazy_objects.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Arnaud Le Blanc | +----------------------------------------------------------------------+ diff --git a/Zend/zend_lazy_objects.h b/Zend/zend_lazy_objects.h index fc0a908e7ad2..8e66ee3facd6 100644 --- a/Zend/zend_lazy_objects.h +++ b/Zend/zend_lazy_objects.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Arnaud Le Blanc | +----------------------------------------------------------------------+ diff --git a/Zend/zend_list.c b/Zend/zend_list.c index 10aa9174cfcc..4e96ce0ec7da 100644 --- a/Zend/zend_list.c +++ b/Zend/zend_list.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_list.h b/Zend/zend_list.h index 55ccf78dca10..108bd3fc3e7f 100644 --- a/Zend/zend_list.h +++ b/Zend/zend_list.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_llist.c b/Zend/zend_llist.c index 28a275e6fce7..95ce31764bfc 100644 --- a/Zend/zend_llist.c +++ b/Zend/zend_llist.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_llist.h b/Zend/zend_llist.h index 848543eba0a6..a92b8a59648c 100644 --- a/Zend/zend_llist.h +++ b/Zend/zend_llist.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_long.h b/Zend/zend_long.h index fef237701f3b..303bacd03d4c 100644 --- a/Zend/zend_long.h +++ b/Zend/zend_long.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/Zend/zend_map_ptr.h b/Zend/zend_map_ptr.h index 4dfa0e5043ef..af3b5178aa4a 100644 --- a/Zend/zend_map_ptr.h +++ b/Zend/zend_map_ptr.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_max_execution_timer.c b/Zend/zend_max_execution_timer.c index 005ce14868a0..5d0eb1219c0b 100644 --- a/Zend/zend_max_execution_timer.c +++ b/Zend/zend_max_execution_timer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kévin Dunglas | +----------------------------------------------------------------------+ diff --git a/Zend/zend_max_execution_timer.h b/Zend/zend_max_execution_timer.h index 6557d6c91845..3839ea4cf676 100644 --- a/Zend/zend_max_execution_timer.h +++ b/Zend/zend_max_execution_timer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kévin Dunglas | +----------------------------------------------------------------------+ diff --git a/Zend/zend_mmap.h b/Zend/zend_mmap.h index 201fd84d074d..d56196c24687 100644 --- a/Zend/zend_mmap.h +++ b/Zend/zend_mmap.h @@ -1,12 +1,15 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Max Kellermann | +----------------------------------------------------------------------+ diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h index a8076c0fb905..3a98b1c06e29 100644 --- a/Zend/zend_modules.h +++ b/Zend/zend_modules.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_multibyte.c b/Zend/zend_multibyte.c index fc130162f083..28be8126b117 100644 --- a/Zend/zend_multibyte.c +++ b/Zend/zend_multibyte.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Masaki Fujimoto | | Rui Hirokawa | diff --git a/Zend/zend_multibyte.h b/Zend/zend_multibyte.h index 16ba56ec69fd..41480ed6f86b 100644 --- a/Zend/zend_multibyte.h +++ b/Zend/zend_multibyte.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Masaki Fujimoto | | Rui Hirokawa | diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h index 716e3ba4b571..6457f85f64fb 100644 --- a/Zend/zend_multiply.h +++ b/Zend/zend_multiply.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Ard Biesheuvel | diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 7e03139dc426..571aa9e92abc 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -893,6 +892,28 @@ ZEND_API zval *zend_std_read_property(zend_object *zobj, zend_string *name, int retval = &EG(uninitialized_zval); + /* For initialized lazy proxies: if the real instance's magic method + * guard is already set for this property, we are inside a recursive + * call from the real instance's __get/__isset. Forward directly to + * the real instance to avoid double invocation. (GH-21478) */ + if (UNEXPECTED(zend_object_is_lazy_proxy(zobj) + && zend_lazy_object_initialized(zobj))) { + zend_object *instance = zend_lazy_object_get_instance(zobj); + if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) { + uint32_t *instance_guard = zend_get_property_guard(instance, name); + uint32_t guard_type = ((type == BP_VAR_IS) && zobj->ce->__isset) + ? IN_ISSET : IN_GET; + if ((*instance_guard) & guard_type) { + retval = zend_std_read_property(instance, name, type, cache_slot, rv); + if (retval == &EG(uninitialized_zval)) { + ZVAL_NULL(rv); + retval = rv; + } + return retval; + } + } + } + /* magic isset */ if ((type == BP_VAR_IS) && zobj->ce->__isset) { zval tmp_result; @@ -1209,6 +1230,20 @@ found:; goto exit; } + /* For initialized lazy proxies: if the real instance's __set guard + * is already set, we are inside a recursive call from the real + * instance's __set. Forward directly to avoid double invocation. */ + if (UNEXPECTED(zend_object_is_lazy_proxy(zobj) + && zend_lazy_object_initialized(zobj))) { + zend_object *instance = zend_lazy_object_get_instance(zobj); + if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) { + uint32_t *instance_guard = zend_get_property_guard(instance, name); + if ((*instance_guard) & IN_SET) { + return zend_std_write_property(instance, name, value, cache_slot); + } + } + } + /* magic set */ if (zobj->ce->__set) { if (!guard) { @@ -1603,6 +1638,21 @@ ZEND_API void zend_std_unset_property(zend_object *zobj, zend_string *name, void return; } + /* For initialized lazy proxies: if the real instance's __unset guard + * is already set, we are inside a recursive call from the real + * instance's __unset. Forward directly to avoid double invocation. */ + if (UNEXPECTED(zend_object_is_lazy_proxy(zobj) + && zend_lazy_object_initialized(zobj))) { + zend_object *instance = zend_lazy_object_get_instance(zobj); + if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) { + uint32_t *instance_guard = zend_get_property_guard(instance, name); + if ((*instance_guard) & IN_UNSET) { + zend_std_unset_property(instance, name, cache_slot); + return; + } + } + } + /* magic unset */ if (zobj->ce->__unset) { if (!guard) { @@ -1610,9 +1660,11 @@ ZEND_API void zend_std_unset_property(zend_object *zobj, zend_string *name, void } if (!((*guard) & IN_UNSET)) { /* have unsetter - try with it! */ + GC_ADDREF(zobj); (*guard) |= IN_UNSET; /* prevent circular unsetting */ zend_std_call_unsetter(zobj, name); (*guard) &= ~IN_UNSET; + OBJ_RELEASE(zobj); return; } else if (UNEXPECTED(IS_WRONG_PROPERTY_OFFSET(property_offset))) { /* Trigger the correct error */ @@ -2399,6 +2451,20 @@ ZEND_API int zend_std_has_property(zend_object *zobj, zend_string *name, int has goto exit; } + /* For initialized lazy proxies: if the real instance's __isset guard + * is already set, we are inside a recursive call from the real + * instance's __isset. Forward directly to avoid double invocation. */ + if (UNEXPECTED(zend_object_is_lazy_proxy(zobj) + && zend_lazy_object_initialized(zobj))) { + zend_object *instance = zend_lazy_object_get_instance(zobj); + if (instance->ce->ce_flags & ZEND_ACC_USE_GUARDS) { + uint32_t *instance_guard = zend_get_property_guard(instance, name); + if ((*instance_guard) & IN_ISSET) { + return zend_std_has_property(instance, name, has_set_exists, cache_slot); + } + } + } + if (!zobj->ce->__isset) { goto lazy_init; } diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h index 3e922343eb15..ec71c427ffce 100644 --- a/Zend/zend_object_handlers.h +++ b/Zend/zend_object_handlers.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index 6f6a82638944..9fe46b6b6d2a 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_objects.h b/Zend/zend_objects.h index 712fd442da5a..44a8038a0fa7 100644 --- a/Zend/zend_objects.h +++ b/Zend/zend_objects.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c index 2e6ddd2f4d8b..537cad8a3644 100644 --- a/Zend/zend_objects_API.c +++ b/Zend/zend_objects_API.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_objects_API.h b/Zend/zend_objects_API.h index 7fe1b8bbdf1d..694ef398e374 100644 --- a/Zend/zend_objects_API.h +++ b/Zend/zend_objects_API.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_observer.c b/Zend/zend_observer.c index bee20bdbc20d..f5f90c3c1f13 100644 --- a/Zend/zend_observer.c +++ b/Zend/zend_observer.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Levi Morrison | | Sammy Kaye Powers | diff --git a/Zend/zend_observer.h b/Zend/zend_observer.h index cfec5200055a..f4ade29285db 100644 --- a/Zend/zend_observer.h +++ b/Zend/zend_observer.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Levi Morrison | | Sammy Kaye Powers | diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 24b480ad71e6..0c6b22473514 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -648,6 +647,9 @@ ZEND_API void destroy_op_array(zend_op_array *op_array) if (arg_info[i].name) { zend_string_release_ex(arg_info[i].name, 0); } + if (arg_info[i].doc_comment) { + zend_string_release_ex(arg_info[i].doc_comment, 0); + } zend_type_release(arg_info[i].type, /* persistent */ false); } efree(arg_info); diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 58624ea5e1ce..8d861adb394e 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -359,7 +358,7 @@ static zend_never_inline zend_result ZEND_FASTCALL _zendi_try_convert_scalar_to_ case IS_RESOURCE: case IS_ARRAY: return FAILURE; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -461,7 +460,7 @@ static zend_never_inline zend_long ZEND_FASTCALL zendi_try_get_long(const zval * goto try_again; } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -606,7 +605,7 @@ ZEND_API void ZEND_FASTCALL convert_to_long(zval *op) /* {{{ */ case IS_REFERENCE: zend_unwrap_reference(op); goto try_again; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -665,7 +664,7 @@ ZEND_API void ZEND_FASTCALL convert_to_double(zval *op) /* {{{ */ case IS_REFERENCE: zend_unwrap_reference(op); goto try_again; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -747,7 +746,7 @@ ZEND_API void ZEND_FASTCALL convert_to_boolean(zval *op) /* {{{ */ case IS_REFERENCE: zend_unwrap_reference(op); goto try_again; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -805,7 +804,7 @@ ZEND_API void ZEND_FASTCALL _convert_to_string(zval *op) /* {{{ */ case IS_REFERENCE: zend_unwrap_reference(op); goto try_again; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -1014,7 +1013,7 @@ ZEND_API zend_long ZEND_FASTCALL zval_get_long_func(const zval *op, bool is_stri case IS_REFERENCE: op = Z_REFVAL_P(op); goto try_again; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return 0; } @@ -1053,7 +1052,7 @@ ZEND_API double ZEND_FASTCALL zval_get_double_func(const zval *op) /* {{{ */ case IS_REFERENCE: op = Z_REFVAL_P(op); goto try_again; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return 0.0; } @@ -1094,7 +1093,7 @@ static zend_always_inline zend_string* __zval_get_string_func(const zval *op, bo goto try_again; case IS_STRING: return zend_string_copy(Z_STR_P(op)); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return NULL; } @@ -2784,7 +2783,7 @@ ZEND_API zend_result ZEND_FASTCALL increment_function(zval *op1) /* {{{ */ case IS_ARRAY: zend_type_error("Cannot increment %s", zend_zval_value_name(op1)); return FAILURE; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return SUCCESS; } @@ -2891,7 +2890,7 @@ ZEND_API zend_result ZEND_FASTCALL decrement_function(zval *op1) /* {{{ */ case IS_ARRAY: zend_type_error("Cannot decrement %s", zend_zval_value_name(op1)); return FAILURE; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return SUCCESS; diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index 408b2eee65c8..2dc6dbfbfc6d 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_partial.c b/Zend/zend_partial.c new file mode 100644 index 000000000000..a367c7784a1c --- /dev/null +++ b/Zend/zend_partial.c @@ -0,0 +1,1150 @@ +/* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Arnaud Le Blanc | + +----------------------------------------------------------------------+ +*/ + +/** + * Partial Function Application: + * + * A partial application is compiled to the usual sequence of function call + * opcodes (INIT_FCALL, SEND_VAR, etc), but the sequence ends with a + * CALLABLE_CONVERT_PARTIAL opcode instead of DO_FCALL, similarly to + * first class callables. Placeholders are compiled to SEND_PLACEHOLDER opcodes: + * + * $f = f($a, ?) + * + * 0001 INIT_FCALL f + * 0002 SEND_VAR CV($a) + * 0003 SEND_PLACEHOLDER + * 0004 CV($f) = CALLABLE_CONVERT_PARTIAL + * + * SEND_PLACEHOLDER sets the argument slot type to _IS_PLACEHOLDER. + * + * CALLABLE_CONVERT_PARTIAL uses the information available on the stack to + * create a Closure and return it, consuming the stack frame in the process + * like an internal function call. + * + * We create the Closure by generating the relevant AST and compiling it to an + * op_array. The op_array is cached in the Opcache SHM and inline caches. + * + * This file implements the Closure generation logic + * (see zend_partial_create(), zp_compile()). + */ + +#include "zend.h" +#include "zend_API.h" +#include "zend_arena.h" +#include "zend_ast.h" +#include "zend_compile.h" +#include "zend_closures.h" +#include "zend_attributes.h" +#include "zend_exceptions.h" +#include "ext/opcache/ZendAccelerator.h" + +#define Z_IS_PLACEHOLDER_P(p) (Z_TYPE_P(p) == _IS_PLACEHOLDER) + +static zend_always_inline bool zp_is_static_closure(const zend_function *function) { + return ((function->common.fn_flags & (ZEND_ACC_STATIC|ZEND_ACC_CLOSURE)) == (ZEND_ACC_STATIC|ZEND_ACC_CLOSURE)); +} + +static zend_always_inline bool zp_is_non_static_closure(const zend_function *function) { + return ((function->common.fn_flags & (ZEND_ACC_STATIC|ZEND_ACC_CLOSURE)) == ZEND_ACC_CLOSURE); +} + +static zend_never_inline ZEND_COLD void zp_args_underflow( + const zend_function *function, uint32_t args, uint32_t expected) +{ + zend_string *symbol = get_function_or_method_name(function); + const char *limit = function->common.num_args <= function->common.required_num_args ? + "exactly" : "at least"; + + zend_argument_count_error( + "Partial application of %s() expects %s %d arguments, %d given", + ZSTR_VAL(symbol), limit, expected, args); + + zend_string_release(symbol); +} + +static zend_never_inline ZEND_COLD void zp_args_overflow( + const zend_function *function, uint32_t args, uint32_t expected) +{ + zend_string *symbol = get_function_or_method_name(function); + + zend_argument_count_error( + "Partial application of %s() expects at most %d arguments, %d given", + ZSTR_VAL(symbol), expected, args); + + zend_string_release(symbol); +} + +static zend_result zp_args_check(const zend_function *function, + uint32_t argc, const zval *argv, + const zend_array *extra_named_args, + bool uses_variadic_placeholder) { + + if (extra_named_args) { + zval *arg; + zend_string *key; + ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(extra_named_args, key, arg) { + if (UNEXPECTED(Z_IS_PLACEHOLDER_P(arg))) { + zend_throw_error(NULL, + "Cannot use named placeholder for unknown or variadic parameter $%s", + ZSTR_VAL(key)); + return FAILURE; + } + } ZEND_HASH_FOREACH_END(); + } + + if (argc < function->common.required_num_args) { + if (uses_variadic_placeholder) { + /* Missing args will be turned into placeholders */ + return SUCCESS; + } + + zp_args_underflow( + function, argc, function->common.required_num_args); + return FAILURE; + } else if (argc > function->common.num_args && + !(function->common.fn_flags & ZEND_ACC_VARIADIC)) { + zp_args_overflow(function, argc, function->common.num_args); + return FAILURE; + } + + return SUCCESS; +} + +typedef struct zp_names { + zend_string *variadic_param; + zend_string *extra_named_params; + zend_string *inner_closure; + zend_string *params[1]; +} zp_names; + +static bool zp_name_exists(zp_names *names, uint32_t argc, const zend_string *name) +{ + for (uint32_t i = 0; i < argc; i++) { + if (names->params[i] && zend_string_equals(names->params[i], name)) { + return true; + } + } + if (names->variadic_param && zend_string_equals(names->variadic_param, name)) { + return true; + } + if (names->extra_named_params && zend_string_equals(names->extra_named_params, name)) { + return true; + } + if (names->inner_closure && zend_string_equals(names->inner_closure, name)) { + return true; + } + + return false; +} + +static void zp_names_dtor(zp_names *names, uint32_t argc) +{ + for (uint32_t i = 0; i < argc; i++) { + if (names->params[i]) { + zend_string_release(names->params[i]); + } + } + if (names->variadic_param) { + zend_string_release(names->variadic_param); + } + if (names->extra_named_params) { + zend_string_release(names->extra_named_params); + } + if (names->inner_closure) { + zend_string_release(names->inner_closure); + } +} + +static zend_string *zp_get_func_param_name(zend_function *function, uint32_t arg_offset) +{ + return zend_string_copy(function->common.arg_info[arg_offset].name); +} + +/* Assign a name for every variable that will be used in the generated closure, + * including params and used vars. */ +static zp_names *zp_assign_names(uint32_t argc, zval *argv, + zend_function *function, bool variadic_partial, + zend_array *extra_named_params) +{ + zp_names *names = zend_arena_calloc(&CG(ast_arena), + 1, XtOffsetOf(zp_names, params) + sizeof(zend_string*) * argc); + + /* Assign names for params. We never rename those. */ + for (uint32_t offset = 0; offset < MIN(argc, function->common.num_args); offset++) { + if (Z_IS_PLACEHOLDER_P(&argv[offset])) { + names->params[offset] = zp_get_func_param_name(function, offset); + } + } + + /* Assign name for the variadic param. Never renamed. */ + if (variadic_partial && (function->common.fn_flags & ZEND_ACC_VARIADIC)) { + names->variadic_param = zp_get_func_param_name(function, function->common.num_args); + } + + /* Assign names for placeholders that bind to the variadic param: + * + * function f($a, ...$args) {} + * f(?, ?, ...); // The second placeholder binds into the variadic param. + * + * By default these are named $origNameN with N the offset from the + * variadic param. In case of clash we increment N until a free name is + * found. */ + for (uint32_t offset = function->common.num_args; offset < argc; offset++) { + ZEND_ASSERT(function->common.fn_flags & ZEND_ACC_VARIADIC); + if (!Z_IS_PLACEHOLDER_P(&argv[offset])) { + continue; + } + zend_string *orig_name = zp_get_func_param_name(function, function->common.num_args); + zend_string *new_name; + for (uint32_t n = 0;; n++) { + new_name = zend_strpprintf_unchecked(0, "%S%" PRIu32, orig_name, n); + if (!zp_name_exists(names, argc, new_name)) { + break; + } + zend_string_release(new_name); + } + names->params[offset] = new_name; + zend_string_release(orig_name); + } + + /* Assign names for pre-bound params (lexical vars). + * There may be clashes, we ensure to generate unique names. */ + for (uint32_t offset = 0; offset < argc; offset++) { + if (Z_IS_PLACEHOLDER_P(&argv[offset]) || Z_ISUNDEF(argv[offset])) { + continue; + } + uint32_t n = 0; + zend_string *orig_name = zp_get_func_param_name(function, MIN(offset, function->common.num_args)); + zend_string *new_name = zend_string_copy(orig_name); + while (zp_name_exists(names, argc, new_name)) { + zend_string_release(new_name); + new_name = zend_strpprintf_unchecked(0, "%S%" PRIu32, orig_name, n); + n++; + } + names->params[offset] = new_name; + zend_string_release(orig_name); + } + + /* Assign name for $extra_named_params */ + if (extra_named_params) { + uint32_t n = 1; + zend_string *new_name = ZSTR_INIT_LITERAL("extra_named_params", 0); + while (zp_name_exists(names, argc, new_name)) { + zend_string_release(new_name); + n++; + new_name = zend_strpprintf(0, "%s%" PRIu32, "extra_named_params", n); + } + names->extra_named_params = new_name; + } + + /* Assign name for $fn */ + if (function->common.fn_flags & ZEND_ACC_CLOSURE) { + uint32_t n = 1; + zend_string *new_name = ZSTR_INIT_LITERAL("fn", 0); + while (zp_name_exists(names, argc, new_name)) { + zend_string_release(new_name); + n++; + new_name = zend_strpprintf(0, "%s%" PRIu32, "fn", n); + } + names->inner_closure = new_name; + } + + return names; +} + +static inline bool zp_is_power_of_two(uint32_t x) +{ + return (x > 0) && !(x & (x - 1)); +} + +static bool zp_is_simple_type(uint32_t type_mask) +{ + ZEND_ASSERT(!(type_mask & ~_ZEND_TYPE_MAY_BE_MASK)); + + return zp_is_power_of_two(type_mask) + || type_mask == MAY_BE_BOOL + || type_mask == MAY_BE_ANY; +} + +static zend_ast *zp_simple_type_to_ast(uint32_t type) +{ + zend_string *name; + + switch (type) { + case MAY_BE_NULL: + name = ZSTR_KNOWN(ZEND_STR_NULL_LOWERCASE); + break; + case MAY_BE_TRUE: + name = ZSTR_KNOWN(ZEND_STR_TRUE); + break; + case MAY_BE_FALSE: + name = ZSTR_KNOWN(ZEND_STR_FALSE); + break; + case MAY_BE_LONG: + name = ZSTR_KNOWN(ZEND_STR_INT); + break; + case MAY_BE_DOUBLE: + name = ZSTR_KNOWN(ZEND_STR_FLOAT); + break; + case MAY_BE_STRING: + name = ZSTR_KNOWN(ZEND_STR_STRING); + break; + case MAY_BE_BOOL: + name = ZSTR_KNOWN(ZEND_STR_BOOL); + break; + case MAY_BE_VOID: + name = ZSTR_KNOWN(ZEND_STR_VOID); + break; + case MAY_BE_NEVER: + name = ZSTR_KNOWN(ZEND_STR_NEVER); + break; + case MAY_BE_OBJECT: + name = ZSTR_KNOWN(ZEND_STR_OBJECT); + break; + case MAY_BE_ANY: + name = ZSTR_KNOWN(ZEND_STR_MIXED); + break; + case MAY_BE_CALLABLE: + return zend_ast_create_ex(ZEND_AST_TYPE, IS_CALLABLE); + case MAY_BE_ARRAY: + return zend_ast_create_ex(ZEND_AST_TYPE, IS_ARRAY); + case MAY_BE_STATIC: + return zend_ast_create_ex(ZEND_AST_TYPE, IS_STATIC); + default: + ZEND_UNREACHABLE(); + } + + zend_ast *ast = zend_ast_create_zval_from_str(name); + ast->attr = ZEND_NAME_NOT_FQ; + + return ast; +} + +static zend_ast *zp_type_name_to_ast(zend_string *name) +{ + zend_ast *ast = zend_ast_create_zval_from_str(name); + + if (zend_get_class_fetch_type(name) != ZEND_FETCH_CLASS_DEFAULT) { + ast->attr = ZEND_NAME_NOT_FQ; + } else { + ast->attr = ZEND_NAME_FQ; + } + + return ast; +} + +static zend_ast *zp_type_to_ast(const zend_type type) +{ + if (!ZEND_TYPE_IS_SET(type)) { + return NULL; + } + + if (ZEND_TYPE_IS_UNION(type) + || (ZEND_TYPE_IS_COMPLEX(type) && ZEND_TYPE_PURE_MASK(type)) + || (ZEND_TYPE_PURE_MASK(type) && !zp_is_simple_type(ZEND_TYPE_PURE_MASK(type)))) { + zend_ast *type_ast = zend_ast_create_list(0, ZEND_AST_TYPE_UNION); + if (ZEND_TYPE_HAS_LIST(type)) { + const zend_type *type_ptr; + ZEND_TYPE_LIST_FOREACH(ZEND_TYPE_LIST(type), type_ptr) { + type_ast = zend_ast_list_add(type_ast, zp_type_to_ast(*type_ptr)); + } ZEND_TYPE_LIST_FOREACH_END(); + } else if (ZEND_TYPE_HAS_NAME(type)) { + zend_ast *name_ast = zp_type_name_to_ast( + zend_string_copy(ZEND_TYPE_NAME(type))); + type_ast = zend_ast_list_add(type_ast, name_ast); + } else { + ZEND_ASSERT(!ZEND_TYPE_IS_COMPLEX(type)); + } + uint32_t type_mask = ZEND_TYPE_PURE_MASK(type); + if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL) { + type_ast = zend_ast_list_add(type_ast, zp_simple_type_to_ast(MAY_BE_BOOL)); + type_mask &= ~MAY_BE_BOOL; + } + for (uint32_t may_be_type = 1; may_be_type < _ZEND_TYPE_MAY_BE_MASK; may_be_type <<= 1) { + if (type_mask & may_be_type) { + type_ast = zend_ast_list_add(type_ast, zp_simple_type_to_ast(may_be_type)); + } + } + return type_ast; + } + + if (ZEND_TYPE_IS_INTERSECTION(type)) { + ZEND_ASSERT(!ZEND_TYPE_PURE_MASK(type)); + zend_ast *type_ast = zend_ast_create_list(0, ZEND_AST_TYPE_INTERSECTION); + const zend_type *type_ptr; + ZEND_TYPE_LIST_FOREACH(ZEND_TYPE_LIST(type), type_ptr) { + type_ast = zend_ast_list_add(type_ast, zp_type_to_ast(*type_ptr)); + } ZEND_TYPE_LIST_FOREACH_END(); + return type_ast; + } + + if (ZEND_TYPE_HAS_NAME(type)) { + ZEND_ASSERT(!ZEND_TYPE_PURE_MASK(type)); + zend_ast *type_ast = zp_type_name_to_ast( + zend_string_copy(ZEND_TYPE_NAME(type))); + return type_ast; + } + + ZEND_ASSERT(!ZEND_TYPE_IS_COMPLEX(type)); + + uint32_t type_mask = ZEND_TYPE_PURE_MASK(type); + ZEND_ASSERT(zp_is_simple_type(type_mask)); + + return zp_simple_type_to_ast(type_mask); +} + +static zend_result zp_get_param_default_value(zval *result, zend_function *function, uint32_t arg_offset) +{ + ZEND_ASSERT(arg_offset < function->common.num_args); + + if (function->type == ZEND_USER_FUNCTION) { + zend_op *opline = &function->op_array.opcodes[arg_offset]; + if (EXPECTED(opline->opcode == ZEND_RECV_INIT)) { + ZVAL_COPY(result, RT_CONSTANT(opline, opline->op2)); + return SUCCESS; + } + ZEND_ASSERT(opline->opcode == ZEND_RECV); + } else { + if (function->common.fn_flags & ZEND_ACC_USER_ARG_INFO) { + goto error; + } + + const zend_arg_info *arg_info = &function->internal_function.arg_info[arg_offset]; + + if (zend_get_default_from_internal_arg_info(result, arg_info) == SUCCESS) { + return SUCCESS; + } + } + +error: + zend_argument_error_ex(function, arg_offset + 1, + zend_ce_argument_count_error, + "must be passed explicitly, because the default value is not known"); + + return FAILURE; +} + +static bool zp_arg_must_be_sent_by_ref(zend_function *function, uint32_t arg_num) +{ + if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) { + if (QUICK_ARG_MUST_BE_SENT_BY_REF(function, arg_num)) { + return true; + } + } else if (ARG_MUST_BE_SENT_BY_REF(function, arg_num)) { + return true; + } + return false; +} + +static zend_ast *zp_attribute_to_ast(zend_attribute *attribute) +{ + zend_ast *args_ast; + if (attribute->argc) { + args_ast = zend_ast_create_arg_list(0, ZEND_AST_ARG_LIST); + for (uint32_t i = 0; i < attribute->argc; i++) { + zend_ast *arg_ast = zend_ast_create_zval(&attribute->args[i].value); + if (attribute->args[i].name) { + arg_ast = zend_ast_create(ZEND_AST_NAMED_ARG, + zend_ast_create_zval_from_str( + zend_string_copy(attribute->args[i].name)), + arg_ast); + } + args_ast = zend_ast_list_add(args_ast, arg_ast); + } + } else { + args_ast = NULL; + } + return zend_ast_create(ZEND_AST_ATTRIBUTE, + zend_ast_create_zval_from_str(zend_string_copy(attribute->name)), + args_ast); +} + +static zend_ast *zp_param_attributes_to_ast(zend_function *function, + uint32_t offset) +{ + zend_ast *attributes_ast = NULL; + if (!function->common.attributes) { + return NULL; + } + + /* Inherit the SensitiveParameter attribute */ + zend_attribute *attr = zend_get_parameter_attribute_str( + function->common.attributes, + "sensitiveparameter", strlen("sensitiveparameter"), offset); + if (attr) { + attributes_ast = zend_ast_create_list(1, ZEND_AST_ATTRIBUTE_GROUP, + zp_attribute_to_ast(attr)); + attributes_ast = zend_ast_create_list(1, ZEND_AST_ATTRIBUTE_LIST, + attributes_ast); + } + + return attributes_ast; +} + +static zend_string *zp_pfa_name(const zend_op_array *declaring_op_array, + const zend_op *declaring_opline) +{ + zend_string *filename = declaring_op_array->filename; + uint32_t start_lineno = declaring_opline->lineno; + + zend_string *class = zend_empty_string; + zend_string *separator = zend_empty_string; + zend_string *function = filename; + const char *parens = ""; + + if (declaring_op_array->function_name) { + if (declaring_op_array->fn_flags & ZEND_ACC_CLOSURE) { + /* If the parent function is a closure, don't redundantly + * add the classname and parentheses. + */ + function = declaring_op_array->function_name; + } else { + function = declaring_op_array->function_name; + parens = "()"; + + if (declaring_op_array->scope && declaring_op_array->scope->name) { + class = declaring_op_array->scope->name; + separator = ZSTR_KNOWN(ZEND_STR_PAAMAYIM_NEKUDOTAYIM); + } + } + } + + zend_string *name = zend_strpprintf_unchecked( + 0, + "{closure:pfa:%S%S%S%s:%" PRIu32 "}", + class, + separator, + function, + parens, + start_lineno + ); + + return name; +} + +/* Generate the AST for calling the actual function */ +static zend_ast *zp_compile_forwarding_call( + zval *this_ptr, zend_function *function, + uint32_t argc, zval *argv, zend_array *extra_named_params, + zp_names *var_names, bool variadic_partial, uint32_t num_args, + zend_class_entry *called_scope, zend_type return_type, + bool forward_superfluous_args, + zend_ast *stmts_ast) +{ + bool is_assert = zend_string_equals(function->common.function_name, + ZSTR_KNOWN(ZEND_STR_ASSERT)); + + zend_ast *args_ast = zend_ast_create_list(0, ZEND_AST_ARG_LIST); + zend_ast *call_ast = NULL; + + if (is_assert) { + /* We are going to call assert() dynamically (via call_user_func), + * otherwise assert() would print the generated AST on failure, which is + * irrelevant. */ + args_ast = zend_ast_list_add(args_ast, + zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_ASSERT))); + } + + for (uint32_t offset = 0; offset < argc; offset++) { + if (Z_ISUNDEF(argv[offset])) { + /* Argument was not passed. Pass its default value. */ + if (offset < function->common.required_num_args) { + /* Required param was not passed. This can happen due to named + * args. Using the same exception CE and message as + * zend_handle_undef_args(). */ + zend_argument_error_ex(function, offset + 1, + zend_ce_argument_count_error, "not passed"); + goto error; + } + zval default_value; + if (zp_get_param_default_value(&default_value, function, offset) == FAILURE) { + ZEND_ASSERT(EG(exception)); + goto error; + } + zend_ast *default_value_ast; + if (Z_TYPE(default_value) == IS_CONSTANT_AST) { + /* Must dup AST because we are doing to destroy it */ + default_value_ast = zend_ast_dup(Z_ASTVAL(default_value)); + } else { + default_value_ast = zend_ast_create_zval(&default_value); + } + args_ast = zend_ast_list_add(args_ast, default_value_ast); + } else { + args_ast = zend_ast_list_add(args_ast, zend_ast_create(ZEND_AST_VAR, + zend_ast_create_zval_from_str(zend_string_copy(var_names->params[offset])))); + } + } + if (extra_named_params) { + args_ast = zend_ast_list_add(args_ast, zend_ast_create(ZEND_AST_UNPACK, + zend_ast_create(ZEND_AST_VAR, + zend_ast_create_zval_from_str(zend_string_copy(var_names->extra_named_params))))); + } + if (variadic_partial) { + if (function->common.fn_flags & ZEND_ACC_VARIADIC) { + args_ast = zend_ast_list_add(args_ast, zend_ast_create(ZEND_AST_UNPACK, + zend_ast_create(ZEND_AST_VAR, + zend_ast_create_zval_from_str(zend_string_copy(var_names->variadic_param))))); + } else if (forward_superfluous_args) { + /* When a '...' placeholder is used, and the underlying function is + * not variadic, superfluous arguments are forwarded. + * Add a ...array_slice(func_get_args(), n) argument, which should + * be compiled as ZEND_AST_UNPACK + ZEND_FUNC_GET_ARGS. */ + + zend_ast *func_get_args_name_ast = zend_ast_create_zval_from_str( + zend_string_copy(ZSTR_KNOWN(ZEND_STR_FUNC_GET_ARGS))); + func_get_args_name_ast->attr = ZEND_NAME_FQ; + + zend_ast *array_slice_name_ast = zend_ast_create_zval_from_str( + zend_string_copy(ZSTR_KNOWN(ZEND_STR_ARRAY_SLICE))); + array_slice_name_ast->attr = ZEND_NAME_FQ; + + args_ast = zend_ast_list_add(args_ast, + zend_ast_create(ZEND_AST_UNPACK, + zend_ast_create(ZEND_AST_CALL, + array_slice_name_ast, + zend_ast_create_list(2, ZEND_AST_ARG_LIST, + zend_ast_create(ZEND_AST_CALL, + func_get_args_name_ast, + zend_ast_create_list(0, ZEND_AST_ARG_LIST)), + zend_ast_create_zval_from_long(num_args))))); + } + } + + if (is_assert) { + zend_ast *func_name_ast = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_CALL_USER_FUNC)); + func_name_ast->attr = ZEND_NAME_FQ; + call_ast = zend_ast_create(ZEND_AST_CALL, func_name_ast, args_ast); + } else if (function->common.fn_flags & ZEND_ACC_CLOSURE) { + zend_ast *fn_ast = zend_ast_create(ZEND_AST_VAR, + zend_ast_create_zval_from_str(zend_string_copy(var_names->inner_closure))); + call_ast = zend_ast_create(ZEND_AST_CALL, fn_ast, args_ast); + } else if (Z_TYPE_P(this_ptr) == IS_OBJECT) { + zend_ast *this_ast = zend_ast_create(ZEND_AST_VAR, + zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_THIS))); + zend_ast *method_name_ast = zend_ast_create_zval_from_str( + zend_string_copy(function->common.function_name)); + call_ast = zend_ast_create(ZEND_AST_METHOD_CALL, this_ast, + method_name_ast, args_ast); + } else if (called_scope) { + zend_ast *class_name_ast = zend_ast_create_zval_from_str(ZSTR_KNOWN(ZEND_STR_STATIC)); + class_name_ast->attr = ZEND_NAME_NOT_FQ; + zend_ast *method_name_ast = zend_ast_create_zval_from_str( + zend_string_copy(function->common.function_name)); + call_ast = zend_ast_create(ZEND_AST_STATIC_CALL, class_name_ast, + method_name_ast, args_ast); + } else { + zend_ast *func_name_ast = zend_ast_create_zval_from_str(zend_string_copy(function->common.function_name)); + func_name_ast->attr = ZEND_NAME_FQ; + call_ast = zend_ast_create(ZEND_AST_CALL, func_name_ast, args_ast); + } + + /* Void functions can not 'return $expr' */ + if (ZEND_TYPE_FULL_MASK(return_type) & MAY_BE_VOID) { + stmts_ast = zend_ast_list_add(stmts_ast, call_ast); + } else { + zend_ast *return_ast = zend_ast_create(ZEND_AST_RETURN, call_ast); + stmts_ast = zend_ast_list_add(stmts_ast, return_ast); + } + + return stmts_ast; + +error: + zend_ast_destroy(args_ast); + zend_ast_destroy(call_ast); + return NULL; +} + +static uint32_t zp_compute_num_required(zend_function *function, + uint32_t orig_offset, uint32_t new_offset, uint32_t num_required) { + if (orig_offset < function->common.num_args) { + if (orig_offset < function->common.required_num_args) { + num_required = MAX(num_required, new_offset + 1); + } + } else { + ZEND_ASSERT(function->common.fn_flags & ZEND_ACC_VARIADIC); + /* Placeholders that run into the variadic portion become + * required and make all params before them required */ + ZEND_ASSERT(orig_offset >= num_required); + num_required = new_offset + 1; + } + + return num_required; +} + +/* Compile PFA to an op_array */ +static zend_op_array *zp_compile(zval *this_ptr, zend_function *function, + uint32_t argc, zval *argv, zend_array *extra_named_params, + const zend_array *named_positions, + const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, void **cache_slot, + bool uses_variadic_placeholder) { + + zend_op_array *op_array = NULL; + + if (UNEXPECTED(function->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)) { + zend_throw_error(NULL, "Cannot call %.*s() dynamically", + (int) ZSTR_LEN(function->common.function_name), ZSTR_VAL(function->common.function_name)); + return NULL; + } + + if (UNEXPECTED(zp_args_check(function, argc, argv, extra_named_params, uses_variadic_placeholder) != SUCCESS)) { + ZEND_ASSERT(EG(exception)); + return NULL; + } + + zend_class_entry *called_scope; + if (Z_TYPE_P(this_ptr) == IS_OBJECT) { + called_scope = Z_OBJCE_P(this_ptr); + } else { + called_scope = Z_CE_P(this_ptr); + } + + /* CG(ast_arena) is usually NULL, so we can't just make a snapshot */ + zend_arena *orig_ast_arena = CG(ast_arena); + CG(ast_arena) = zend_arena_create(1024 * 4); + + uint32_t orig_lineno = CG(zend_lineno); + CG(zend_lineno) = zend_get_executed_lineno(); + + uint32_t new_argc = argc; + + if (uses_variadic_placeholder) { + new_argc = MAX(new_argc, function->common.num_args); + } + + zval *tmp = zend_arena_alloc(&CG(ast_arena), new_argc * sizeof(zval)); + memcpy(tmp, argv, argc * sizeof(zval)); + argv = tmp; + + /* Compute param positions and number of required args, add implicit + * placeholders. + * + * Parameters are placed in the following order: + * - Positional placeholders + * - Then named placeholders in their syntax order + * - Then implicit placeholders added by '...' + */ + uint32_t num_params = 0; + uint32_t num_required = 0; + uint32_t *arg_to_param_offset_map = zend_arena_alloc(&CG(ast_arena), sizeof(uint32_t*) * new_argc); + { + uint32_t num_positional = 0; + + /* First, we handle explicit placeholders */ + for (uint32_t arg_offset = 0; arg_offset < argc; arg_offset++) { + if (!Z_IS_PLACEHOLDER_P(&argv[arg_offset])) { + continue; + } + + num_params++; + + zend_arg_info *arg_info = &function->common.arg_info[MIN(arg_offset, function->common.num_args)]; + zval *named_pos = named_positions ? zend_hash_find(named_positions, arg_info->name) : NULL; + uint32_t param_offset; + if (named_pos) { + /* Placeholder is sent as named arg. 'num_positional' can not + * change at this point. */ + param_offset = num_positional + Z_LVAL_P(named_pos); + } else { + /* Placeholder is sent as positional */ + param_offset = num_positional++; + } + + arg_to_param_offset_map[arg_offset] = param_offset; + + num_required = zp_compute_num_required(function, + arg_offset, param_offset, num_required); + } + + /* Handle implicit placeholders added by '...' */ + if (uses_variadic_placeholder) { + for (uint32_t arg_offset = 0; arg_offset < new_argc; arg_offset++) { + if (arg_offset < argc && !Z_ISUNDEF(argv[arg_offset])) { + continue; + } + + /* Unspecified parameters become placeholders */ + Z_TYPE_INFO(argv[arg_offset]) = _IS_PLACEHOLDER; + + num_params++; + + uint32_t param_offset = num_params - 1; + + arg_to_param_offset_map[arg_offset] = param_offset; + + num_required = zp_compute_num_required(function, + arg_offset, param_offset, num_required); + } + } + } + + argc = new_argc; + + /* Assign variable names */ + + zp_names *var_names = zp_assign_names(argc, argv, function, + uses_variadic_placeholder, extra_named_params); + + /* Generate AST */ + + zend_ast *lexical_vars_ast = zend_ast_create_list(0, ZEND_AST_CLOSURE_USES); + zend_ast *params_ast = zend_ast_create_list(0, ZEND_AST_ARG_LIST); + zend_ast *return_type_ast = NULL; + zend_ast *stmts_ast = zend_ast_create_list(0, ZEND_AST_STMT_LIST); + zend_ast *attributes_ast = NULL; + + /* Generate AST for params and lexical vars */ + { + /* The inner Closure, if any, is assumed to be the first lexical var by + * do_closure_bind(). */ + if (function->common.fn_flags & ZEND_ACC_CLOSURE) { + zend_ast *lexical_var_ast = zend_ast_create_zval_from_str( + zend_string_copy(var_names->inner_closure)); + lexical_vars_ast = zend_ast_list_add(lexical_vars_ast, lexical_var_ast); + } + + zend_ast **params = zend_arena_calloc(&CG(ast_arena), num_params, sizeof(zend_ast*)); + for (uint32_t offset = 0; offset < argc; offset++) { + if (Z_IS_PLACEHOLDER_P(&argv[offset])) { + zend_arg_info *arg_info = &function->common.arg_info[MIN(offset, function->common.num_args)]; + + int param_flags = 0; + if (zp_arg_must_be_sent_by_ref(function, offset+1)) { + param_flags |= ZEND_PARAM_REF; + } + + uint32_t param_offset = arg_to_param_offset_map[offset]; + zend_ast *param_type_ast = zp_type_to_ast(arg_info->type); + zend_ast *default_value_ast = NULL; + if (param_offset >= num_required) { + zval default_value; + if (zp_get_param_default_value(&default_value, function, offset) == FAILURE) { + for (uint32_t i = 0; i < num_params; i++) { + zend_ast_destroy(params[i]); + } + goto error; + } + default_value_ast = zend_ast_create_zval(&default_value); + } + + ZEND_ASSERT(offset < function->common.num_args || (function->common.fn_flags & ZEND_ACC_VARIADIC)); + + zend_ast *attributes_ast = zp_param_attributes_to_ast(function, MIN(offset, function->common.num_args)); + params[param_offset] = zend_ast_create_ex(ZEND_AST_PARAM, + param_flags, param_type_ast, + zend_ast_create_zval_from_str( + zend_string_copy(var_names->params[offset])), + default_value_ast, attributes_ast, NULL, NULL); + + } else if (!Z_ISUNDEF(argv[offset])) { + // TODO: If the pre-bound parameter is a literal, it can be a + // literal in the function body instead of a lexical var. + zend_ast *lexical_var_ast = zend_ast_create_zval_from_str( + zend_string_copy(var_names->params[offset])); + if (zp_arg_must_be_sent_by_ref(function, offset+1)) { + lexical_var_ast->attr = ZEND_BIND_REF; + } + lexical_vars_ast = zend_ast_list_add( + lexical_vars_ast, lexical_var_ast); + } + } + + for (uint32_t i = 0; i < num_params; i++) { + params_ast = zend_ast_list_add(params_ast, params[i]); + } + } + + if (extra_named_params) { + zend_ast *lexical_var_ast = zend_ast_create_zval_from_str( + zend_string_copy(var_names->extra_named_params)); + lexical_vars_ast = zend_ast_list_add(lexical_vars_ast, lexical_var_ast); + } + + /* If we have a variadic placeholder and the underlying function is + * variadic, add a variadic param. */ + if (uses_variadic_placeholder + && (function->common.fn_flags & ZEND_ACC_VARIADIC)) { + zend_arg_info *arg_info = &function->common.arg_info[function->common.num_args]; + int param_flags = ZEND_PARAM_VARIADIC; + if (zp_arg_must_be_sent_by_ref(function, function->common.num_args+1)) { + param_flags |= ZEND_PARAM_REF; + } + zend_ast *param_type_ast = zp_type_to_ast(arg_info->type); + zend_ast *attributes_ast = zp_param_attributes_to_ast(function, function->common.num_args); + params_ast = zend_ast_list_add(params_ast, zend_ast_create_ex(ZEND_AST_PARAM, + param_flags, param_type_ast, + zend_ast_create_zval_from_str( + zend_string_copy(var_names->variadic_param)), + NULL, attributes_ast, NULL, NULL)); + } + + zend_type return_type = {0}; + if (function->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + return_type = (function->common.arg_info-1)->type; + return_type_ast = zp_type_to_ast(return_type); + } + + /** + * Generate function body. + * + * If we may need to forward superflous arguments, do that conditionally, as + * it's faster: + * + * if (func_num_args() <= n) { + * // normal call + * } else { + * // call with superflous arg forwarding + * } + * + * The func_num_args() call should be compiled to a single FUNC_NUM_ARGS op. + */ + + if (uses_variadic_placeholder && !(function->common.fn_flags & ZEND_ACC_VARIADIC)) { + zend_ast *no_forwarding_ast = zend_ast_create_list(0, ZEND_AST_STMT_LIST); + zend_ast *forwarding_ast = zend_ast_create_list(0, ZEND_AST_STMT_LIST); + + no_forwarding_ast = zp_compile_forwarding_call(this_ptr, function, + argc, argv, extra_named_params, + var_names, uses_variadic_placeholder, num_params, + called_scope, return_type, false, no_forwarding_ast); + + if (!no_forwarding_ast) { + ZEND_ASSERT(EG(exception)); + goto error; + } + + forwarding_ast = zp_compile_forwarding_call(this_ptr, function, + argc, argv, extra_named_params, + var_names, uses_variadic_placeholder, num_params, + called_scope, return_type, true, forwarding_ast); + + if (!forwarding_ast) { + ZEND_ASSERT(EG(exception)); + zend_ast_destroy(no_forwarding_ast); + goto error; + } + + zend_ast *func_num_args_name_ast = zend_ast_create_zval_from_str( + zend_string_copy(ZSTR_KNOWN(ZEND_STR_FUNC_NUM_ARGS))); + func_num_args_name_ast->attr = ZEND_NAME_FQ; + + stmts_ast = zend_ast_list_add(stmts_ast, + zend_ast_create_list(2, ZEND_AST_IF, + zend_ast_create(ZEND_AST_IF_ELEM, + zend_ast_create_binary_op(ZEND_IS_SMALLER_OR_EQUAL, + zend_ast_create(ZEND_AST_CALL, func_num_args_name_ast, + zend_ast_create_list(0, ZEND_AST_ARG_LIST)), + zend_ast_create_zval_from_long(num_params)), + no_forwarding_ast), + zend_ast_create(ZEND_AST_IF_ELEM, + NULL, + forwarding_ast))); + } else { + stmts_ast = zp_compile_forwarding_call(this_ptr, function, + argc, argv, extra_named_params, + var_names, uses_variadic_placeholder, num_params, + called_scope, return_type, false, stmts_ast); + + if (!stmts_ast) { + ZEND_ASSERT(EG(exception)); + goto error; + } + } + + /* Inherit the NoDiscard attribute */ + if (function->common.attributes) { + zend_attribute *attr = zend_get_attribute_str( + function->common.attributes, "nodiscard", strlen("nodiscard")); + if (attr) { + attributes_ast = zend_ast_create_list(1, ZEND_AST_ATTRIBUTE_GROUP, + zp_attribute_to_ast(attr)); + attributes_ast = zend_ast_create_list(1, ZEND_AST_ATTRIBUTE_LIST, + attributes_ast); + } + } + + int closure_flags = function->common.fn_flags & ZEND_ACC_RETURN_REFERENCE; + zend_ast *closure_ast = zend_ast_create_decl(ZEND_AST_CLOSURE, + closure_flags, CG(zend_lineno), NULL, + NULL, params_ast, lexical_vars_ast, stmts_ast, + return_type_ast, attributes_ast); + + if (Z_TYPE_P(this_ptr) != IS_OBJECT && !zp_is_non_static_closure(function)) { + ((zend_ast_decl*)closure_ast)->flags |= ZEND_ACC_STATIC; + } + +#if ZEND_DEBUG + { + const char *tmp = getenv("DUMP_PFA_AST"); + if (tmp && ZEND_ATOL(tmp)) { + zend_string *str = zend_ast_export("", closure_ast, ""); + fprintf(stderr, "PFA AST: %s\n", ZSTR_VAL(str)); + zend_string_release(str); + } + } +#endif + + zend_string *pfa_name = zp_pfa_name(declaring_op_array, declaring_opline); + + op_array = zend_accel_compile_pfa(closure_ast, declaring_op_array, + declaring_opline, function, pfa_name); + + zend_ast_destroy(closure_ast); + +clean: + zp_names_dtor(var_names, argc); + zend_arena_destroy(CG(ast_arena)); + CG(ast_arena) = orig_ast_arena; + CG(zend_lineno) = orig_lineno; + + return op_array; + +error: + zend_ast_destroy(lexical_vars_ast); + zend_ast_destroy(params_ast); + zend_ast_destroy(return_type_ast); + zend_ast_destroy(stmts_ast); + zend_ast_destroy(attributes_ast); + goto clean; +} + +static const zend_op_array *zp_get_op_array(zval *this_ptr, zend_function *function, + uint32_t argc, zval *argv, zend_array *extra_named_params, + const zend_array *named_positions, + const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, void **cache_slot, + bool uses_variadic_placeholder) { + + if (EXPECTED(function->type == ZEND_INTERNAL_FUNCTION + ? cache_slot[0] == function + : cache_slot[0] == function->op_array.opcodes)) { + ZEND_ASSERT(!(function->common.fn_flags & ZEND_ACC_NEVER_CACHE)); + return cache_slot[1]; + } + + const zend_op_array *op_array = zend_accel_pfa_cache_get(declaring_op_array, + declaring_opline, function); + + if (UNEXPECTED(!op_array)) { + op_array = zp_compile(this_ptr, function, argc, argv, + extra_named_params, named_positions, declaring_op_array, declaring_opline, + cache_slot, uses_variadic_placeholder); + } + + if (EXPECTED(op_array) && !(function->common.fn_flags & ZEND_ACC_NEVER_CACHE)) { + cache_slot[0] = function->type == ZEND_INTERNAL_FUNCTION + ? (void*)function + : (void*)function->op_array.opcodes; + cache_slot[1] = (zend_op_array*)op_array; + } + + return op_array; +} + +/* Bind pre-bound arguments as lexical vars */ +static void zp_bind(zval *result, zend_function *function, uint32_t argc, zval *argv, + zend_array *extra_named_params) { + + zend_arg_info *arg_infos = function->common.arg_info; + uint32_t bind_offset = 0; + + if (function->common.fn_flags & ZEND_ACC_CLOSURE) { + zval var; + ZVAL_OBJ(&var, ZEND_CLOSURE_OBJECT(function)); + Z_ADDREF(var); + zend_closure_bind_var_ex(result, bind_offset, &var); + bind_offset += sizeof(Bucket); + } + + for (uint32_t offset = 0; offset < argc; offset++) { + zval *var = &argv[offset]; + if (Z_IS_PLACEHOLDER_P(var) || Z_ISUNDEF_P(var)) { + continue; + } + zend_arg_info *arg_info; + if (offset < function->common.num_args) { + arg_info = &arg_infos[offset]; + } else if (function->common.fn_flags & ZEND_ACC_VARIADIC) { + arg_info = &arg_infos[function->common.num_args]; + } else { + arg_info = NULL; + } + if (arg_info && ZEND_TYPE_IS_SET(arg_info->type) + && UNEXPECTED(!zend_check_type_ex(&arg_info->type, var, 0, 0))) { + zend_verify_arg_error(function, arg_info, offset+1, var); + zval_ptr_dtor(result); + ZVAL_NULL(result); + return; + } + ZEND_ASSERT(zp_arg_must_be_sent_by_ref(function, offset+1) ? Z_ISREF_P(var) : !Z_ISREF_P(var)); + zend_closure_bind_var_ex(result, bind_offset, var); + bind_offset += sizeof(Bucket); + } + + if (extra_named_params) { + zval var; + ZVAL_ARR(&var, extra_named_params); + Z_ADDREF(var); + zend_closure_bind_var_ex(result, bind_offset, &var); + } +} + +void zend_partial_create(zval *result, zval *this_ptr, zend_function *function, + uint32_t argc, zval *argv, zend_array *extra_named_params, + const zend_array *named_positions, + const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, void **cache_slot, + bool uses_variadic_placeholder) { + + const zend_op_array *op_array = zp_get_op_array(this_ptr, function, argc, argv, + extra_named_params, named_positions, + declaring_op_array, declaring_opline, + cache_slot, uses_variadic_placeholder); + + if (UNEXPECTED(!op_array)) { + ZEND_ASSERT(EG(exception)); + ZVAL_NULL(result); + return; + } + + zend_class_entry *called_scope; + zval object; + + if (Z_TYPE_P(this_ptr) == IS_OBJECT) { + called_scope = Z_OBJCE_P(this_ptr); + } else { + called_scope = Z_CE_P(this_ptr); + } + + if (Z_TYPE_P(this_ptr) == IS_OBJECT && !zp_is_static_closure(function)) { + ZVAL_COPY_VALUE(&object, this_ptr); + } else { + ZVAL_UNDEF(&object); + } + + zend_create_partial_closure(result, (zend_function*)op_array, + function->common.scope, called_scope, &object, + (function->common.fn_flags & ZEND_ACC_CLOSURE) != 0); + + zp_bind(result, function, argc, argv, extra_named_params); +} + +void zend_partial_op_array_dtor(zval *pDest) +{ + destroy_op_array(Z_PTR_P(pDest)); +} diff --git a/Zend/zend_partial.h b/Zend/zend_partial.h new file mode 100644 index 000000000000..3c47305ff543 --- /dev/null +++ b/Zend/zend_partial.h @@ -0,0 +1,35 @@ +/* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Arnaud Le Blanc | + +----------------------------------------------------------------------+ +*/ +#ifndef ZEND_PARTIAL_H +#define ZEND_PARTIAL_H + +#include "zend_compile.h" + +BEGIN_EXTERN_C() + +void zend_partial_create(zval *result, zval *this_ptr, zend_function *function, + uint32_t argc, zval *argv, zend_array *extra_named_params, + const zend_array *named_positions, + const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, void **cache_slot, + bool uses_variadic_placeholder); + +void zend_partial_op_array_dtor(zval *pDest); + +END_EXTERN_C() + +#endif diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h index c8a6dfa871b5..cd26aa174712 100644 --- a/Zend/zend_portability.h +++ b/Zend/zend_portability.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -106,7 +105,10 @@ # define ZEND_ASSUME(c) #endif -#if ZEND_DEBUG +#ifdef HAVE_GCOV +/* Disable assert() when compiling with gcov to avoid untested branch warning. */ +# define ZEND_ASSERT(c) ((void)sizeof(c)) +#elif ZEND_DEBUG # define ZEND_ASSERT(c) assert(c) #else # define ZEND_ASSERT(c) ZEND_ASSUME(c) @@ -134,10 +136,6 @@ # define ZEND_FALLTHROUGH ((void)0) #endif -/* Only use this macro if you know for sure that all of the switches values - are covered by its case statements */ -#define EMPTY_SWITCH_DEFAULT_CASE() default: ZEND_UNREACHABLE(); break; - #if defined(__GNUC__) && __GNUC__ >= 4 # define ZEND_IGNORE_VALUE(x) (({ __typeof__ (x) __x = (x); (void) __x; })) #else @@ -272,7 +270,7 @@ char *alloca(); # define ZEND_ATTRIBUTE_NODISCARD #endif -#if ZEND_GCC_VERSION >= 3000 +#if ZEND_GCC_VERSION >= 3000 || __has_attribute(const) # define ZEND_ATTRIBUTE_CONST __attribute__((const)) #else # define ZEND_ATTRIBUTE_CONST @@ -314,22 +312,21 @@ char *alloca(); # define ZEND_ATTRIBUTE_NONNULL_ARGS(...) #endif -#if defined(__GNUC__) && ZEND_GCC_VERSION >= 4003 +#if (defined(__GNUC__) && ZEND_GCC_VERSION >= 4003) || __has_attribute(cold) # define ZEND_COLD __attribute__((cold)) -# ifdef __OPTIMIZE__ -# define ZEND_OPT_SIZE __attribute__((optimize("Os"))) -# define ZEND_OPT_SPEED __attribute__((optimize("Ofast"))) -# else -# define ZEND_OPT_SIZE -# define ZEND_OPT_SPEED -# endif #else # define ZEND_COLD +#endif + +#if ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4003) || __has_attribute(optimize)) && defined(__OPTIMIZE__) +# define ZEND_OPT_SIZE __attribute__((optimize("Os"))) +# define ZEND_OPT_SPEED __attribute__((optimize("Ofast"))) +#else # define ZEND_OPT_SIZE # define ZEND_OPT_SPEED #endif -#if defined(__GNUC__) && ZEND_GCC_VERSION >= 5000 +#if (defined(__GNUC__) && ZEND_GCC_VERSION >= 5000) # define ZEND_ATTRIBUTE_UNUSED_LABEL __attribute__((unused)); # define ZEND_ATTRIBUTE_COLD_LABEL __attribute__((cold)); #else @@ -653,8 +650,8 @@ extern "C++" { #endif /* Do not use for conditional declaration of API functions! */ -#if defined(ZEND_INTRIN_PCLMUL_RESOLVER) && defined(ZEND_INTRIN_HAVE_IFUNC_TARGET) && (!defined(__GNUC__) || (ZEND_GCC_VERSION >= 9000)) -/* __builtin_cpu_supports has pclmul from gcc9 */ +#if defined(ZEND_INTRIN_PCLMUL_RESOLVER) && defined(ZEND_INTRIN_HAVE_IFUNC_TARGET) && (!defined(__GNUC__) || (defined(__clang__) && __clang_major__ >= 19) || (ZEND_GCC_VERSION >= 9000)) +/* __builtin_cpu_supports has pclmul from gcc9 and clang 19 */ # define ZEND_INTRIN_PCLMUL_FUNC_PROTO 1 #elif defined(ZEND_INTRIN_PCLMUL_RESOLVER) # define ZEND_INTRIN_PCLMUL_FUNC_PTR 1 @@ -679,8 +676,8 @@ extern "C++" { #endif /* Do not use for conditional declaration of API functions! */ -#if defined(ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER) && defined(ZEND_INTRIN_HAVE_IFUNC_TARGET) && (!defined(__GNUC__) || (ZEND_GCC_VERSION >= 9000)) -/* __builtin_cpu_supports has pclmul from gcc9 */ +#if defined(ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER) && defined(ZEND_INTRIN_HAVE_IFUNC_TARGET) && (!defined(__GNUC__) || (defined(__clang__) && __clang_major__ >= 19) || (ZEND_GCC_VERSION >= 9000)) +/* __builtin_cpu_supports has pclmul from gcc9 and clang 19 */ # define ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PROTO 1 #elif defined(ZEND_INTRIN_SSE4_2_PCLMUL_RESOLVER) # define ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PTR 1 diff --git a/Zend/zend_property_hooks.c b/Zend/zend_property_hooks.c index 57e22f23ad7b..dd6fe95ef57a 100644 --- a/Zend/zend_property_hooks.c +++ b/Zend/zend_property_hooks.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ilija Tovilo | +----------------------------------------------------------------------+ diff --git a/Zend/zend_property_hooks.h b/Zend/zend_property_hooks.h index 3793fa1a683c..9c88cccb0c07 100644 --- a/Zend/zend_property_hooks.h +++ b/Zend/zend_property_hooks.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ilija Tovilo | +----------------------------------------------------------------------+ diff --git a/Zend/zend_ptr_stack.c b/Zend/zend_ptr_stack.c index fdabdeb61cef..67cc836a240c 100644 --- a/Zend/zend_ptr_stack.c +++ b/Zend/zend_ptr_stack.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_ptr_stack.h b/Zend/zend_ptr_stack.h index 3ef1478fe4c3..6a6376f79dae 100644 --- a/Zend/zend_ptr_stack.h +++ b/Zend/zend_ptr_stack.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_range_check.h b/Zend/zend_range_check.h index 9c822493fa3e..8db867434399 100644 --- a/Zend/zend_range_check.h +++ b/Zend/zend_range_check.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c index 83f8aa0852db..2e4b398aa965 100644 --- a/Zend/zend_signal.c +++ b/Zend/zend_signal.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend Signal Handling | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Lucas Nealan | | Arnaud Le Blanc | @@ -22,8 +20,9 @@ Facebook Inc. as the original contributor of this module by leaving this note intact in the source code. - All other licensing and usage conditions are those of the PHP Group. -*/ + All other licensing and usage conditions are those of the PHP Group and + Contributors. + */ #ifndef _GNU_SOURCE # define _GNU_SOURCE diff --git a/Zend/zend_signal.h b/Zend/zend_signal.h index e88892da35aa..973f0c302b21 100644 --- a/Zend/zend_signal.h +++ b/Zend/zend_signal.h @@ -2,20 +2,17 @@ +----------------------------------------------------------------------+ | Zend Signal Handling | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Lucas Nealan | | Arnaud Le Blanc | +----------------------------------------------------------------------+ - */ #ifndef ZEND_SIGNAL_H diff --git a/Zend/zend_smart_str.c b/Zend/zend_smart_str.c index c779ee5c97ca..e6475c1dd626 100644 --- a/Zend/zend_smart_str.c +++ b/Zend/zend_smart_str.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -229,7 +227,7 @@ ZEND_API void ZEND_FASTCALL smart_str_append_scalar(smart_str *dest, const zval smart_str_appendc(dest, '\''); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/Zend/zend_smart_str.h b/Zend/zend_smart_str.h index affbb5c50ac2..cb81cd2361c8 100644 --- a/Zend/zend_smart_str.h +++ b/Zend/zend_smart_str.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/Zend/zend_smart_str_public.h b/Zend/zend_smart_str_public.h index 6a3b526254e4..d08ee49e47e0 100644 --- a/Zend/zend_smart_str_public.h +++ b/Zend/zend_smart_str_public.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/Zend/zend_smart_string.h b/Zend/zend_smart_string.h index 9f04e1a340ad..e8655681186b 100644 --- a/Zend/zend_smart_string.h +++ b/Zend/zend_smart_string.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | | Xinchen Hui | diff --git a/Zend/zend_smart_string_public.h b/Zend/zend_smart_string_public.h index 543e1d37a4ef..8b2bfbedb271 100644 --- a/Zend/zend_smart_string_public.h +++ b/Zend/zend_smart_string_public.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | | Xinchen Hui | diff --git a/Zend/zend_sort.c b/Zend/zend_sort.c index 355d2d1bad58..ac559141dd97 100644 --- a/Zend/zend_sort.c +++ b/Zend/zend_sort.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Xinchen Hui | | Sterling Hughes | diff --git a/Zend/zend_sort.h b/Zend/zend_sort.h index 5954575dbc25..03c63bb12e17 100644 --- a/Zend/zend_sort.h +++ b/Zend/zend_sort.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Xinchen Hui | | Sterling Hughes | diff --git a/Zend/zend_stack.c b/Zend/zend_stack.c index 5d9cc166367e..d999d684d05d 100644 --- a/Zend/zend_stack.c +++ b/Zend/zend_stack.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_stack.h b/Zend/zend_stack.h index a2edc12b1fb4..66c90f0b5217 100644 --- a/Zend/zend_stack.h +++ b/Zend/zend_stack.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_stream.c b/Zend/zend_stream.c index 8e11841ad265..0627ae145939 100644 --- a/Zend/zend_stream.c +++ b/Zend/zend_stream.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | | Scott MacVicar | diff --git a/Zend/zend_stream.h b/Zend/zend_stream.h index 33d8656dad5e..ed2bef941e2a 100644 --- a/Zend/zend_stream.h +++ b/Zend/zend_stream.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | | Scott MacVicar | diff --git a/Zend/zend_string.c b/Zend/zend_string.c index 348f37999efd..a9e1a7dea099 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 97386ea6bad6..9127f55a5754 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -537,7 +536,7 @@ static zend_always_inline zend_ulong zend_inline_hash_func(const char *str, size case 2: hash = ((hash << 5) + hash) + *str++; /* fallthrough... */ case 1: hash = ((hash << 5) + hash) + *str++; break; case 0: break; -EMPTY_SWITCH_DEFAULT_CASE() +default: ZEND_UNREACHABLE(); } #endif @@ -631,6 +630,11 @@ EMPTY_SWITCH_DEFAULT_CASE() _(ZEND_STR_AUTOGLOBAL_ENV, "_ENV") \ _(ZEND_STR_AUTOGLOBAL_REQUEST, "_REQUEST") \ _(ZEND_STR_COUNT, "count") \ + _(ZEND_STR_FUNC_NUM_ARGS, "func_num_args") \ + _(ZEND_STR_FUNC_GET_ARGS, "func_get_args") \ + _(ZEND_STR_ASSERT, "assert") \ + _(ZEND_STR_CALL_USER_FUNC, "call_user_func") \ + _(ZEND_STR_ARRAY_SLICE, "array_slice") \ _(ZEND_STR_SENSITIVEPARAMETER, "SensitiveParameter") \ _(ZEND_STR_CONST_EXPR_PLACEHOLDER, "[constant expression]") \ _(ZEND_STR_DEPRECATED_CAPITALIZED, "Deprecated") \ diff --git a/Zend/zend_strtod.h b/Zend/zend_strtod.h index 4e0d85a7d216..fa557ed2a0c3 100644 --- a/Zend/zend_strtod.h +++ b/Zend/zend_strtod.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ diff --git a/Zend/zend_strtod_int.h b/Zend/zend_strtod_int.h index 06a02618e9e6..4de5c225ccd8 100644 --- a/Zend/zend_strtod_int.h +++ b/Zend/zend_strtod_int.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/Zend/zend_system_id.c b/Zend/zend_system_id.c index 2c3ebab0f480..ead694375b6d 100644 --- a/Zend/zend_system_id.c +++ b/Zend/zend_system_id.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sammy Kaye Powers | | Dmitry Stogov | diff --git a/Zend/zend_system_id.h b/Zend/zend_system_id.h index b6785f8d7b67..ae39381a52a3 100644 --- a/Zend/zend_system_id.h +++ b/Zend/zend_system_id.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sammy Kaye Powers | +----------------------------------------------------------------------+ diff --git a/Zend/zend_type_info.h b/Zend/zend_type_info.h index eeab7bf0431d..1e0045558383 100644 --- a/Zend/zend_type_info.h +++ b/Zend/zend_type_info.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_types.h b/Zend/zend_types.h index 22dbfa9be879..06ee60f8627b 100644 --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -858,6 +857,8 @@ static zend_always_inline uint32_t zval_gc_info(uint32_t gc_type_info) { #define IS_OBJ_LAZY_UNINITIALIZED (1U<<31) /* Virtual proxy or uninitialized Ghost */ #define IS_OBJ_LAZY_PROXY (1U<<30) /* Virtual proxy (may be initialized) */ +#define OBJ_EXTRA_FLAG_PRIV_1 (1U<<29) /* Reserved for private use by the object itself */ +#define OBJ_EXTRA_FLAG_PRIV_2 (1U<<28) /* Reserved for private use by the object itself */ #define OBJ_EXTRA_FLAGS(obj) ((obj)->extra_flags) diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c index 00f10b08f80a..02c286ac486a 100644 --- a/Zend/zend_variables.c +++ b/Zend/zend_variables.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_variables.h b/Zend/zend_variables.h index d90ad9951782..9c6040a75bcb 100644 --- a/Zend/zend_variables.h +++ b/Zend/zend_variables.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_verify_type_inference.h b/Zend/zend_verify_type_inference.h index 8e9cbcbc181f..807bf21e3910 100644 --- a/Zend/zend_verify_type_inference.h +++ b/Zend/zend_verify_type_inference.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index 94183e3724c4..f8dabd507783 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Sascha Schumann | diff --git a/Zend/zend_virtual_cwd.h b/Zend/zend_virtual_cwd.h index 21735f6dfae5..0c543bba5c68 100644 --- a/Zend/zend_virtual_cwd.h +++ b/Zend/zend_virtual_cwd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Sascha Schumann | diff --git a/Zend/zend_vm.h b/Zend/zend_vm.h index c9c41c75c72a..093b1158bd82 100644 --- a/Zend/zend_vm.h +++ b/Zend/zend_vm.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 86708f8c97a2..ff5c85e10a9b 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -4154,11 +4153,15 @@ ZEND_VM_HOT_HANDLER(129, ZEND_DO_ICALL, ANY, ANY, SPEC(RETVAL,OBSERVER)) if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret); @@ -4283,11 +4286,15 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER)) if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -4412,11 +4419,15 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER)) if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -5712,6 +5723,30 @@ ZEND_VM_HELPER(zend_verify_recv_arg_type_helper, ANY, ANY, zval *op_1) ZEND_VM_NEXT_OPCODE(); } +ZEND_VM_HANDLER(213, ZEND_SEND_PLACEHOLDER, UNUSED, CONST|UNUSED|NUM) +{ + zval *arg; + + if (OP2_TYPE == IS_CONST) { + /* Named placeholder */ + USE_OPLINE + SAVE_OPLINE(); + zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2)); + uint32_t arg_num; + arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num)); + if (UNEXPECTED(!arg)) { + HANDLE_EXCEPTION(); + } + } else { + /* Positional placeholder */ + arg = ZEND_CALL_VAR(EX(call), opline->result.var); + } + + Z_TYPE_INFO_P(arg) = _IS_PLACEHOLDER; + + ZEND_VM_NEXT_OPCODE(); +} + ZEND_VM_HOT_HANDLER(63, ZEND_RECV, NUM, UNUSED) { USE_OPLINE @@ -8907,9 +8942,10 @@ ZEND_VM_HOT_HANDLER(211, ZEND_TYPE_ASSERT, CONST, ANY, NUM) zend_arg_info *arginfo = &fbc->common.arg_info[argno - 1]; if (!zend_check_type(&arginfo->type, value, /* is_return_type */ false, /* is_internal */ true)) { - const char *param_name = get_function_arg_name(fbc, argno); zend_string *expected = zend_type_to_string(arginfo->type); - zend_type_error("%s(): Argument #%d%s%s%s must be of type %s, %s given", ZSTR_VAL(fbc->common.function_name), argno, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : "", ZSTR_VAL(expected), zend_zval_value_name(value)); + zend_argument_type_error_ex(fbc, argno, + "must be of type %s, %s given", + ZSTR_VAL(expected), zend_zval_value_name(value)); zend_string_release(expected); } } @@ -9012,7 +9048,7 @@ ZEND_VM_HANDLER(157, ZEND_FETCH_CLASS_NAME, CV|TMP|UNUSED|CLASS_FETCH, ANY) } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -9119,11 +9155,15 @@ ZEND_VM_HANDLER(158, ZEND_CALL_TRAMPOLINE, ANY, ANY, SPEC(OBSERVER)) if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif ZEND_OBSERVER_FCALL_END(call, EG(exception) ? NULL : ret); @@ -9572,7 +9612,9 @@ ZEND_VM_COLD_CONST_HANDLER(190, ZEND_COUNT, CONST|TMP|CV, UNUSED) zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -9821,6 +9863,45 @@ ZEND_VM_HANDLER(202, ZEND_CALLABLE_CONVERT, UNUSED, UNUSED, NUM|CACHE_SLOT) ZEND_VM_NEXT_OPCODE(); } +ZEND_VM_HANDLER(212, ZEND_CALLABLE_CONVERT_PARTIAL, CACHE_SLOT, CONST|UNUSED, NUM) +{ + USE_OPLINE + SAVE_OPLINE(); + + zend_execute_data *call = EX(call); + void **cache_slot = CACHE_ADDR(opline->op1.num); + zval *named_positions = GET_OP2_ZVAL_PTR(); + + zend_partial_create(EX_VAR(opline->result.var), + &call->This, call->func, + ZEND_CALL_NUM_ARGS(call), ZEND_CALL_ARG(call, 1), + (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) ? + call->extra_named_params : NULL, + OP2_TYPE == IS_CONST ? Z_ARRVAL_P(named_positions) : NULL, + &EX(func)->op_array, opline, cache_slot, + opline->extended_value & ZEND_FCALL_USES_VARIADIC_PLACEHOLDER); + + if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { + zend_array_release(call->extra_named_params); + } + + if ((call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { + zend_free_trampoline(call->func); + } + + if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) { + OBJ_RELEASE(Z_OBJ(call->This)); + } else if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func)); + } + + EX(call) = call->prev_execute_data; + + zend_vm_stack_free_call_frame(call); + + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); +} + ZEND_VM_HANDLER(208, ZEND_JMP_FRAMELESS, CONST, JMP_ADDR, NUM|CACHE_SLOT) { USE_OPLINE diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 7dfedca98d3b..f74f3497a01f 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -307,6 +306,7 @@ static uint8_t zend_user_opcodes[256] = {0, }; #include "Zend/zend_vm_opcodes.h" +#include "Zend/zend_partial.h" #define SPEC_START_MASK 0x0000ffff #define SPEC_EXTRA_MASK 0xfffc0000 @@ -1322,11 +1322,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif @@ -1388,11 +1392,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif @@ -1454,11 +1462,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif zend_observer_fcall_end(call, EG(exception) ? NULL : ret); @@ -1636,11 +1648,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -1750,11 +1766,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -1863,11 +1883,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -1995,11 +2019,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -2126,11 +2154,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_D if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -2254,11 +2286,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -3639,11 +3675,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_CALL_TRAMPOLI if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif @@ -3783,11 +3823,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_CALL_TRAMPOLI if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif zend_observer_fcall_end(call, EG(exception) ? NULL : ret); @@ -4219,6 +4263,45 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_R ZEND_VM_NEXT_OPCODE(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + SAVE_OPLINE(); + + zend_execute_data *call = EX(call); + void **cache_slot = CACHE_ADDR(opline->op1.num); + zval *named_positions = RT_CONSTANT(opline, opline->op2); + + zend_partial_create(EX_VAR(opline->result.var), + &call->This, call->func, + ZEND_CALL_NUM_ARGS(call), ZEND_CALL_ARG(call, 1), + (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) ? + call->extra_named_params : NULL, + IS_CONST == IS_CONST ? Z_ARRVAL_P(named_positions) : NULL, + &EX(func)->op_array, opline, cache_slot, + opline->extended_value & ZEND_FCALL_USES_VARIADIC_PLACEHOLDER); + + if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { + zend_array_release(call->extra_named_params); + } + + if ((call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { + zend_free_trampoline(call->func); + } + + if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) { + OBJ_RELEASE(Z_OBJ(call->This)); + } else if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func)); + } + + EX(call) = call->prev_execute_data; + + zend_vm_stack_free_call_frame(call); + + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); +} + static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_INIT_DYNAMIC_CALL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -4363,6 +4446,45 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_RECV_VARIADIC ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + SAVE_OPLINE(); + + zend_execute_data *call = EX(call); + void **cache_slot = CACHE_ADDR(opline->op1.num); + zval *named_positions = NULL; + + zend_partial_create(EX_VAR(opline->result.var), + &call->This, call->func, + ZEND_CALL_NUM_ARGS(call), ZEND_CALL_ARG(call, 1), + (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) ? + call->extra_named_params : NULL, + IS_UNUSED == IS_CONST ? Z_ARRVAL_P(named_positions) : NULL, + &EX(func)->op_array, opline, cache_slot, + opline->extended_value & ZEND_FCALL_USES_VARIADIC_PLACEHOLDER); + + if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { + zend_array_release(call->extra_named_params); + } + + if ((call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { + zend_free_trampoline(call->func); + } + + if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) { + OBJ_RELEASE(Z_OBJ(call->This)); + } else if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func)); + } + + EX(call) = call->prev_execute_data; + + zend_vm_stack_free_call_frame(call); + + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); +} + static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -6117,9 +6239,10 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_T zend_arg_info *arginfo = &fbc->common.arg_info[argno - 1]; if (!zend_check_type(&arginfo->type, value, /* is_return_type */ false, /* is_internal */ true)) { - const char *param_name = get_function_arg_name(fbc, argno); zend_string *expected = zend_type_to_string(arginfo->type); - zend_type_error("%s(): Argument #%d%s%s%s must be of type %s, %s given", ZSTR_VAL(fbc->common.function_name), argno, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : "", ZSTR_VAL(expected), zend_zval_value_name(value)); + zend_argument_type_error_ex(fbc, argno, + "must be of type %s, %s given", + ZSTR_VAL(expected), zend_zval_value_name(value)); zend_string_release(expected); } } @@ -11765,7 +11888,9 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_ zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -18232,7 +18357,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_CLASS_N } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -21965,7 +22090,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_COUNT_SPEC_TM zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -32825,7 +32952,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_CLASS_N } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -34405,6 +34532,30 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_CHECK_FUNC_AR ZEND_VM_NEXT_OPCODE(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + zval *arg; + + if (IS_CONST == IS_CONST) { + /* Named placeholder */ + USE_OPLINE + SAVE_OPLINE(); + zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2)); + uint32_t arg_num; + arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num)); + if (UNEXPECTED(!arg)) { + HANDLE_EXCEPTION(); + } + } else { + /* Positional placeholder */ + arg = ZEND_CALL_VAR(EX(call), opline->result.var); + } + + Z_TYPE_INFO_P(arg) = _IS_PLACEHOLDER; + + ZEND_VM_NEXT_OPCODE(); +} + static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -37029,6 +37180,30 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_C ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + zval *arg; + + if (IS_UNUSED == IS_CONST) { + /* Named placeholder */ + USE_OPLINE + SAVE_OPLINE(); + zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2)); + uint32_t arg_num; + arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num)); + if (UNEXPECTED(!arg)) { + HANDLE_EXCEPTION(); + } + } else { + /* Positional placeholder */ + arg = ZEND_CALL_VAR(EX(call), opline->result.var); + } + + Z_TYPE_INFO_P(arg) = _IS_PLACEHOLDER; + + ZEND_VM_NEXT_OPCODE(); +} + static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -40825,7 +41000,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_FETCH_CLASS_N } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -49894,7 +50069,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV ZEND_COUNT_SPEC_CV zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -54046,11 +54223,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_ICA if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif @@ -54112,11 +54293,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_ICA if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif @@ -54178,11 +54363,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_IC if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif zend_observer_fcall_end(call, EG(exception) ? NULL : ret); @@ -54360,11 +54549,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_FCA if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -54474,11 +54667,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_FCA if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -54587,11 +54784,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_FC if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -54719,11 +54920,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_FCA if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -54850,11 +55055,15 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_FCA if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -54978,11 +55187,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_DO_FC if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } ZEND_ASSERT(opline->result_type != IS_TMP_VAR || !Z_ISREF_P(ret)); #endif @@ -56247,11 +56460,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_CALL_TRAMPOLINE_SP if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif @@ -56391,11 +56608,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_CALL_TRAMPOLINE_SP if (should_throw) { zend_internal_call_arginfo_violation(call->func); } - ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) || - zend_verify_internal_return_type(call->func, ret)); + if (call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { + bool result = zend_verify_internal_return_type(call->func, ret); + ZEND_ASSERT(result); + } ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ? Z_ISREF_P(ret) : !Z_ISREF_P(ret)); zend_verify_internal_func_info(call->func, ret); + ZEND_ASSERT(!(ZEND_CALL_INFO(call) & ZEND_CALL_DYNAMIC) + || !(call->func->common.fn_flags2 & ZEND_ACC2_FORBID_DYN_CALLS)); } #endif zend_observer_fcall_end(call, EG(exception) ? NULL : ret); @@ -56827,6 +57048,45 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_RECV_I ZEND_VM_NEXT_OPCODE(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + SAVE_OPLINE(); + + zend_execute_data *call = EX(call); + void **cache_slot = CACHE_ADDR(opline->op1.num); + zval *named_positions = RT_CONSTANT(opline, opline->op2); + + zend_partial_create(EX_VAR(opline->result.var), + &call->This, call->func, + ZEND_CALL_NUM_ARGS(call), ZEND_CALL_ARG(call, 1), + (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) ? + call->extra_named_params : NULL, + IS_CONST == IS_CONST ? Z_ARRVAL_P(named_positions) : NULL, + &EX(func)->op_array, opline, cache_slot, + opline->extended_value & ZEND_FCALL_USES_VARIADIC_PLACEHOLDER); + + if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { + zend_array_release(call->extra_named_params); + } + + if ((call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { + zend_free_trampoline(call->func); + } + + if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) { + OBJ_RELEASE(Z_OBJ(call->This)); + } else if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func)); + } + + EX(call) = call->prev_execute_data; + + zend_vm_stack_free_call_frame(call); + + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); +} + static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_INIT_DYNAMIC_CALL_SPEC_TMP_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -56971,6 +57231,45 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_RECV_VARIADIC_SPEC ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + SAVE_OPLINE(); + + zend_execute_data *call = EX(call); + void **cache_slot = CACHE_ADDR(opline->op1.num); + zval *named_positions = NULL; + + zend_partial_create(EX_VAR(opline->result.var), + &call->This, call->func, + ZEND_CALL_NUM_ARGS(call), ZEND_CALL_ARG(call, 1), + (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) ? + call->extra_named_params : NULL, + IS_UNUSED == IS_CONST ? Z_ARRVAL_P(named_positions) : NULL, + &EX(func)->op_array, opline, cache_slot, + opline->extended_value & ZEND_FCALL_USES_VARIADIC_PLACEHOLDER); + + if (ZEND_CALL_INFO(call) & ZEND_CALL_HAS_EXTRA_NAMED_PARAMS) { + zend_array_release(call->extra_named_params); + } + + if ((call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { + zend_free_trampoline(call->func); + } + + if (ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS) { + OBJ_RELEASE(Z_OBJ(call->This)); + } else if (ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE(ZEND_CLOSURE_OBJECT(call->func)); + } + + EX(call) = call->prev_execute_data; + + zend_vm_stack_free_call_frame(call); + + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); +} + static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -58725,9 +59024,10 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_TYPE_A zend_arg_info *arginfo = &fbc->common.arg_info[argno - 1]; if (!zend_check_type(&arginfo->type, value, /* is_return_type */ false, /* is_internal */ true)) { - const char *param_name = get_function_arg_name(fbc, argno); zend_string *expected = zend_type_to_string(arginfo->type); - zend_type_error("%s(): Argument #%d%s%s%s must be of type %s, %s given", ZSTR_VAL(fbc->common.function_name), argno, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : "", ZSTR_VAL(expected), zend_zval_value_name(value)); + zend_argument_type_error_ex(fbc, argno, + "must be of type %s, %s given", + ZSTR_VAL(expected), zend_zval_value_name(value)); zend_string_release(expected); } } @@ -64271,7 +64571,9 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_COUNT zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -70738,7 +71040,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_CLASS_NAME_S } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -74371,7 +74673,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_COUNT_SPEC_TMP_UNU zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -85231,7 +85535,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_CLASS_NAME_S } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -86811,6 +87115,30 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_CHECK_FUNC_ARG_SPE ZEND_VM_NEXT_OPCODE(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + zval *arg; + + if (IS_CONST == IS_CONST) { + /* Named placeholder */ + USE_OPLINE + SAVE_OPLINE(); + zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2)); + uint32_t arg_num; + arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num)); + if (UNEXPECTED(!arg)) { + HANDLE_EXCEPTION(); + } + } else { + /* Positional placeholder */ + arg = ZEND_CALL_VAR(EX(call), opline->result.var); + } + + Z_TYPE_INFO_P(arg) = _IS_PLACEHOLDER; + + ZEND_VM_NEXT_OPCODE(); +} + static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -89435,6 +89763,30 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_CHECK_ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } +static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + zval *arg; + + if (IS_UNUSED == IS_CONST) { + /* Named placeholder */ + USE_OPLINE + SAVE_OPLINE(); + zend_string *arg_name = Z_STR_P(RT_CONSTANT(opline, opline->op2)); + uint32_t arg_num; + arg = zend_handle_named_arg(&EX(call), arg_name, &arg_num, CACHE_ADDR(opline->result.num)); + if (UNEXPECTED(!arg)) { + HANDLE_EXCEPTION(); + } + } else { + /* Positional placeholder */ + arg = ZEND_CALL_VAR(EX(call), opline->result.var); + } + + Z_TYPE_INFO_P(arg) = _IS_PLACEHOLDER; + + ZEND_VM_NEXT_OPCODE(); +} + static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_NEW_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -93231,7 +93583,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_FETCH_CLASS_NAME_S } ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } ZEND_VM_NEXT_OPCODE(); } @@ -102198,7 +102550,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_COUNT_SPEC_CV_UNUS zval retval; zend_function *count_fn = zend_hash_find_ptr(&zobj->ce->function_table, ZSTR_KNOWN(ZEND_STR_COUNT)); + GC_ADDREF(zobj); zend_call_known_instance_method_with_0_params(count_fn, zobj, &retval); + OBJ_RELEASE(zobj); count = zval_get_long(&retval); zval_ptr_dtor(&retval); break; @@ -109114,6 +109468,16 @@ ZEND_API void execute_ex(zend_execute_data *ex) (void*)&&ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_LABEL, (void*)&&ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_LABEL, (void*)&&ZEND_TYPE_ASSERT_SPEC_CONST_LABEL, + (void*)&&ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST_LABEL, + (void*)&&ZEND_NULL_LABEL, + (void*)&&ZEND_NULL_LABEL, + (void*)&&ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED_LABEL, + (void*)&&ZEND_NULL_LABEL, + (void*)&&ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST_LABEL, + (void*)&&ZEND_NULL_LABEL, + (void*)&&ZEND_NULL_LABEL, + (void*)&&ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED_LABEL, + (void*)&&ZEND_NULL_LABEL, (void*)&&ZEND_INIT_FCALL_OFFSET_SPEC_CONST_LABEL, (void*)&&ZEND_RECV_NOTYPE_SPEC_LABEL, (void*)&&ZEND_NULL_LABEL, @@ -110518,6 +110882,11 @@ ZEND_API void execute_ex(zend_execute_data *ex) ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); VM_TRACE_OP_END(ZEND_RECV_INIT_SPEC_CONST) HYBRID_BREAK(); + HYBRID_CASE(ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST): + VM_TRACE(ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST) + ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + VM_TRACE_OP_END(ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST) + HYBRID_BREAK(); HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_TMP): VM_TRACE(ZEND_INIT_DYNAMIC_CALL_SPEC_TMP) ZEND_INIT_DYNAMIC_CALL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); @@ -110533,6 +110902,11 @@ ZEND_API void execute_ex(zend_execute_data *ex) ZEND_RECV_VARIADIC_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); VM_TRACE_OP_END(ZEND_RECV_VARIADIC_SPEC_UNUSED) HYBRID_BREAK(); + HYBRID_CASE(ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED): + VM_TRACE(ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED) + ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + VM_TRACE_OP_END(ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED) + HYBRID_BREAK(); HYBRID_CASE(ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED): VM_TRACE(ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED) ZEND_FRAMELESS_ICALL_1_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); @@ -113756,6 +114130,11 @@ ZEND_API void execute_ex(zend_execute_data *ex) ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); VM_TRACE_OP_END(ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_CONST) HYBRID_BREAK(); + HYBRID_CASE(ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST): + VM_TRACE(ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST) + ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + VM_TRACE_OP_END(ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST) + HYBRID_BREAK(); HYBRID_CASE(ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST): VM_TRACE(ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST) ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); @@ -113936,6 +114315,11 @@ ZEND_API void execute_ex(zend_execute_data *ex) ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); VM_TRACE_OP_END(ZEND_CHECK_UNDEF_ARGS_SPEC_UNUSED_UNUSED) HYBRID_BREAK(); + HYBRID_CASE(ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED): + VM_TRACE(ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED) + ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); + VM_TRACE_OP_END(ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED) + HYBRID_BREAK(); HYBRID_CASE(ZEND_NEW_SPEC_UNUSED_UNUSED): VM_TRACE(ZEND_NEW_SPEC_UNUSED_UNUSED) ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); @@ -118052,6 +118436,16 @@ void zend_vm_init(void) ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_HANDLER, ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_HANDLER, ZEND_TYPE_ASSERT_SPEC_CONST_HANDLER, + ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED_HANDLER, + ZEND_NULL_HANDLER, + ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED_HANDLER, + ZEND_NULL_HANDLER, ZEND_INIT_FCALL_OFFSET_SPEC_CONST_HANDLER, ZEND_RECV_NOTYPE_SPEC_HANDLER, ZEND_NULL_HANDLER, @@ -121530,6 +121924,16 @@ void zend_vm_init(void) ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED_TAILCALL_HANDLER, ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST_TAILCALL_HANDLER, ZEND_TYPE_ASSERT_SPEC_CONST_TAILCALL_HANDLER, + ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST_TAILCALL_HANDLER, + ZEND_NULL_TAILCALL_HANDLER, + ZEND_NULL_TAILCALL_HANDLER, + ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED_TAILCALL_HANDLER, + ZEND_NULL_TAILCALL_HANDLER, + ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST_TAILCALL_HANDLER, + ZEND_NULL_TAILCALL_HANDLER, + ZEND_NULL_TAILCALL_HANDLER, + ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED_TAILCALL_HANDLER, + ZEND_NULL_TAILCALL_HANDLER, ZEND_INIT_FCALL_OFFSET_SPEC_CONST_TAILCALL_HANDLER, ZEND_RECV_NOTYPE_SPEC_TAILCALL_HANDLER, ZEND_NULL_TAILCALL_HANDLER, @@ -122498,7 +122902,7 @@ void zend_vm_init(void) 1255, 1256 | SPEC_RULE_OP1, 1261 | SPEC_RULE_OP1, - 3474, + 3484, 1266 | SPEC_RULE_OP1, 1271 | SPEC_RULE_OP1, 1276 | SPEC_RULE_OP2, @@ -122532,7 +122936,7 @@ void zend_vm_init(void) 1559 | SPEC_RULE_OP1 | SPEC_RULE_OP2, 1584 | SPEC_RULE_OP1, 1589, - 3474, + 3484, 1590 | SPEC_RULE_OP1, 1595 | SPEC_RULE_OP1 | SPEC_RULE_OP2, 1620 | SPEC_RULE_OP1 | SPEC_RULE_OP2, @@ -122665,50 +123069,50 @@ void zend_vm_init(void) 2556, 2557, 2558, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, - 3474, + 2559 | SPEC_RULE_OP2, + 2564 | SPEC_RULE_OP2, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, + 3484, }; #if 0 #elif (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID) @@ -122749,7 +123153,7 @@ static void init_opcode_serialiser(void) Z_TYPE_INFO(tmp) = IS_LONG; for (i = 0; i < zend_handlers_count; i++) { Z_LVAL(tmp) = i; - zend_hash_index_add(zend_handlers_table, (zend_long)(uintptr_t)zend_opcode_handlers[i], &tmp); + zend_hash_index_add(zend_handlers_table, (zend_ulong)(uintptr_t)zend_opcode_handlers[i], &tmp); } } @@ -122760,7 +123164,7 @@ ZEND_API void ZEND_FASTCALL zend_serialize_opcode_handler(zend_op *op) if (!zend_handlers_table) { init_opcode_serialiser(); } - zv = zend_hash_index_find(zend_handlers_table, (zend_long)(uintptr_t)op->handler); + zv = zend_hash_index_find(zend_handlers_table, (zend_ulong)(uintptr_t)op->handler); ZEND_ASSERT(zv != NULL); op->handler = (zend_vm_opcode_handler_t)(uintptr_t)Z_LVAL_P(zv); } @@ -122778,7 +123182,7 @@ ZEND_API const void* ZEND_FASTCALL zend_get_opcode_handler_func(const zend_op *o if (!zend_handlers_table) { init_opcode_serialiser(); } - zv = zend_hash_index_find(zend_handlers_table, (zend_long)(uintptr_t)op->handler); + zv = zend_hash_index_find(zend_handlers_table, (zend_ulong)(uintptr_t)op->handler); ZEND_ASSERT(zv != NULL); return zend_opcode_handler_funcs[Z_LVAL_P(zv)]; #elif ZEND_VM_KIND == ZEND_VM_KIND_CALL @@ -122885,7 +123289,7 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2567 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 2577 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; if (op->op1_type < op->op2_type) { zend_swap_operands(op); } @@ -122893,7 +123297,7 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2592 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 2602 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; if (op->op1_type < op->op2_type) { zend_swap_operands(op); } @@ -122901,7 +123305,7 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2617 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 2627 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; if (op->op1_type < op->op2_type) { zend_swap_operands(op); } @@ -122912,17 +123316,17 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2642 | SPEC_RULE_OP1 | SPEC_RULE_OP2; + spec = 2652 | SPEC_RULE_OP1 | SPEC_RULE_OP2; } else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2667 | SPEC_RULE_OP1 | SPEC_RULE_OP2; + spec = 2677 | SPEC_RULE_OP1 | SPEC_RULE_OP2; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2692 | SPEC_RULE_OP1 | SPEC_RULE_OP2; + spec = 2702 | SPEC_RULE_OP1 | SPEC_RULE_OP2; } break; case ZEND_MUL: @@ -122933,17 +123337,17 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2717 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 2727 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; } else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2742 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 2752 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2767 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 2777 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; } break; case ZEND_IS_IDENTICAL: @@ -122954,16 +123358,16 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 2802 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 2877 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) { - spec = 3092 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 3102 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) { - spec = 3098 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 3108 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; } break; case ZEND_IS_NOT_IDENTICAL: @@ -122974,16 +123378,16 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 2952 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 3027 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op->op2_type == IS_CONST && (Z_TYPE_P(RT_CONSTANT(op, op->op2)) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(RT_CONSTANT(op, op->op2))) == 0)) { - spec = 3095 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 3105 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op->op1_type == IS_CV && (op->op2_type & (IS_CONST|IS_CV)) && !(op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) && !(op2_info & (MAY_BE_UNDEF|MAY_BE_REF))) { - spec = 3103 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; + spec = 3113 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE; } break; case ZEND_IS_EQUAL: @@ -122994,12 +123398,12 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2792 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 2802 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2867 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 2877 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } break; case ZEND_IS_NOT_EQUAL: @@ -123010,12 +123414,12 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 2942 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 2952 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3017 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; + spec = 3027 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE; } break; case ZEND_IS_SMALLER: @@ -123023,12 +123427,12 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3108 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; + spec = 3118 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3183 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; + spec = 3193 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; } break; case ZEND_IS_SMALLER_OR_EQUAL: @@ -123036,79 +123440,79 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3258 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; + spec = 3268 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; } else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) { if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3333 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; + spec = 3343 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH; } break; case ZEND_QM_ASSIGN: if (op1_info == MAY_BE_LONG) { - spec = 3420 | SPEC_RULE_OP1; + spec = 3430 | SPEC_RULE_OP1; } else if (op1_info == MAY_BE_DOUBLE) { - spec = 3425 | SPEC_RULE_OP1; + spec = 3435 | SPEC_RULE_OP1; } else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) { - spec = 3430 | SPEC_RULE_OP1; + spec = 3440 | SPEC_RULE_OP1; } break; case ZEND_PRE_INC: if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { - spec = 3408 | SPEC_RULE_RETVAL; + spec = 3418 | SPEC_RULE_RETVAL; } else if (op1_info == MAY_BE_LONG) { - spec = 3410 | SPEC_RULE_RETVAL; + spec = 3420 | SPEC_RULE_RETVAL; } break; case ZEND_PRE_DEC: if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { - spec = 3412 | SPEC_RULE_RETVAL; + spec = 3422 | SPEC_RULE_RETVAL; } else if (op1_info == MAY_BE_LONG) { - spec = 3414 | SPEC_RULE_RETVAL; + spec = 3424 | SPEC_RULE_RETVAL; } break; case ZEND_POST_INC: if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { - spec = 3416; + spec = 3426; } else if (op1_info == MAY_BE_LONG) { - spec = 3417; + spec = 3427; } break; case ZEND_POST_DEC: if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) { - spec = 3418; + spec = 3428; } else if (op1_info == MAY_BE_LONG) { - spec = 3419; + spec = 3429; } break; case ZEND_JMP: if (OP_JMP_ADDR(op, op->op1) > op) { - spec = 2566; + spec = 2576; } break; case ZEND_INIT_FCALL: if (Z_EXTRA_P(RT_CONSTANT(op, op->op2)) != 0) { - spec = 2559; + spec = 2569; } break; case ZEND_RECV: if (op->op2.num == MAY_BE_ANY) { - spec = 2560; + spec = 2570; } break; case ZEND_SEND_VAL: if (op->op1_type == IS_CONST && op->op2_type == IS_UNUSED && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) { - spec = 3470; + spec = 3480; } break; case ZEND_SEND_VAR_EX: if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) { - spec = 3465 | SPEC_RULE_OP1; + spec = 3475 | SPEC_RULE_OP1; } break; case ZEND_FE_FETCH_R: if (op->op2_type == IS_CV && (op1_info & (MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) { - spec = 3472 | SPEC_RULE_RETVAL; + spec = 3482 | SPEC_RULE_RETVAL; } break; case ZEND_FETCH_DIM_R: @@ -123116,22 +123520,22 @@ ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) { break; } - spec = 3435 | SPEC_RULE_OP1 | SPEC_RULE_OP2; + spec = 3445 | SPEC_RULE_OP1 | SPEC_RULE_OP2; } break; case ZEND_SEND_VAL_EX: if (op->op2_type == IS_UNUSED && op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) { - spec = 3471; + spec = 3481; } break; case ZEND_SEND_VAR: if (op->op2_type == IS_UNUSED && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) { - spec = 3460 | SPEC_RULE_OP1; + spec = 3470 | SPEC_RULE_OP1; } break; case ZEND_COUNT: if ((op1_info & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == MAY_BE_ARRAY) { - spec = 2561 | SPEC_RULE_OP1; + spec = 2571 | SPEC_RULE_OP1; } break; case ZEND_BW_OR: diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl index 53b1ac6baf0a..f2cfd898964e 100644 --- a/Zend/zend_vm_execute.skl +++ b/Zend/zend_vm_execute.skl @@ -1,4 +1,5 @@ #include "Zend/zend_vm_opcodes.h" +#include "Zend/zend_partial.h" {%DEFINES%} @@ -113,7 +114,7 @@ static void init_opcode_serialiser(void) Z_TYPE_INFO(tmp) = IS_LONG; for (i = 0; i < zend_handlers_count; i++) { Z_LVAL(tmp) = i; - zend_hash_index_add(zend_handlers_table, (zend_long)(uintptr_t)zend_opcode_handlers[i], &tmp); + zend_hash_index_add(zend_handlers_table, (zend_ulong)(uintptr_t)zend_opcode_handlers[i], &tmp); } } @@ -124,7 +125,7 @@ ZEND_API void ZEND_FASTCALL zend_serialize_opcode_handler(zend_op *op) if (!zend_handlers_table) { init_opcode_serialiser(); } - zv = zend_hash_index_find(zend_handlers_table, (zend_long)(uintptr_t)op->handler); + zv = zend_hash_index_find(zend_handlers_table, (zend_ulong)(uintptr_t)op->handler); ZEND_ASSERT(zv != NULL); op->handler = (zend_vm_opcode_handler_t)(uintptr_t)Z_LVAL_P(zv); } @@ -142,7 +143,7 @@ ZEND_API const void* ZEND_FASTCALL zend_get_opcode_handler_func(const zend_op *o if (!zend_handlers_table) { init_opcode_serialiser(); } - zv = zend_hash_index_find(zend_handlers_table, (zend_long)(uintptr_t)op->handler); + zv = zend_hash_index_find(zend_handlers_table, (zend_ulong)(uintptr_t)op->handler); ZEND_ASSERT(zv != NULL); return zend_opcode_handler_funcs[Z_LVAL_P(zv)]; #elif ZEND_VM_KIND == ZEND_VM_KIND_CALL diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index ed0256832d58..cef44695be85 100755 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -4,15 +4,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -23,15 +22,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/Zend/zend_vm_handlers.h b/Zend/zend_vm_handlers.h index 6f1595195450..7ffe2c220a02 100644 --- a/Zend/zend_vm_handlers.h +++ b/Zend/zend_vm_handlers.h @@ -1087,507 +1087,511 @@ _(2556, ZEND_INIT_PARENT_PROPERTY_HOOK_CALL_SPEC_CONST_UNUSED) \ _(2557, ZEND_DECLARE_ATTRIBUTED_CONST_SPEC_CONST_CONST) \ _(2558, ZEND_TYPE_ASSERT_SPEC_CONST) \ - _(2559, ZEND_INIT_FCALL_OFFSET_SPEC_CONST) \ - _(2560, ZEND_RECV_NOTYPE_SPEC) \ - _(2562, ZEND_COUNT_ARRAY_SPEC_TMP_UNUSED) \ - _(2565, ZEND_COUNT_ARRAY_SPEC_CV_UNUSED) \ - _(2566, ZEND_JMP_FORWARD_SPEC) \ - _(2572, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ - _(2573, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2574, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2576, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2577, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ - _(2578, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2579, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2581, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2559, ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_CONST) \ + _(2562, ZEND_CALLABLE_CONVERT_PARTIAL_SPEC_UNUSED) \ + _(2564, ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_CONST) \ + _(2567, ZEND_SEND_PLACEHOLDER_SPEC_UNUSED_UNUSED) \ + _(2569, ZEND_INIT_FCALL_OFFSET_SPEC_CONST) \ + _(2570, ZEND_RECV_NOTYPE_SPEC) \ + _(2572, ZEND_COUNT_ARRAY_SPEC_TMP_UNUSED) \ + _(2575, ZEND_COUNT_ARRAY_SPEC_CV_UNUSED) \ + _(2576, ZEND_JMP_FORWARD_SPEC) \ + _(2582, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ + _(2583, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2584, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2586, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2587, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ _(2588, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2589, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2591, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2597, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \ - _(2598, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2599, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2601, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2602, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \ - _(2603, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2604, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2606, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2597, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ + _(2598, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2599, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2601, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2607, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \ + _(2608, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2609, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2611, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2612, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \ _(2613, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2614, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2616, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2622, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2623, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2624, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2626, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2627, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2628, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2629, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2631, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2622, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \ + _(2623, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2624, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2626, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2632, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2633, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2634, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2636, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2637, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \ _(2638, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2639, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2641, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2643, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \ - _(2644, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \ - _(2646, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \ - _(2647, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ - _(2648, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2649, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2651, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2652, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ - _(2653, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2654, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2656, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2647, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2648, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2649, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2651, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2653, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \ + _(2654, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \ + _(2656, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \ + _(2657, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ + _(2658, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2659, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2661, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2662, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ _(2663, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2664, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2666, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2668, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \ - _(2669, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \ - _(2671, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \ - _(2672, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \ - _(2673, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2674, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2676, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2677, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \ - _(2678, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2679, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2681, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2672, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ + _(2673, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2674, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2676, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2678, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \ + _(2679, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \ + _(2681, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \ + _(2682, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \ + _(2683, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2684, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2686, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2687, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \ _(2688, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2689, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2691, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2693, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(2694, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(2696, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(2697, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2698, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2699, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2701, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2702, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2703, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2704, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2706, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2697, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \ + _(2698, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2699, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2701, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2703, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(2704, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(2706, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(2707, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2708, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2709, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2711, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2712, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \ _(2713, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2714, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2716, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2722, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ - _(2723, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2724, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2726, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2727, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ - _(2728, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2729, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2731, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2722, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2723, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2724, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2726, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2732, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ + _(2733, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2734, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2736, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2737, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ _(2738, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2739, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ _(2741, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ - _(2747, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \ - _(2748, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2749, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2751, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2752, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \ - _(2753, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2754, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2756, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2747, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \ + _(2748, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2749, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2751, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \ + _(2757, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \ + _(2758, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2759, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2761, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2762, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \ _(2763, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2764, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ _(2766, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2772, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2773, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2774, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2776, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2777, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2778, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2779, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2781, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2772, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \ + _(2773, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2774, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2776, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2782, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2783, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2784, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2786, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2787, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \ _(2788, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2789, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ _(2791, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2807, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(2808, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2809, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2810, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2811, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2812, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2813, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2814, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2815, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2819, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2820, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2821, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2822, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(2823, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2824, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2825, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2826, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2827, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2828, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2829, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2830, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2834, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2835, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2836, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2852, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(2853, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2854, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2855, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2856, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2857, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2858, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2859, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2860, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2864, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2865, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2866, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2882, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2883, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2884, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2885, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2886, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2887, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2888, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2889, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2890, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2894, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2895, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2896, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2897, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2898, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2899, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2900, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2901, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2902, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2903, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2904, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2905, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2909, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2910, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2911, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2927, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(2928, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2929, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2930, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2931, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2932, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2933, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2934, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2935, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2939, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(2940, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2941, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2957, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(2958, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2959, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2960, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2961, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2962, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2963, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2964, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2965, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2969, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2970, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2971, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2972, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(2973, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(2974, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(2975, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2976, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2977, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2978, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2979, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2980, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(2984, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(2985, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(2986, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3002, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(3003, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3004, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3005, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3006, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3007, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3008, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3009, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3010, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3014, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3015, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3016, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3032, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3033, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3034, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3035, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3036, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3037, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3038, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3039, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3040, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3044, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3045, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3046, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3047, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3048, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3049, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3050, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3051, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3052, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3053, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3054, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3055, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3059, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3060, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3061, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3077, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3078, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3079, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3080, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3081, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3082, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3083, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3084, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3085, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3089, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3090, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3091, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3092, ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST) \ - _(3093, ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3094, ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3095, ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST) \ - _(3096, ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3097, ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3098, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \ - _(3102, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \ - _(3103, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \ - _(3107, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \ - _(3111, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \ - _(3112, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3113, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3114, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \ - _(3115, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3116, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3120, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \ - _(3121, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3122, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3123, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \ - _(3124, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3125, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3126, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3127, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3128, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3129, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3130, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3131, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3135, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3136, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3137, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3138, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \ - _(3139, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3140, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3141, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3142, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3143, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3144, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3145, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3146, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3168, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \ - _(3169, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3170, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3171, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3172, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3173, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3174, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3175, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3176, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3180, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3181, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3182, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3186, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(3187, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3188, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3189, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(3190, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3191, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3195, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(3196, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3197, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3198, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3202, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3203, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3204, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3205, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3206, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3210, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3211, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3212, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3213, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3214, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3215, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3216, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3217, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3218, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3219, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3220, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3221, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3243, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3244, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3245, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3246, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3247, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3248, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3249, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3250, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3251, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3255, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3256, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3257, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3261, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \ - _(3262, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3263, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3264, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \ - _(3265, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3266, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3270, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \ - _(3271, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3272, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3273, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3277, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3278, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3279, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3280, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3281, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3285, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3286, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3287, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3288, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(3289, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3290, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3291, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3292, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3293, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3294, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3295, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3296, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3318, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ - _(3319, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3320, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3321, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3322, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3323, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3324, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3325, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3326, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3330, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ - _(3331, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3332, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3336, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(3337, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3338, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3339, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(3340, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3341, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3345, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \ - _(3346, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ - _(3347, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ - _(3348, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3352, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3353, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3354, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3355, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3356, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3360, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3361, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3362, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3363, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3364, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3365, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3366, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3367, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3368, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3369, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3370, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3371, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3393, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ - _(3394, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ - _(3395, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ - _(3396, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3397, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3398, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3399, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3400, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3401, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3405, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ - _(3406, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ - _(3407, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ - _(3408, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \ - _(3409, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \ - _(3410, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \ - _(3411, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \ - _(3412, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \ - _(3413, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \ - _(3414, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \ - _(3415, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \ - _(3416, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \ - _(3417, ZEND_POST_INC_LONG_SPEC_CV) \ - _(3418, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \ - _(3419, ZEND_POST_DEC_LONG_SPEC_CV) \ - _(3420, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \ - _(3421, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \ - _(3422, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \ - _(3424, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \ - _(3425, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \ - _(3426, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \ - _(3427, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \ - _(3429, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \ - _(3430, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \ - _(3431, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \ - _(3432, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \ - _(3434, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \ - _(3436, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \ - _(3437, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \ - _(3439, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \ - _(3440, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \ - _(3441, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ - _(3442, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ - _(3444, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ - _(3445, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \ - _(3446, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ - _(3447, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ - _(3449, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ - _(3455, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \ - _(3456, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \ - _(3457, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \ - _(3459, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \ - _(3462, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \ - _(3464, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \ - _(3467, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \ - _(3469, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \ - _(3470, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \ - _(3471, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \ - _(3472, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \ - _(3473, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \ - _(3473+1, ZEND_NULL) + _(2797, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2798, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2799, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2801, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2817, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(2818, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2819, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2820, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2821, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2822, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2823, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2824, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2825, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2829, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2830, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2831, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2832, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(2833, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2834, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2835, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2836, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2837, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2838, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2839, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2840, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2844, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2845, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2846, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2862, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(2863, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2864, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2865, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2866, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2867, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2868, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2869, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2870, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2874, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2875, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2876, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2892, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2893, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2894, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2895, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2896, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2897, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2898, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2899, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2900, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2904, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2905, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2906, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2907, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2908, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2909, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2910, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2911, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2912, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2913, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2914, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2915, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2919, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2920, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2921, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2937, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(2938, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2939, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2940, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2941, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2942, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2943, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2944, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2945, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2949, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(2950, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2951, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2967, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(2968, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2969, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2970, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2971, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2972, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2973, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2974, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2975, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2979, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2980, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2981, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2982, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(2983, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(2984, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(2985, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2986, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2987, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2988, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2989, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2990, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(2994, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(2995, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(2996, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3012, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(3013, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3014, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3015, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3016, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3017, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3018, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3019, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3020, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3024, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3025, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3026, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3042, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3043, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3044, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3045, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3046, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3047, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3048, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3049, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3050, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3054, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3055, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3056, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3057, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3058, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3059, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3060, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3061, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3062, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3063, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3064, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3065, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3069, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3070, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3071, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3087, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3088, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3089, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3090, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3091, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3092, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3093, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3094, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3095, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3099, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3100, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3101, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3102, ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST) \ + _(3103, ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3104, ZEND_IS_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3105, ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST) \ + _(3106, ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3107, ZEND_IS_NOT_IDENTICAL_EMPTY_ARRAY_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3108, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CONST) \ + _(3112, ZEND_IS_IDENTICAL_NOTHROW_SPEC_CV_CV) \ + _(3113, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CONST) \ + _(3117, ZEND_IS_NOT_IDENTICAL_NOTHROW_SPEC_CV_CV) \ + _(3121, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \ + _(3122, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3123, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3124, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \ + _(3125, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3126, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3130, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \ + _(3131, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3132, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3133, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \ + _(3134, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3135, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3136, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3137, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3138, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3139, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3140, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3141, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3145, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3146, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3147, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3148, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \ + _(3149, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3150, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3151, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3152, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3153, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3154, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3155, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3156, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3160, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3161, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3162, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3178, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \ + _(3179, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3180, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3181, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3182, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3183, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3184, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3185, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3186, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3190, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3191, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3192, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3196, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(3197, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3198, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3199, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(3200, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3201, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3205, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(3206, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3207, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3208, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3209, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3210, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3211, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3212, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3213, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3214, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3215, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3216, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3220, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3221, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3222, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3223, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3224, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3225, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3226, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3227, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3228, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3229, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3230, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3231, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3235, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3236, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3237, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3253, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3254, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3255, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3256, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3257, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3258, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3259, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3260, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3261, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3265, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3266, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3267, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3271, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \ + _(3272, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3273, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3274, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \ + _(3275, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3276, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3280, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \ + _(3281, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3282, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3283, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(3284, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3285, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3286, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3287, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3288, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3289, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3290, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3291, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3295, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3296, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3297, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3298, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(3299, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3300, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3301, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3302, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3303, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3304, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3305, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3306, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3310, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3311, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3312, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3328, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \ + _(3329, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3330, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3331, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3332, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3333, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3334, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3335, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3336, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3340, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \ + _(3341, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3342, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3346, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(3347, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3348, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3349, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(3350, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3351, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3355, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \ + _(3356, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \ + _(3357, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \ + _(3358, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3359, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3360, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3361, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3362, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3363, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3364, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3365, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3366, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3370, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3371, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3372, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3373, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3374, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3375, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3376, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3377, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3378, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3379, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3380, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3381, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3385, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3386, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3387, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3403, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \ + _(3404, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \ + _(3405, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \ + _(3406, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3407, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3408, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3409, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3410, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3411, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3415, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \ + _(3416, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \ + _(3417, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \ + _(3418, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \ + _(3419, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \ + _(3420, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED) \ + _(3421, ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED) \ + _(3422, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED) \ + _(3423, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED) \ + _(3424, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED) \ + _(3425, ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED) \ + _(3426, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV) \ + _(3427, ZEND_POST_INC_LONG_SPEC_CV) \ + _(3428, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV) \ + _(3429, ZEND_POST_DEC_LONG_SPEC_CV) \ + _(3430, ZEND_QM_ASSIGN_LONG_SPEC_CONST) \ + _(3431, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \ + _(3432, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \ + _(3434, ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV) \ + _(3435, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \ + _(3436, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \ + _(3437, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \ + _(3439, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \ + _(3440, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \ + _(3441, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \ + _(3442, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \ + _(3444, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \ + _(3446, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \ + _(3447, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \ + _(3449, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \ + _(3450, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \ + _(3451, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ + _(3452, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ + _(3454, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ + _(3455, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \ + _(3456, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ + _(3457, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ + _(3459, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \ + _(3465, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \ + _(3466, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \ + _(3467, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \ + _(3469, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \ + _(3472, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \ + _(3474, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \ + _(3477, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_UNUSED) \ + _(3479, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_UNUSED) \ + _(3480, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \ + _(3481, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \ + _(3482, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \ + _(3483, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \ + _(3483+1, ZEND_NULL) diff --git a/Zend/zend_vm_opcodes.c b/Zend/zend_vm_opcodes.c index 87cd00a6f8b5..9846e36037b9 100644 --- a/Zend/zend_vm_opcodes.c +++ b/Zend/zend_vm_opcodes.c @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -22,7 +21,7 @@ #include #include -static const char *zend_vm_opcodes_names[212] = { +static const char *zend_vm_opcodes_names[214] = { "ZEND_NOP", "ZEND_ADD", "ZEND_SUB", @@ -235,9 +234,11 @@ static const char *zend_vm_opcodes_names[212] = { "ZEND_INIT_PARENT_PROPERTY_HOOK_CALL", "ZEND_DECLARE_ATTRIBUTED_CONST", "ZEND_TYPE_ASSERT", + "ZEND_CALLABLE_CONVERT_PARTIAL", + "ZEND_SEND_PLACEHOLDER", }; -static uint32_t zend_vm_opcodes_flags[212] = { +static uint32_t zend_vm_opcodes_flags[214] = { 0x00000000, 0x00000b0b, 0x00000b0b, @@ -450,6 +451,8 @@ static uint32_t zend_vm_opcodes_flags[212] = { 0x01001103, 0x00000303, 0x01000003, + 0x010003a0, + 0x00001301, }; ZEND_API const char* ZEND_FASTCALL zend_get_opcode_name(uint8_t opcode) { diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index 7aae4d0e55f1..1d204b9281f5 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -332,7 +331,9 @@ END_EXTERN_C() #define ZEND_INIT_PARENT_PROPERTY_HOOK_CALL 209 #define ZEND_DECLARE_ATTRIBUTED_CONST 210 #define ZEND_TYPE_ASSERT 211 +#define ZEND_CALLABLE_CONVERT_PARTIAL 212 +#define ZEND_SEND_PLACEHOLDER 213 -#define ZEND_VM_LAST_OPCODE 211 +#define ZEND_VM_LAST_OPCODE 213 #endif diff --git a/Zend/zend_vm_trace_handlers.h b/Zend/zend_vm_trace_handlers.h index eaf97e012cac..e7510f406711 100644 --- a/Zend/zend_vm_trace_handlers.h +++ b/Zend/zend_vm_trace_handlers.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_vm_trace_lines.h b/Zend/zend_vm_trace_lines.h index 740e18776395..8c194edbcde1 100644 --- a/Zend/zend_vm_trace_lines.h +++ b/Zend/zend_vm_trace_lines.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_vm_trace_map.h b/Zend/zend_vm_trace_map.h index d84aa0442d26..18c705b454d5 100644 --- a/Zend/zend_vm_trace_map.h +++ b/Zend/zend_vm_trace_map.h @@ -2,15 +2,14 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) | + | Copyright © Zend Technologies Ltd., a subsidiary company of | + | Perforce Software, Inc., and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/Zend/zend_weakrefs.c b/Zend/zend_weakrefs.c index 8c1263885bf6..7303226a5d42 100644 --- a/Zend/zend_weakrefs.c +++ b/Zend/zend_weakrefs.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: krakjoe@php.net | +----------------------------------------------------------------------+ @@ -109,15 +107,15 @@ static void zend_weakref_register(zend_object *object, void *payload) { void *tagged_ptr = Z_PTR_P(zv); if (ZEND_WEAKREF_GET_TAG(tagged_ptr) == ZEND_WEAKREF_TAG_HT) { HashTable *ht = ZEND_WEAKREF_GET_PTR(tagged_ptr); - zend_hash_index_add_new_ptr(ht, (zend_ulong) payload, payload); + zend_hash_index_add_new_ptr(ht, (zend_ulong)(uintptr_t) payload, payload); return; } /* Convert simple pointer to hashtable. */ HashTable *ht = emalloc(sizeof(HashTable)); zend_hash_init(ht, 0, NULL, NULL, 0); - zend_hash_index_add_new_ptr(ht, (zend_ulong) tagged_ptr, tagged_ptr); - zend_hash_index_add_new_ptr(ht, (zend_ulong) payload, payload); + zend_hash_index_add_new_ptr(ht, (zend_ulong)(uintptr_t) tagged_ptr, tagged_ptr); + zend_hash_index_add_new_ptr(ht, (zend_ulong)(uintptr_t) payload, payload); /* Replace the single WeakMap or WeakReference entry in EG(weakrefs) with a HashTable with 2 entries in place. */ ZVAL_PTR(zv, ZEND_WEAKREF_ENCODE(ht, ZEND_WEAKREF_TAG_HT)); } @@ -146,11 +144,11 @@ static void zend_weakref_unregister(zend_object *object, void *payload, bool wea HashTable *ht = ptr; #if ZEND_DEBUG - void *old_payload = zend_hash_index_find_ptr(ht, (zend_ulong) payload); + void *old_payload = zend_hash_index_find_ptr(ht, (zend_ulong)(uintptr_t) payload); ZEND_ASSERT(old_payload && "Weakref not registered?"); ZEND_ASSERT(old_payload == payload); #endif - zend_hash_index_del(ht, (zend_ulong) payload); + zend_hash_index_del(ht, (zend_ulong)(uintptr_t) payload); if (zend_hash_num_elements(ht) == 0) { GC_DEL_FLAGS(object, IS_OBJ_WEAKLY_REFERENCED); zend_hash_destroy(ht); diff --git a/Zend/zend_weakrefs.h b/Zend/zend_weakrefs.h index 00d4fbcc6bc4..41662c33a300 100644 --- a/Zend/zend_weakrefs.h +++ b/Zend/zend_weakrefs.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: krakjoe@php.net | +----------------------------------------------------------------------+ diff --git a/build/Makefile.gcov b/build/Makefile.gcov index de85893398cd..5097bfaaa277 100644 --- a/build/Makefile.gcov +++ b/build/Makefile.gcov @@ -16,15 +16,6 @@ LCOV_EXCLUDES = \ '$(top_srcdir)/parse_date.re' \ '$(top_srcdir)/parse_iso_intervals.re' -GCOVR_EXCLUDES = \ - 'ext/bcmath/libbcmath/.*' \ - 'ext/date/lib/.*' \ - 'ext/fileinfo/libmagic/.*' \ - 'ext/gd/libgd/.*' \ - 'ext/hash/sha3/.*' \ - 'ext/mbstring/libmbfl/.*' \ - 'ext/pcre/pcre2lib/.*' - lcov: lcov-html php_lcov.info: @@ -48,15 +39,11 @@ gcovr-html: @echo "Generating gcovr HTML" @rm -rf gcovr_html/ @mkdir gcovr_html - gcovr -sr . -o gcovr_html/index.html --html --html-details \ - --exclude-directories 'ext/date/lib$$' \ - $(foreach lib, $(GCOVR_EXCLUDES), -e $(lib)) + gcovr -r . -o gcovr_html/index.html --html --html-details gcovr-xml: @echo "Generating gcovr XML" @rm -f gcovr.xml - gcovr -sr . -o gcovr.xml --xml \ - --exclude-directories 'ext/date/lib$$' \ - $(foreach lib, $(GCOVR_EXCLUDES), -e $(lib)) + gcovr -r . -o gcovr.xml --xml .PHONY: gcovr-html lcov-html php_lcov.info diff --git a/build/gen_stub.php b/build/gen_stub.php index 31b10ada50bb..619c4c905b60 100755 --- a/build/gen_stub.php +++ b/build/gen_stub.php @@ -26,6 +26,7 @@ const PHP_83_VERSION_ID = 80300; const PHP_84_VERSION_ID = 80400; const PHP_85_VERSION_ID = 80500; +const PHP_86_VERSION_ID = 80600; const ALL_PHP_VERSION_IDS = [ PHP_70_VERSION_ID, PHP_80_VERSION_ID, @@ -34,6 +35,7 @@ PHP_83_VERSION_ID, PHP_84_VERSION_ID, PHP_85_VERSION_ID, + PHP_86_VERSION_ID, ]; // file_put_contents() but with a success message printed after saving @@ -901,6 +903,19 @@ public function getDeclarationName(): string } } +class EnumCaseName { + public function __construct( + public readonly Name $enum, + public readonly string $case + ) { + } + + public function __toString(): string + { + return "$this->enum::$this->case"; + } +} + interface FunctionOrMethodName { public function getDeclaration(): string; public function getArgInfoName(): string; @@ -1169,6 +1184,32 @@ public function isEmpty(): bool { ); } + /** + * If we have ZEND_ACC2_ flags, represent as 'ZEND_FENTRY_FLAGS(flags1, flags2)'. + * Otherwise, represent as just 'flags1' (backwards compatible). + */ + private function formatFlags(array $flags): string { + $flags1 = []; + $flags2 = []; + foreach ($flags as $flag) { + if (str_starts_with($flag, 'ZEND_ACC2_')) { + $flags2[] = $flag; + } else { + $flags1[] = $flag; + } + } + + if ($flags2 !== []) { + return sprintf( + 'ZEND_FENTRY_FLAGS(%s, %s)', + $flags1 === [] ? 0 : implode("|", $flags1), + implode("|", $flags2), + ); + } + + return implode("|", $flags1); + } + public function generateVersionDependentFlagCode( string $codeTemplate, ?int $phpVersionIdMinimumCompatibility, @@ -1184,7 +1225,7 @@ public function generateVersionDependentFlagCode( if (empty($flagsByPhpVersions[$currentPhpVersion])) { return ''; } - return sprintf($codeTemplate, implode("|", $flagsByPhpVersions[$currentPhpVersion])); + return sprintf($codeTemplate, $this->formatFlags($flagsByPhpVersions[$currentPhpVersion])); } ksort($flagsByPhpVersions); @@ -1225,7 +1266,7 @@ public function generateVersionDependentFlagCode( reset($flagsByPhpVersions); $firstVersion = key($flagsByPhpVersions); if ($firstVersion === $phpVersionIdMinimumCompatibility) { - return sprintf($codeTemplate, implode("|", reset($flagsByPhpVersions))); + return sprintf($codeTemplate, $this->formatFlags(reset($flagsByPhpVersions))); } } @@ -1238,7 +1279,7 @@ public function generateVersionDependentFlagCode( $code .= "$if (PHP_VERSION_ID >= $version)\n"; - $code .= sprintf($codeTemplate, implode("|", $versionFlags)); + $code .= sprintf($codeTemplate, $this->formatFlags($versionFlags)); $code .= $endif; $i++; @@ -1263,6 +1304,7 @@ public function __construct( public ?FunctionOrMethodName $alias, private readonly bool $isDeprecated, private bool $supportsCompileTimeEval, + private bool $forbidDynamicCalls, public readonly bool $verify, public /* readonly */ array $args, public /* readonly */ ReturnInfo $return, @@ -1570,6 +1612,10 @@ private function getArginfoFlagsByPhpVersions(): VersionFlags $flags->addForVersionsAbove("ZEND_ACC_NODISCARD", PHP_85_VERSION_ID); } + if ($this->forbidDynamicCalls) { + $flags->addForVersionsAbove("ZEND_ACC2_FORBID_DYN_CALLS", PHP_86_VERSION_ID); + } + return $flags; } @@ -2341,7 +2387,17 @@ protected function getFlagsByPhpVersion(): VersionFlags $flags = "ZEND_ACC_PRIVATE"; } - return new VersionFlags([$flags]); + $versionFlags = new VersionFlags([$flags]); + + if ($this->flags & Modifiers::PUBLIC_SET) { + $versionFlags->addForVersionsAbove("ZEND_ACC_PUBLIC_SET", PHP_84_VERSION_ID); + } elseif ($this->flags & Modifiers::PROTECTED_SET) { + $versionFlags->addForVersionsAbove("ZEND_ACC_PROTECTED_SET", PHP_84_VERSION_ID); + } elseif ($this->flags & Modifiers::PRIVATE_SET) { + $versionFlags->addForVersionsAbove("ZEND_ACC_PRIVATE_SET", PHP_84_VERSION_ID); + } + + return $versionFlags; } protected function getTypeCode(string $variableLikeName, string &$code): string @@ -2362,8 +2418,8 @@ protected function getTypeCode(string $variableLikeName, string &$code): string $code .= "\t{$variableLikeType}_{$variableLikeName}_type_list->num_types = $classTypeCount;\n"; foreach ($arginfoType->classTypes as $k => $classType) { - $escapedClassName = $classType->toEscapedName(); - $code .= "\t{$variableLikeType}_{$variableLikeName}_type_list->types[$k] = (zend_type) ZEND_TYPE_INIT_CLASS({$variableLikeType}_{$variableLikeName}_class_{$escapedClassName}, 0, 0);\n"; + $varEscapedClassName = $classType->toVarEscapedName(); + $code .= "\t{$variableLikeType}_{$variableLikeName}_type_list->types[$k] = (zend_type) ZEND_TYPE_INIT_CLASS({$variableLikeType}_{$variableLikeName}_class_{$varEscapedClassName}, 0, 0);\n"; } $typeMaskCode = $this->type->toArginfoType()->toTypeMask(); @@ -2437,6 +2493,17 @@ protected function addModifiersToFieldSynopsis(DOMDocument $doc, DOMElement $fie $fieldsynopsisElement->appendChild(new DOMText("\n$indentation")); $fieldsynopsisElement->appendChild($doc->createElement("modifier", "private")); } + + if ($this->flags & Modifiers::PUBLIC_SET) { + $fieldsynopsisElement->appendChild(new DOMText("\n$indentation")); + $fieldsynopsisElement->appendChild($doc->createElement("modifier", "public(set)")); + } elseif ($this->flags & Modifiers::PROTECTED_SET) { + $fieldsynopsisElement->appendChild(new DOMText("\n$indentation")); + $fieldsynopsisElement->appendChild($doc->createElement("modifier", "protected(set)")); + } elseif ($this->flags & Modifiers::PRIVATE_SET) { + $fieldsynopsisElement->appendChild(new DOMText("\n$indentation")); + $fieldsynopsisElement->appendChild($doc->createElement("modifier", "private(set)")); + } } } @@ -2887,6 +2954,11 @@ class StringBuilder { '8.5' => 'ZEND_STR_8_DOT_5', ]; + // NEW in 8.6 + private const PHP_86_KNOWN = [ + "arguments" => "ZEND_STR_ARGUMENTS", + ]; + /** * Get an array of three strings: * - declaration of zend_string, if needed, or empty otherwise @@ -2925,6 +2997,10 @@ public static function getString( } $include = self::PHP_80_KNOWN; switch ($minPhp) { + case PHP_86_VERSION_ID: + $include = array_merge($include, self::PHP_86_KNOWN); + // Intentional fall through + case PHP_85_VERSION_ID: $include = array_merge($include, self::PHP_85_KNOWN); // Intentional fall through @@ -3118,15 +3194,15 @@ protected function addModifiersToFieldSynopsis(DOMDocument $doc, DOMElement $fie } class EnumCaseInfo { - public function __construct( - public readonly string $name, + public readonly EnumCaseName $name, private readonly ?Expr $value, + private readonly ?string $valueString ) {} /** @param array $allConstInfos */ public function getDeclaration(array $allConstInfos): string { - $escapedName = addslashes($this->name); + $escapedName = addslashes($this->name->case); if ($this->value === null) { return "\n\tzend_enum_add_case_cstr(class_entry, \"$escapedName\", NULL);\n"; } @@ -3138,6 +3214,55 @@ public function getDeclaration(array $allConstInfos): string { return $code; } + + /** @param array $allConstInfos */ + public function getEnumSynopsisItemElement(DOMDocument $doc, array $allConstInfos, int $indentationLevel): DOMElement + { + $indentation = str_repeat(" ", $indentationLevel); + + $itemElement = $doc->createElement("enumitem"); + + $identifierElement = $doc->createElement("enumidentifier", $this->name->case); + + $itemElement->appendChild(new DOMText("\n$indentation ")); + $itemElement->appendChild($identifierElement); + + $valueString = $this->getEnumSynopsisValueString($allConstInfos); + if ($valueString) { + $itemElement->appendChild(new DOMText("\n$indentation ")); + $valueElement = $doc->createElement("enumvalue", $valueString); + $itemElement->appendChild($valueElement); + } + + $descriptionElement = $doc->createElement("enumitemdescription", "Description."); + $itemElement->appendChild(new DOMText("\n$indentation ")); + $itemElement->appendChild($descriptionElement); + + $itemElement->appendChild(new DOMText("\n$indentation")); + + return $itemElement; + } + + /** @param array $allConstInfos */ + public function getEnumSynopsisValueString(array $allConstInfos): ?string + { + if ($this->value === null) { + return null; + } + + $value = EvaluatedValue::createFromExpression($this->value, null, null, $allConstInfos); + if ($value->isUnknownConstValue) { + return null; + } + + if ($value->originatingConsts) { + return implode("\n", array_map(function (ConstInfo $const) use ($allConstInfos) { + return $const->getFieldSynopsisValueString($allConstInfos); + }, $value->originatingConsts)); + } + + return $this->valueString; + } } // Instances of AttributeInfo are immutable and do not need to be cloned @@ -3467,7 +3592,7 @@ public function getCDeclarations(): string $i = 1; foreach ($this->enumCaseInfos as $case) { - $cName = 'ZEND_ENUM_' . str_replace('\\', '_', $this->name->toString()) . '_' . $case->name; + $cName = 'ZEND_ENUM_' . str_replace('\\', '_', $this->name->toString()) . '_' . $case->name->case; $code .= "\t{$cName} = {$i},\n"; $i++; } @@ -3560,8 +3685,12 @@ public function getClassSynopsisDocument(array $classMap, array $allConstInfos): * @param array $allConstInfos */ public function getClassSynopsisElement(DOMDocument $doc, array $classMap, array $allConstInfos): ?DOMElement { - $classSynopsis = $doc->createElement("classsynopsis"); - $classSynopsis->setAttribute("class", $this->type === "interface" ? "interface" : "class"); + if ($this->type === "enum") { + $classSynopsis = $doc->createElement("enumsynopsis"); + } else { + $classSynopsis = $doc->createElement("classsynopsis"); + $classSynopsis->setAttribute("class", $this->type === "interface" ? "interface" : "class"); + } $namespace = $this->getNamespace(); if ($namespace) { @@ -3581,108 +3710,120 @@ public function getClassSynopsisElement(DOMDocument $doc, array $classMap, array $classSynopsisIndentation = str_repeat(" ", $classSynopsisIndentationLevel); } - $exceptionOverride = $this->type === "class" && $this->isException($classMap) ? "exception" : null; - $ooElement = self::createOoElement($doc, $this, $exceptionOverride, true, null, $classSynopsisIndentationLevel + 1); - if (!$ooElement) { - return null; - } $classSynopsis->appendChild(new DOMText("\n$classSynopsisIndentation ")); - $classSynopsis->appendChild($ooElement); - foreach ($this->extends as $k => $parent) { - $parentInfo = $classMap[$parent->toString()] ?? null; - if ($parentInfo === null) { - throw new Exception("Missing parent class " . $parent->toString()); - } + if ($this->type === "enum") { + $enumName = $doc->createElement("enumname", $this->getClassName()); + $classSynopsis->appendChild($enumName); - $ooElement = self::createOoElement( - $doc, - $parentInfo, - null, - false, - $k === 0 ? "extends" : null, - $classSynopsisIndentationLevel + 1 - ); + foreach ($this->enumCaseInfos as $enumCaseInfo) { + $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); + $enumItemElement = $enumCaseInfo->getEnumSynopsisItemElement($doc, $allConstInfos, $classSynopsisIndentationLevel + 1); + $classSynopsis->appendChild($enumItemElement); + } + } else { + $exceptionOverride = $this->type === "class" && $this->isException($classMap) ? "exception" : null; + $ooElement = self::createOoElement($doc, $this, $exceptionOverride, true, null, $classSynopsisIndentationLevel + 1); if (!$ooElement) { return null; } - - $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); $classSynopsis->appendChild($ooElement); - } - foreach ($this->implements as $k => $interface) { - $interfaceInfo = $classMap[$interface->toString()] ?? null; - if (!$interfaceInfo) { - throw new Exception("Missing implemented interface " . $interface->toString()); + foreach ($this->extends as $k => $parent) { + $parentInfo = $classMap[$parent->toString()] ?? null; + if ($parentInfo === null) { + throw new Exception("Missing parent class " . $parent->toString()); + } + + $ooElement = self::createOoElement( + $doc, + $parentInfo, + null, + false, + $k === 0 ? "extends" : null, + $classSynopsisIndentationLevel + 1 + ); + if (!$ooElement) { + return null; + } + + $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); + $classSynopsis->appendChild($ooElement); } - $ooElement = self::createOoElement($doc, $interfaceInfo, null, false, $k === 0 ? "implements" : null, $classSynopsisIndentationLevel + 1); - if (!$ooElement) { - return null; + foreach ($this->implements as $k => $interface) { + $interfaceInfo = $classMap[$interface->toString()] ?? null; + if (!$interfaceInfo) { + throw new Exception("Missing implemented interface " . $interface->toString()); + } + + $ooElement = self::createOoElement($doc, $interfaceInfo, null, false, $k === 0 ? "implements" : null, $classSynopsisIndentationLevel + 1); + if (!$ooElement) { + return null; + } + $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); + $classSynopsis->appendChild($ooElement); } - $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); - $classSynopsis->appendChild($ooElement); - } - /** @var array $parentsWithInheritedConstants */ - $parentsWithInheritedConstants = []; - /** @var array $parentsWithInheritedProperties */ - $parentsWithInheritedProperties = []; - /** @var array $parentsWithInheritedMethods */ - $parentsWithInheritedMethods = []; + /** @var array $parentsWithInheritedConstants */ + $parentsWithInheritedConstants = []; + /** @var array $parentsWithInheritedProperties */ + $parentsWithInheritedProperties = []; + /** @var array $parentsWithInheritedMethods */ + $parentsWithInheritedMethods = []; - $this->collectInheritedMembers( - $parentsWithInheritedConstants, - $parentsWithInheritedProperties, - $parentsWithInheritedMethods, - $this->hasConstructor(), - $classMap - ); + $this->collectInheritedMembers( + $parentsWithInheritedConstants, + $parentsWithInheritedProperties, + $parentsWithInheritedMethods, + $this->hasConstructor(), + $classMap + ); - $this->appendInheritedMemberSectionToClassSynopsis( - $doc, - $classSynopsis, - $parentsWithInheritedConstants, - "&Constants;", - "&InheritedConstants;", - $classSynopsisIndentationLevel + 1 - ); + $this->appendInheritedMemberSectionToClassSynopsis( + $doc, + $classSynopsis, + $parentsWithInheritedConstants, + "&Constants;", + "&InheritedConstants;", + $classSynopsisIndentationLevel + 1 + ); - if (!empty($this->constInfos)) { - $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); - $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Constants;"); - $classSynopsisInfo->setAttribute("role", "comment"); - $classSynopsis->appendChild($classSynopsisInfo); + if (!empty($this->constInfos)) { + $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); + $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Constants;"); + $classSynopsisInfo->setAttribute("role", "comment"); + $classSynopsis->appendChild($classSynopsisInfo); - foreach ($this->constInfos as $constInfo) { - $classSynopsis->appendChild(new DOMText("\n$classSynopsisIndentation ")); - $fieldSynopsisElement = $constInfo->getFieldSynopsisElement($doc, $allConstInfos, $classSynopsisIndentationLevel + 1); - $classSynopsis->appendChild($fieldSynopsisElement); + foreach ($this->constInfos as $constInfo) { + $classSynopsis->appendChild(new DOMText("\n$classSynopsisIndentation ")); + $fieldSynopsisElement = $constInfo->getFieldSynopsisElement($doc, $allConstInfos, $classSynopsisIndentationLevel + 1); + $classSynopsis->appendChild($fieldSynopsisElement); + } } - } - if (!empty($this->propertyInfos)) { - $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); - $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Properties;"); - $classSynopsisInfo->setAttribute("role", "comment"); - $classSynopsis->appendChild($classSynopsisInfo); + if (!empty($this->propertyInfos)) { + $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); + $classSynopsisInfo = $doc->createElement("classsynopsisinfo", "&Properties;"); + $classSynopsisInfo->setAttribute("role", "comment"); + $classSynopsis->appendChild($classSynopsisInfo); - foreach ($this->propertyInfos as $propertyInfo) { - $classSynopsis->appendChild(new DOMText("\n$classSynopsisIndentation ")); - $fieldSynopsisElement = $propertyInfo->getFieldSynopsisElement($doc, $allConstInfos, $classSynopsisIndentationLevel + 1); - $classSynopsis->appendChild($fieldSynopsisElement); + foreach ($this->propertyInfos as $propertyInfo) { + $classSynopsis->appendChild(new DOMText("\n$classSynopsisIndentation ")); + $fieldSynopsisElement = $propertyInfo->getFieldSynopsisElement($doc, $allConstInfos, $classSynopsisIndentationLevel + 1); + $classSynopsis->appendChild($fieldSynopsisElement); + } } - } - $this->appendInheritedMemberSectionToClassSynopsis( - $doc, - $classSynopsis, - $parentsWithInheritedProperties, - "&Properties;", - "&InheritedProperties;", - $classSynopsisIndentationLevel + 1 - ); + $this->appendInheritedMemberSectionToClassSynopsis( + $doc, + $classSynopsis, + $parentsWithInheritedProperties, + "&Properties;", + "&InheritedProperties;", + $classSynopsisIndentationLevel + 1 + ); + } if (!empty($this->funcInfos)) { $classSynopsis->appendChild(new DOMText("\n\n$classSynopsisIndentation ")); @@ -3766,7 +3907,7 @@ private static function createOoElement( $indentation = str_repeat(" ", $indentationLevel); if ($classInfo->type !== "class" && $classInfo->type !== "interface") { - echo "Class synopsis generation is not implemented for " . $classInfo->type . "\n"; + echo "Warning: Class synopsis generation is not implemented for " . $classInfo->type . " of type " . $classInfo->name . "\n"; return null; } @@ -4049,7 +4190,8 @@ public function __construct(array $fileTags) { throw new Exception( "Legacy PHP version must be one of: \"" . PHP_70_VERSION_ID . "\" (PHP 7.0), \"" . PHP_80_VERSION_ID . "\" (PHP 8.0), " . "\"" . PHP_81_VERSION_ID . "\" (PHP 8.1), \"" . PHP_82_VERSION_ID . "\" (PHP 8.2), \"" . PHP_83_VERSION_ID . "\" (PHP 8.3), " . - "\"" . PHP_84_VERSION_ID . "\" (PHP 8.4), \"" . PHP_85_VERSION_ID . "\" (PHP 8.5), \"" . $tag->value . "\" provided" + "\"" . PHP_84_VERSION_ID . "\" (PHP 8.4), \"" . PHP_85_VERSION_ID . "\" (PHP 8.5), \"" . PHP_86_VERSION_ID . "\" (PHP 8.6), " . + $tag->value . "\" provided" ); } @@ -4183,6 +4325,11 @@ private function handleStatements(array $stmts, PrettyPrinterAbstract $prettyPri continue; } + if ($stmt instanceof Stmt\Use_ || $stmt instanceof Stmt\GroupUse) { + // use statements are resolved by NameResolver before this point + continue; + } + if ($stmt instanceof Stmt\Const_) { foreach ($stmt->consts as $const) { $this->constInfos[] = parseConstLike( @@ -4278,7 +4425,10 @@ private function handleStatements(array $stmts, PrettyPrinterAbstract $prettyPri ); } else if ($classStmt instanceof Stmt\EnumCase) { $enumCaseInfos[] = new EnumCaseInfo( - $classStmt->name->toString(), $classStmt->expr); + new EnumCaseName($className, $classStmt->name->toString()), + $classStmt->expr, + $classStmt->expr ? $prettyPrinter->prettyPrintExpr($classStmt->expr) : null, + ); } else { throw new Exception("Not implemented {$classStmt->getType()}"); } @@ -4369,7 +4519,7 @@ public function generateCDeclarations(): string { return $code; } - + /** * @param array $allConstInfos * @return array{string, string} @@ -4652,6 +4802,7 @@ function parseFunctionLike( $alias = null; $isDeprecated = false; $supportsCompileTimeEval = false; + $forbidDynamicCalls = false; $verify = true; $docReturnType = null; $tentativeReturnType = false; @@ -4667,6 +4818,7 @@ function parseFunctionLike( $verify = !array_key_exists('no-verify', $tagMap); $tentativeReturnType = array_key_exists('tentative-return-type', $tagMap); $supportsCompileTimeEval = array_key_exists('compile-time-eval', $tagMap); + $forbidDynamicCalls = array_key_exists('forbid-dynamic-calls', $tagMap); $isUndocumentable = $isUndocumentable || array_key_exists('undocumentable', $tagMap); foreach ($tags as $tag) { @@ -4799,6 +4951,7 @@ function parseFunctionLike( $alias, $isDeprecated, $supportsCompileTimeEval, + $forbidDynamicCalls, $verify, $args, $return, @@ -5557,7 +5710,7 @@ function replaceClassSynopses( continue; } - if (stripos($xml, "getElementsByTagName("classsynopsis") as $element) { - $classSynopsisElements[] = $element; + $synopsisElements[] = $element; } - foreach ($classSynopsisElements as $classSynopsis) { - if (!$classSynopsis instanceof DOMElement) { - continue; - } + foreach ($doc->getElementsByTagName("enumsynopsis") as $element) { + $synopsisElements[] = $element; + } - $child = $classSynopsis->firstElementChild; - if ($child === null) { + foreach ($synopsisElements as $synopsis) { + if (!$synopsis instanceof DOMElement) { continue; } - $child = $child->lastElementChild; - if ($child === null) { - continue; + + if ($synopsis->nodeName === "classsynopsis") { + $child = $synopsis->firstElementChild; + if ($child === null) { + continue; + } + $child = $child->lastElementChild; + if ($child === null) { + continue; + } + } elseif ($synopsis->nodeName === "enumsynopsis") { + $child = $synopsis->firstElementChild; + if ($child === null) { + continue; + } } + $className = $child->textContent; - if ($classSynopsis->parentElement->nodeName === "packagesynopsis" && - $classSynopsis->parentElement->firstElementChild->nodeName === "package" + if ($synopsis->parentElement->nodeName === "packagesynopsis" && + $synopsis->parentElement->firstElementChild->nodeName === "package" ) { - $package = $classSynopsis->parentElement->firstElementChild; + $package = $synopsis->parentElement->firstElementChild; $namespace = $package->textContent; $className = $namespace . "\\" . $className; - $elementToReplace = $classSynopsis->parentElement; + $elementToReplace = $synopsis->parentElement; } else { - $elementToReplace = $classSynopsis; + $elementToReplace = $synopsis; } if (!isset($classMap[$className])) { @@ -5613,17 +5778,32 @@ function replaceClassSynopses( $classInfo = $classMap[$className]; - $newClassSynopsis = $classInfo->getClassSynopsisElement($doc, $classMap, $allConstInfos); - if ($newClassSynopsis === null) { + $newSynopsis = $classInfo->getClassSynopsisElement($doc, $classMap, $allConstInfos); + if ($newSynopsis === null) { continue; } // Check if there is any change - short circuit if there is not any. - if (replaceAndCompareXmls($doc, $elementToReplace, $newClassSynopsis)) { + if (replaceAndCompareXmls($doc, $elementToReplace, $newSynopsis)) { continue; } + if ($synopsis->nodeName === "enumsynopsis") { + $oldEnumCaseDescriptionElements = collectEnumSynopsisItemDescriptions($className, $elementToReplace); + $newEnumCaseDescriptionElements = collectEnumSynopsisItemDescriptions($className, $newSynopsis); + + foreach ($newEnumCaseDescriptionElements as $key => $newEnumCaseDescriptionElement) { + if (isset($oldEnumCaseDescriptionElements[$key]) === false) { + continue; + } + + $oldEnumCaseDescriptionElement = $oldEnumCaseDescriptionElements[$key]; + + $newEnumCaseDescriptionElement->parentElement->replaceChild($oldEnumCaseDescriptionElement, $newEnumCaseDescriptionElement); + } + } + // Return the updated XML $replacedXml = $doc->saveXML(); @@ -5659,6 +5839,28 @@ function replaceClassSynopses( return $classSynopses; } +/** + * @return array + */ +function collectEnumSynopsisItemDescriptions(string $className, DOMElement $synopsis): array +{ + $enumCaseDescriptionElements = []; + + $enumCaseDescriptions = $synopsis->getElementsByTagName("enumitemdescription"); + foreach ($enumCaseDescriptions as $enumItemDescription) { + $enumCaseNames = $enumItemDescription->parentElement->getElementsByTagName("enumidentifier"); + if (empty($enumCaseNames)) { + continue; + } + + $enumCaseName = $enumCaseNames[0]->textContent; + + $enumCaseDescriptionElements["$className::$enumCaseName"] = $enumItemDescription; + } + + return $enumCaseDescriptionElements; +} + function getReplacedSynopsisXml(string $xml): string { return preg_replace( diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index 4c7648e738cd..000000000000 --- a/codecov.yml +++ /dev/null @@ -1,15 +0,0 @@ -ignore: - # bundled libraries - - "ext/lexbor/lexbor/core" - - "ext/lexbor/lexbor/css" - - "ext/lexbor/lexbor/dom" - - "ext/lexbor/lexbor/encoding" - - "ext/lexbor/lexbor/html" - - "ext/lexbor/lexbor/ns" - - "ext/lexbor/lexbor/ports" - - "ext/lexbor/lexbor/punycode" - - "ext/lexbor/lexbor/tag" - - "ext/lexbor/lexbor/unicode" - - "ext/lexbor/lexbor/url" - - "ext/pcre/pcre2lib" - - "ext/uri/uriparser" diff --git a/configure.ac b/configure.ac index 214c0ab91b2a..a83eb5c3dba4 100644 --- a/configure.ac +++ b/configure.ac @@ -1774,6 +1774,7 @@ PHP_ADD_SOURCES([Zend], m4_normalize([ zend_observer.c zend_opcode.c zend_operators.c + zend_partial.c zend_property_hooks.c zend_ptr_stack.c zend_signal.c @@ -1846,11 +1847,11 @@ cat <. | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andi Gutmans | +----------------------------------------------------------------------+ @@ -195,7 +193,7 @@ static void bc_pow_err(bc_raise_status status, uint32_t arg_num) zend_argument_value_error(arg_num, "exponent is too large, the number of digits overflowed"); } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -573,7 +571,7 @@ PHP_FUNCTION(bcpowmod) case OK: RETVAL_NEW_STR(bc_num2str_ex(result, scale)); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } cleanup: { @@ -1306,7 +1304,7 @@ static zend_result bcmath_number_do_operation(uint8_t opcode, zval *ret_val, zva goto fail; } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } if (Z_TYPE_P(op1) != IS_OBJECT) { @@ -1492,7 +1490,7 @@ static void bcmath_number_calc_method(INTERNAL_FUNCTION_PARAMETERS, uint8_t opco goto fail; } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } if (num_obj == NULL) { @@ -1652,7 +1650,7 @@ PHP_METHOD(BcMath_Number, powmod) goto cleanup; case OK: break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } bc_rm_trailing_zeros(ret); diff --git a/ext/bcmath/libbcmath/src/convert.c b/ext/bcmath/libbcmath/src/convert.c index ca5b84efde1b..b6003e58682b 100644 --- a/ext/bcmath/libbcmath/src/convert.c +++ b/ext/bcmath/libbcmath/src/convert.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/bcmath/libbcmath/src/convert.h b/ext/bcmath/libbcmath/src/convert.h index 73c38cd13010..69ff63b48e03 100644 --- a/ext/bcmath/libbcmath/src/convert.h +++ b/ext/bcmath/libbcmath/src/convert.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/bcmath/libbcmath/src/floor_or_ceil.c b/ext/bcmath/libbcmath/src/floor_or_ceil.c index 98dc94601ac7..f2682951ab82 100644 --- a/ext/bcmath/libbcmath/src/floor_or_ceil.c +++ b/ext/bcmath/libbcmath/src/floor_or_ceil.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Saki Takamachi | +----------------------------------------------------------------------+ diff --git a/ext/bcmath/libbcmath/src/long2num.c b/ext/bcmath/libbcmath/src/long2num.c index 7645045b1fa3..494ec9e93564 100644 --- a/ext/bcmath/libbcmath/src/long2num.c +++ b/ext/bcmath/libbcmath/src/long2num.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Saki Takamachi | +----------------------------------------------------------------------+ diff --git a/ext/bcmath/libbcmath/src/round.c b/ext/bcmath/libbcmath/src/round.c index ec0042a9f482..bbca7e758fb7 100644 --- a/ext/bcmath/libbcmath/src/round.c +++ b/ext/bcmath/libbcmath/src/round.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Saki Takamachi | +----------------------------------------------------------------------+ @@ -194,7 +192,7 @@ size_t bc_round(bc_num num, zend_long precision, zend_enum_RoundingMode mode, bc } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } up: diff --git a/ext/bcmath/php_bcmath.h b/ext/bcmath/php_bcmath.h index 83894fd7ca6b..334f7400c375 100644 --- a/ext/bcmath/php_bcmath.h +++ b/ext/bcmath/php_bcmath.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andi Gutmans | +----------------------------------------------------------------------+ diff --git a/ext/bz2/bz2.c b/ext/bz2/bz2.c index 2299e8272086..c505005ab00a 100644 --- a/ext/bz2/bz2.c +++ b/ext/bz2/bz2.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ @@ -402,7 +400,7 @@ PHP_FUNCTION(bzopen) RETURN_FALSE; } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } if (FAILURE == php_stream_cast(stream, PHP_STREAM_AS_FD, (void *) &fd, REPORT_ERRORS)) { diff --git a/ext/bz2/bz2_filter.c b/ext/bz2/bz2_filter.c index 69ee483d21f1..e1b24f6319f2 100644 --- a/ext/bz2/bz2_filter.c +++ b/ext/bz2/bz2_filter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon (pollita@php.net) | +----------------------------------------------------------------------+ diff --git a/ext/bz2/php_bz2.h b/ext/bz2/php_bz2.h index 8f1770f2808a..5da17d793059 100644 --- a/ext/bz2/php_bz2.h +++ b/ext/bz2/php_bz2.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/ext/calendar/cal_unix.c b/ext/calendar/cal_unix.c index 915da1c326ae..983857c553d9 100644 --- a/ext/calendar/cal_unix.c +++ b/ext/calendar/cal_unix.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Colin Viebrock | diff --git a/ext/calendar/calendar.c b/ext/calendar/calendar.c index 0330e60e51ad..f26d611092db 100644 --- a/ext/calendar/calendar.c +++ b/ext/calendar/calendar.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Colin Viebrock | diff --git a/ext/calendar/easter.c b/ext/calendar/easter.c index 7fd8c0b33bb3..198ea7625a1a 100644 --- a/ext/calendar/easter.c +++ b/ext/calendar/easter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Colin Viebrock | diff --git a/ext/calendar/php_calendar.h b/ext/calendar/php_calendar.h index 38127eb80e24..eee8fbbb6bb3 100644 --- a/ext/calendar/php_calendar.h +++ b/ext/calendar/php_calendar.h @@ -1,3 +1,15 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + */ + #ifndef PHP_CALENDAR_H #define PHP_CALENDAR_H diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c index 1b8c8a082a05..d9938a13c950 100644 --- a/ext/com_dotnet/com_com.c +++ b/ext/com_dotnet/com_com.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_dotnet.c b/ext/com_dotnet/com_dotnet.c index e4ab98485831..78f420ff5591 100644 --- a/ext/com_dotnet/com_dotnet.c +++ b/ext/com_dotnet/com_dotnet.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_extension.c b/ext/com_dotnet/com_extension.c index df8314fa7613..1fe34cce06b5 100644 --- a/ext/com_dotnet/com_extension.c +++ b/ext/com_dotnet/com_extension.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_handlers.c b/ext/com_dotnet/com_handlers.c index 638fc5d8a3ae..81c42da34972 100644 --- a/ext/com_dotnet/com_handlers.c +++ b/ext/com_dotnet/com_handlers.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_iterator.c b/ext/com_dotnet/com_iterator.c index 931e4a9afdd0..796a31ac9be5 100644 --- a/ext/com_dotnet/com_iterator.c +++ b/ext/com_dotnet/com_iterator.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_misc.c b/ext/com_dotnet/com_misc.c index 6c80bd2b9e24..47c670cd3588 100644 --- a/ext/com_dotnet/com_misc.c +++ b/ext/com_dotnet/com_misc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_olechar.c b/ext/com_dotnet/com_olechar.c index d04f8b18c623..6270db6580f8 100644 --- a/ext/com_dotnet/com_olechar.c +++ b/ext/com_dotnet/com_olechar.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Harald Radi | diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c index 1b89aea15e23..5559567cbab3 100644 --- a/ext/com_dotnet/com_persist.c +++ b/ext/com_dotnet/com_persist.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_saproxy.c b/ext/com_dotnet/com_saproxy.c index ec79faa30a32..0317c329589e 100644 --- a/ext/com_dotnet/com_saproxy.c +++ b/ext/com_dotnet/com_saproxy.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_typeinfo.c b/ext/com_dotnet/com_typeinfo.c index 28306b5609b0..ca20ed004d87 100644 --- a/ext/com_dotnet/com_typeinfo.c +++ b/ext/com_dotnet/com_typeinfo.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Harald Radi | diff --git a/ext/com_dotnet/com_variant.c b/ext/com_dotnet/com_variant.c index 7e63d66b3d3a..da3ccc64ffb3 100644 --- a/ext/com_dotnet/com_variant.c +++ b/ext/com_dotnet/com_variant.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c index 3d05e17affae..c2297d18e58c 100644 --- a/ext/com_dotnet/com_wrapper.c +++ b/ext/com_dotnet/com_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/php_com_dotnet.h b/ext/com_dotnet/php_com_dotnet.h index 556c477799ea..51e24b3e5d2a 100644 --- a/ext/com_dotnet/php_com_dotnet.h +++ b/ext/com_dotnet/php_com_dotnet.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/php_com_dotnet_internal.h b/ext/com_dotnet/php_com_dotnet_internal.h index 09fe49439347..5aef37659c44 100644 --- a/ext/com_dotnet/php_com_dotnet_internal.h +++ b/ext/com_dotnet/php_com_dotnet_internal.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/com_dotnet/tests/comtest/comtest.cpp b/ext/com_dotnet/tests/comtest/comtest.cpp index a4f91d3121e4..9f6c8c3e466f 100644 --- a/ext/com_dotnet/tests/comtest/comtest.cpp +++ b/ext/com_dotnet/tests/comtest/comtest.cpp @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Christoph M. Becker | | Based on: | diff --git a/ext/ctype/ctype.c b/ext/ctype/ctype.c index b4835019602e..792c5c6679c4 100644 --- a/ext/ctype/ctype.c +++ b/ext/ctype/ctype.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Hartmut Holzgraefe | +----------------------------------------------------------------------+ diff --git a/ext/ctype/php_ctype.h b/ext/ctype/php_ctype.h index 1596514184c0..c0a1337aa7db 100644 --- a/ext/ctype/php_ctype.h +++ b/ext/ctype/php_ctype.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Hartmut Holzgraefe | +----------------------------------------------------------------------+ diff --git a/ext/curl/config.w32 b/ext/curl/config.w32 index a4bdce59ccb1..c3a55652b638 100644 --- a/ext/curl/config.w32 +++ b/ext/curl/config.w32 @@ -12,7 +12,10 @@ if (PHP_CURL != "no") { SETUP_ZLIB_LIB("curl", PHP_CURL) && (CHECK_LIB("normaliz.lib", "curl", PHP_CURL) && CHECK_LIB("libssh2.lib", "curl", PHP_CURL) && - CHECK_LIB("nghttp2.lib", "curl", PHP_CURL)) + CHECK_LIB("nghttp2.lib", "curl", PHP_CURL) && + CHECK_LIB("brotlidec.lib", "curl", PHP_CURL) && + CHECK_LIB("brotlicommon.lib", "curl", PHP_CURL) && + CHECK_LIB("libzstd.lib", "curl", PHP_CURL)) ) { EXTENSION("curl", "interface.c multi.c share.c curl_file.c"); AC_DEFINE('HAVE_CURL', 1, "Define to 1 if the PHP extension 'curl' is available."); diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c index fd8baecc6838..b67028566c9c 100644 --- a/ext/curl/curl_file.c +++ b/ext/curl/curl_file.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/curl/curl_private.h b/ext/curl/curl_private.h index df6fd691a2a7..7058e9df9241 100644 --- a/ext/curl/curl_private.h +++ b/ext/curl/curl_private.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | | Wez Furlong | diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 57bc2f1ede3b..33f8cebd5a6c 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/ext/curl/multi.c b/ext/curl/multi.c index 3e6142466e98..98a5e62b5564 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h index 6084d5935c70..9a70d6466c92 100644 --- a/ext/curl/php_curl.h +++ b/ext/curl/php_curl.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | | Wez Furlong | diff --git a/ext/curl/share.c b/ext/curl/share.c index ba23faa46bf5..bfd12238eec1 100644 --- a/ext/curl/share.c +++ b/ext/curl/share.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierrick Charron | +----------------------------------------------------------------------+ diff --git a/ext/curl/tests/bug71523.phpt b/ext/curl/tests/bug71523.phpt index 2cf2477409da..1a01209dbb8b 100644 --- a/ext/curl/tests/bug71523.phpt +++ b/ext/curl/tests/bug71523.phpt @@ -4,6 +4,7 @@ Bug #71523 (Copied handle with new option CURLOPT_HTTPHEADER crashes while curl_ curl --SKIPIF-- %r(Yes|No)%r PSL => No HTTPS_PROXY => Yes MULTI_SSL => %s -BROTLI => %s +BROTLI => Yes ALTSVC => Yes HTTP3 => No UNICODE => No -ZSTD => No +ZSTD => Yes HSTS => Yes GSASL => No Protocols => dict, file, ftp, ftps, gopher, %r(gophers, )?%rhttp, https, imap, imaps, ldap, ldaps, %r(mqtt, )?%rpop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp%r(, ws)?(, wss)?%r diff --git a/ext/date/php_date.c b/ext/date/php_date.c index e5b094acdb3c..6c5dc29627d4 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ @@ -2049,7 +2047,7 @@ static int date_object_compare_timezone(zval *tz1, zval *tz2) /* {{{ */ return strcmp(o1->tzi.z.abbr, o2->tzi.z.abbr) ? 1 : 0; case TIMELIB_ZONETYPE_ID: return strcmp(o1->tzi.tz->name, o2->tzi.tz->name) ? 1 : 0; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -2744,7 +2742,7 @@ PHP_METHOD(DateTime, createFromTimestamp) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } RETURN_OBJ(Z_OBJ(new_object)); @@ -2825,7 +2823,7 @@ PHP_METHOD(DateTimeImmutable, createFromTimestamp) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } RETURN_OBJ(Z_OBJ(new_object)); @@ -5969,7 +5967,7 @@ static int date_period_has_property(zend_object *object, zend_string *name, int return 0; case ZEND_PROPERTY_EXISTS: return 1; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } diff --git a/ext/date/php_date.h b/ext/date/php_date.h index f5f43bc7dfb0..4553d3e93c72 100644 --- a/ext/date/php_date.h +++ b/ext/date/php_date.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba.c b/ext/dba/dba.c index fb6017fbab88..a70951467be5 100644 --- a/ext/dba/dba.c +++ b/ext/dba/dba.c @@ -1,14 +1,12 @@ /* -+----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Marcus Boerger | diff --git a/ext/dba/dba_cdb.c b/ext/dba/dba_cdb.c index 10a381b579da..79b60c765c37 100644 --- a/ext/dba/dba_cdb.c +++ b/ext/dba/dba_cdb.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Marcus Boerger | diff --git a/ext/dba/dba_db1.c b/ext/dba/dba_db1.c index e4b83fcb55f3..dfcd637c8f87 100644 --- a/ext/dba/dba_db1.c +++ b/ext/dba/dba_db1.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Shen Cheng-Da | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_db2.c b/ext/dba/dba_db2.c index 5ec3df182e84..dd723ea40af8 100644 --- a/ext/dba/dba_db2.c +++ b/ext/dba/dba_db2.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_db3.c b/ext/dba/dba_db3.c index 8efc8d45b3ba..aacc65dda5a5 100644 --- a/ext/dba/dba_db3.c +++ b/ext/dba/dba_db3.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c index f64db5540ee9..16ac9be37a13 100644 --- a/ext/dba/dba_db4.c +++ b/ext/dba/dba_db4.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | | Sascha Schumann | diff --git a/ext/dba/dba_dbm.c b/ext/dba/dba_dbm.c index b6d98d22893e..9579444454ce 100644 --- a/ext/dba/dba_dbm.c +++ b/ext/dba/dba_dbm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_flatfile.c b/ext/dba/dba_flatfile.c index 997e6b9cc112..4208277a920d 100644 --- a/ext/dba/dba_flatfile.c +++ b/ext/dba/dba_flatfile.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_gdbm.c b/ext/dba/dba_gdbm.c index 245c79e0e62d..961f539a451f 100644 --- a/ext/dba/dba_gdbm.c +++ b/ext/dba/dba_gdbm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_inifile.c b/ext/dba/dba_inifile.c index 75a267055d96..1539bb0496dd 100644 --- a/ext/dba/dba_inifile.c +++ b/ext/dba/dba_inifile.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_lmdb.c b/ext/dba/dba_lmdb.c index f6bdc7838a6a..57e74f320239 100644 --- a/ext/dba/dba_lmdb.c +++ b/ext/dba/dba_lmdb.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_ndbm.c b/ext/dba/dba_ndbm.c index 40ae304cb7d2..2b4002591e91 100644 --- a/ext/dba/dba_ndbm.c +++ b/ext/dba/dba_ndbm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_qdbm.c b/ext/dba/dba_qdbm.c index 5cbfeee874d5..8e692b7e55bc 100644 --- a/ext/dba/dba_qdbm.c +++ b/ext/dba/dba_qdbm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcin Gibula | +----------------------------------------------------------------------+ diff --git a/ext/dba/dba_tcadb.c b/ext/dba/dba_tcadb.c index 6f4cb01e69e5..0539a7036602 100644 --- a/ext/dba/dba_tcadb.c +++ b/ext/dba/dba_tcadb.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Maclean | +----------------------------------------------------------------------+ diff --git a/ext/dba/libcdb/cdb.c b/ext/dba/libcdb/cdb.c index e694d6a6eb12..e258e8fe2d5a 100644 --- a/ext/dba/libcdb/cdb.c +++ b/ext/dba/libcdb/cdb.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libcdb/cdb.h b/ext/dba/libcdb/cdb.h index 4a94b81f832d..cc645196a983 100644 --- a/ext/dba/libcdb/cdb.h +++ b/ext/dba/libcdb/cdb.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libcdb/cdb_make.c b/ext/dba/libcdb/cdb_make.c index 570e3625b0ce..b216b904e9bd 100644 --- a/ext/dba/libcdb/cdb_make.c +++ b/ext/dba/libcdb/cdb_make.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libcdb/cdb_make.h b/ext/dba/libcdb/cdb_make.h index 96dbd43d1e56..aa94c1747267 100644 --- a/ext/dba/libcdb/cdb_make.h +++ b/ext/dba/libcdb/cdb_make.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libcdb/uint32.c b/ext/dba/libcdb/uint32.c index 6f2507204aad..e5ba93fed2af 100644 --- a/ext/dba/libcdb/uint32.c +++ b/ext/dba/libcdb/uint32.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libcdb/uint32.h b/ext/dba/libcdb/uint32.h index 41041853fdbf..fe9ffba847a5 100644 --- a/ext/dba/libcdb/uint32.h +++ b/ext/dba/libcdb/uint32.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libflatfile/flatfile.c b/ext/dba/libflatfile/flatfile.c index bd76ecfdd0ae..561766777f6f 100644 --- a/ext/dba/libflatfile/flatfile.c +++ b/ext/dba/libflatfile/flatfile.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | | based on ext/db/db.c by: | diff --git a/ext/dba/libflatfile/flatfile.h b/ext/dba/libflatfile/flatfile.h index 801ec8054f4f..ee3e5380b72b 100644 --- a/ext/dba/libflatfile/flatfile.h +++ b/ext/dba/libflatfile/flatfile.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libinifile/inifile.c b/ext/dba/libinifile/inifile.c index 6221c7f7a6e7..f5355b5a990c 100644 --- a/ext/dba/libinifile/inifile.c +++ b/ext/dba/libinifile/inifile.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/libinifile/inifile.h b/ext/dba/libinifile/inifile.h index e931c70bcbf6..75cf22d53fdd 100644 --- a/ext/dba/libinifile/inifile.h +++ b/ext/dba/libinifile/inifile.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/dba/php_dba.h b/ext/dba/php_dba.h index 033aed59c9ea..86c8a4f0ed65 100644 --- a/ext/dba/php_dba.h +++ b/ext/dba/php_dba.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/dba/php_tcadb.h b/ext/dba/php_tcadb.h index 6bfecf7d6d96..038440c7607e 100644 --- a/ext/dba/php_tcadb.h +++ b/ext/dba/php_tcadb.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Maclean | +----------------------------------------------------------------------+ diff --git a/ext/dl_test/dl_test.c b/ext/dl_test/dl_test.c index 10afdb0720f2..4346e868c1e5 100644 --- a/ext/dl_test/dl_test.c +++ b/ext/dl_test/dl_test.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Arnaud Le Blanc | +----------------------------------------------------------------------+ diff --git a/ext/dl_test/php_dl_test.h b/ext/dl_test/php_dl_test.h index c12a43fe165b..133d513cbf99 100644 --- a/ext/dl_test/php_dl_test.h +++ b/ext/dl_test/php_dl_test.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: | +----------------------------------------------------------------------+ diff --git a/ext/dom/attr.c b/ext/dom/attr.c index 3107f5a21a2b..aa613a9f6d37 100644 --- a/ext/dom/attr.c +++ b/ext/dom/attr.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/cdatasection.c b/ext/dom/cdatasection.c index 6d063e19d43e..b735a93f3bee 100644 --- a/ext/dom/cdatasection.c +++ b/ext/dom/cdatasection.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c index e6b050a35867..80dce80cf2f0 100644 --- a/ext/dom/characterdata.c +++ b/ext/dom/characterdata.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/comment.c b/ext/dom/comment.c index 211d27d2c319..b8ee8780d926 100644 --- a/ext/dom/comment.c +++ b/ext/dom/comment.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/document.c b/ext/dom/document.c index 9d7213a64df2..b0274c676354 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/documentfragment.c b/ext/dom/documentfragment.c index 65538b711f2d..01af436c69ed 100644 --- a/ext/dom/documentfragment.c +++ b/ext/dom/documentfragment.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/documenttype.c b/ext/dom/documenttype.c index 958559801a53..03f471493777 100644 --- a/ext/dom/documenttype.c +++ b/ext/dom/documenttype.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/dom_ce.h b/ext/dom/dom_ce.h index 5106738a0afd..8959d6013c7b 100644 --- a/ext/dom/dom_ce.h +++ b/ext/dom/dom_ce.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/dom_iterators.c b/ext/dom/dom_iterators.c index 9134b107925a..b71d188dceee 100644 --- a/ext/dom/dom_iterators.c +++ b/ext/dom/dom_iterators.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/dom_properties.h b/ext/dom/dom_properties.h index 53113b04005a..918bf0c62f78 100644 --- a/ext/dom/dom_properties.h +++ b/ext/dom/dom_properties.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/domexception.c b/ext/dom/domexception.c index 86eecd579b2b..a7bea009dabc 100644 --- a/ext/dom/domexception.c +++ b/ext/dom/domexception.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/domexception.h b/ext/dom/domexception.h index 574e164424d6..3e3c7abed894 100644 --- a/ext/dom/domexception.h +++ b/ext/dom/domexception.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/domimplementation.c b/ext/dom/domimplementation.c index 0737be5fa5c9..e7fc2a414834 100644 --- a/ext/dom/domimplementation.c +++ b/ext/dom/domimplementation.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/element.c b/ext/dom/element.c index 4d0099b2c641..8e6102e9658e 100644 --- a/ext/dom/element.c +++ b/ext/dom/element.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | @@ -466,7 +464,7 @@ PHP_METHOD(DOMElement, setAttribute) break; case XML_NAMESPACE_DECL: RETURN_FALSE; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -593,7 +591,7 @@ static bool dom_remove_attribute(xmlNodePtr thisp, xmlNodePtr attrp) break; } - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return true; } @@ -1819,7 +1817,7 @@ PHP_METHOD(Dom_Element, insertAdjacentHTML) /* Set context to this. */ context = thisp; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } /* 4. If context is not an Element or all of the following are true: (...) */ @@ -1858,7 +1856,7 @@ PHP_METHOD(Dom_Element, insertAdjacentHTML) case ZEND_ENUM_Dom_AdjacentPosition_BeforeEnd: php_dom_node_append(this_intern->document, fragment, thisp); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } err: diff --git a/ext/dom/entity.c b/ext/dom/entity.c index 3cfcbb5ae808..acccda98de0c 100644 --- a/ext/dom/entity.c +++ b/ext/dom/entity.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/entityreference.c b/ext/dom/entityreference.c index 215df208f530..a669fd2aa791 100644 --- a/ext/dom/entityreference.c +++ b/ext/dom/entityreference.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/html5_parser.c b/ext/dom/html5_parser.c index c00fa81b9c9e..583de89ecc4f 100644 --- a/ext/dom/html5_parser.c +++ b/ext/dom/html5_parser.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ @@ -462,7 +460,7 @@ static php_libxml_quirks_mode dom_translate_quirks_mode(lxb_dom_document_cmode_t case LXB_DOM_DOCUMENT_CMODE_NO_QUIRKS: return PHP_LIBXML_NO_QUIRKS; case LXB_DOM_DOCUMENT_CMODE_LIMITED_QUIRKS: return PHP_LIBXML_LIMITED_QUIRKS; case LXB_DOM_DOCUMENT_CMODE_QUIRKS: return PHP_LIBXML_QUIRKS; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/dom/html5_parser.h b/ext/dom/html5_parser.h index a56166639a60..43f7cf4f84cc 100644 --- a/ext/dom/html5_parser.h +++ b/ext/dom/html5_parser.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/html5_serializer.c b/ext/dom/html5_serializer.c index 26eef9d5f968..ad3e24e00821 100644 --- a/ext/dom/html5_serializer.c +++ b/ext/dom/html5_serializer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/html5_serializer.h b/ext/dom/html5_serializer.h index 27fd1c92f24f..e4ae67861eee 100644 --- a/ext/dom/html5_serializer.h +++ b/ext/dom/html5_serializer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/html_collection.c b/ext/dom/html_collection.c index a4e2d6ad6fbe..0a24d4909cf4 100644 --- a/ext/dom/html_collection.c +++ b/ext/dom/html_collection.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/html_collection.h b/ext/dom/html_collection.h index 59ab50abc1b0..f7e8effc16e1 100644 --- a/ext/dom/html_collection.h +++ b/ext/dom/html_collection.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/html_document.c b/ext/dom/html_document.c index 954403ca1c5d..58f07e079dd3 100644 --- a/ext/dom/html_document.c +++ b/ext/dom/html_document.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/infra.c b/ext/dom/infra.c index 9bb1942fe01d..33026d8a7526 100644 --- a/ext/dom/infra.c +++ b/ext/dom/infra.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/infra.h b/ext/dom/infra.h index d84ad5a2a0ef..4cf8ad26c789 100644 --- a/ext/dom/infra.h +++ b/ext/dom/infra.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/inner_outer_html_mixin.c b/ext/dom/inner_outer_html_mixin.c index 85124d41689a..e1bf226d8602 100644 --- a/ext/dom/inner_outer_html_mixin.c +++ b/ext/dom/inner_outer_html_mixin.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ @@ -181,7 +179,7 @@ static lxb_dom_document_cmode_t dom_translate_quirks_mode(php_libxml_quirks_mode case PHP_LIBXML_NO_QUIRKS: return LXB_DOM_DOCUMENT_CMODE_NO_QUIRKS; case PHP_LIBXML_LIMITED_QUIRKS: return LXB_DOM_DOCUMENT_CMODE_LIMITED_QUIRKS; case PHP_LIBXML_QUIRKS: return LXB_DOM_DOCUMENT_CMODE_QUIRKS; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/dom/internal_helpers.h b/ext/dom/internal_helpers.h index c87ea49c6143..725c8222f429 100644 --- a/ext/dom/internal_helpers.h +++ b/ext/dom/internal_helpers.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch b/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch new file mode 100644 index 000000000000..32d9d42d2bf1 --- /dev/null +++ b/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch @@ -0,0 +1,188 @@ +From 0cd2add6c46400b808329442f81451b369863983 Mon Sep 17 00:00:00 2001 +From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> +Date: Sat, 26 Aug 2023 15:08:59 +0200 +Subject: [PATCH 1/6] Expose line and column information for use in PHP + +--- + source/lexbor/dom/interfaces/node.h | 2 ++ + source/lexbor/html/token.h | 2 ++ + source/lexbor/html/tokenizer.c | 24 +++++++++++++++++++++++- + source/lexbor/html/tokenizer.h | 2 ++ + source/lexbor/html/tokenizer/state.h | 2 ++ + source/lexbor/html/tree.c | 11 +++++++++++ + source/lexbor/html/tree/error.c | 5 +++-- + source/lexbor/html/tree/error.h | 5 +++-- + 8 files changed, 48 insertions(+), 5 deletions(-) + +diff --git a/source/lexbor/dom/interfaces/node.h b/source/lexbor/dom/interfaces/node.h +index 6c74ac5..b95373c 100644 +--- a/source/lexbor/dom/interfaces/node.h ++++ b/source/lexbor/dom/interfaces/node.h +@@ -86,6 +86,8 @@ struct lxb_dom_node { + + lxb_dom_node_type_t type; + ++ size_t line; ++ + #ifdef LXB_DOM_NODE_USER_VARIABLES + LXB_DOM_NODE_USER_VARIABLES + #endif /* LXB_DOM_NODE_USER_VARIABLES */ +diff --git a/source/lexbor/html/token.h b/source/lexbor/html/token.h +index 79accd0..0b7f4fd 100644 +--- a/source/lexbor/html/token.h ++++ b/source/lexbor/html/token.h +@@ -33,6 +33,8 @@ enum lxb_html_token_type { + typedef struct { + const lxb_char_t *begin; + const lxb_char_t *end; ++ size_t line; ++ size_t column; + + const lxb_char_t *text_start; + const lxb_char_t *text_end; +diff --git a/source/lexbor/html/tokenizer.c b/source/lexbor/html/tokenizer.c +index 22b88ed..1d9f378 100644 +--- a/source/lexbor/html/tokenizer.c ++++ b/source/lexbor/html/tokenizer.c +@@ -92,6 +92,7 @@ lxb_html_tokenizer_init(lxb_html_tokenizer_t *tkz) + + tkz->pos = tkz->start; + tkz->end = tkz->start + LXB_HTML_TKZ_TEMP_SIZE; ++ /* current_line & current_column already initialized by calloc (zero-based) */ + + tkz->tree = NULL; + tkz->tags = NULL; +@@ -153,6 +154,8 @@ lxb_html_tokenizer_inherit(lxb_html_tokenizer_t *tkz_to, + tkz_to->start = tkz_from->start; + tkz_to->end = tkz_from->end; + tkz_to->pos = tkz_to->start; ++ tkz_to->current_line = tkz_from->current_line; ++ tkz_to->current_column = tkz_from->current_column; + + return LXB_STATUS_OK; + } +@@ -571,7 +574,26 @@ lxb_html_tokenizer_chunk(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, + tkz->last = end; + + while (data < end) { +- data = tkz->state(tkz, data, end); ++ size_t current_column = tkz->current_column; ++ const lxb_char_t *new_data = tkz->state(tkz, data, end); ++ while (data < new_data) { ++ /* Codepoints < 0x80 are encoded the same as their ASCII counterpart, so '\n' will uniquely identify a newline. */ ++ if (*data == '\n') { ++ tkz->current_line++; ++ current_column = 0; ++ } else { ++ /* Other characters can be mapped back to the unicode codepoint offset because UTF-8 is a prefix code. ++ * Continuation bytes start with 0b10XXXXXX so we can skip those to only get the start of an encoded code point. */ ++ if ((*data & 0b11000000) == 0b10000000) { ++ /* Continuation byte, do nothing */ ++ } else { ++ /* First byte for a codepoint */ ++ current_column++; ++ } ++ } ++ data++; ++ } ++ tkz->current_column = current_column; + } + + return tkz->status; +diff --git a/source/lexbor/html/tokenizer.h b/source/lexbor/html/tokenizer.h +index 12b7c81..aa1ac37 100644 +--- a/source/lexbor/html/tokenizer.h ++++ b/source/lexbor/html/tokenizer.h +@@ -79,6 +79,8 @@ struct lxb_html_tokenizer { + const lxb_char_t *end; + const lxb_char_t *begin; + const lxb_char_t *last; ++ size_t current_line; ++ size_t current_column; + + /* Entities */ + const lexbor_sbst_entry_static_t *entity; +diff --git a/source/lexbor/html/tokenizer/state.h b/source/lexbor/html/tokenizer/state.h +index 5e91444..52eaa9a 100644 +--- a/source/lexbor/html/tokenizer/state.h ++++ b/source/lexbor/html/tokenizer/state.h +@@ -90,6 +90,8 @@ extern "C" { + do { \ + tkz->pos = tkz->start; \ + tkz->token->begin = v_begin; \ ++ tkz->token->line = tkz->current_line; \ ++ tkz->token->column = tkz->current_column; \ + } \ + while (0) + +diff --git a/source/lexbor/html/tree.c b/source/lexbor/html/tree.c +index 062ea56..3f4c18d 100644 +--- a/source/lexbor/html/tree.c ++++ b/source/lexbor/html/tree.c +@@ -431,6 +431,9 @@ lxb_html_tree_create_element_for_token(lxb_html_tree_t *tree, + return NULL; + } + ++ node->line = token->line; ++ /* We only expose line number in PHP DOM */ ++ + lxb_status_t status; + lxb_dom_element_t *element = lxb_dom_interface_element(node); + +@@ -767,6 +770,11 @@ lxb_html_tree_insert_character_for_data(lxb_html_tree_t *tree, + + lxb_dom_interface_text(text)->char_data.data = *str; + ++ if (tree->tkz_ref) { ++ text->line = tree->tkz_ref->token->line; ++ /* We only expose line number in PHP DOM */ ++ } ++ + if (ret_node != NULL) { + *ret_node = text; + } +@@ -806,6 +814,9 @@ lxb_html_tree_insert_comment(lxb_html_tree_t *tree, + return NULL; + } + ++ node->line = token->line; ++ /* We only expose line number in PHP DOM */ ++ + tree->status = lxb_html_token_make_text(token, &comment->char_data.data, + tree->document->dom_document.text); + if (tree->status != LXB_STATUS_OK) { +diff --git a/source/lexbor/html/tree/error.c b/source/lexbor/html/tree/error.c +index ffdc55c..ef36eab 100644 +--- a/source/lexbor/html/tree/error.c ++++ b/source/lexbor/html/tree/error.c +@@ -22,8 +22,9 @@ lxb_html_tree_error_add(lexbor_array_obj_t *parse_errors, + } + + entry->id = id; +- entry->begin = token->begin; +- entry->end = token->end; ++ entry->line = token->line; ++ entry->column = token->column; ++ entry->length = token->end - token->begin; + + return entry; + } +diff --git a/source/lexbor/html/tree/error.h b/source/lexbor/html/tree/error.h +index 7a212af..b186772 100644 +--- a/source/lexbor/html/tree/error.h ++++ b/source/lexbor/html/tree/error.h +@@ -109,8 +109,9 @@ lxb_html_tree_error_id_t; + + typedef struct { + lxb_html_tree_error_id_t id; +- const lxb_char_t *begin; +- const lxb_char_t *end; ++ size_t line; ++ size_t column; ++ size_t length; + } + lxb_html_tree_error_t; + +-- +2.51.2 + diff --git a/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch b/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch new file mode 100644 index 000000000000..1902abf96e3a --- /dev/null +++ b/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch @@ -0,0 +1,67 @@ +From a4c29ba8d1ea1065ce6bd4a34382d53140cf1924 Mon Sep 17 00:00:00 2001 +From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> +Date: Mon, 14 Aug 2023 20:18:51 +0200 +Subject: [PATCH 2/6] Track implied added nodes for options use in PHP + +--- + source/lexbor/html/tree.h | 3 +++ + source/lexbor/html/tree/insertion_mode/after_head.c | 1 + + source/lexbor/html/tree/insertion_mode/before_head.c | 2 ++ + source/lexbor/html/tree/insertion_mode/before_html.c | 2 ++ + 4 files changed, 8 insertions(+) + +diff --git a/source/lexbor/html/tree.h b/source/lexbor/html/tree.h +index 4912efb..7b2c620 100644 +--- a/source/lexbor/html/tree.h ++++ b/source/lexbor/html/tree.h +@@ -55,6 +55,9 @@ struct lxb_html_tree { + bool foster_parenting; + bool frameset_ok; + bool scripting; ++ bool has_explicit_html_tag; ++ bool has_explicit_head_tag; ++ bool has_explicit_body_tag; + + lxb_html_tree_insertion_mode_f mode; + lxb_html_tree_insertion_mode_f original_mode; +diff --git a/source/lexbor/html/tree/insertion_mode/after_head.c b/source/lexbor/html/tree/insertion_mode/after_head.c +index ad551b5..1448654 100644 +--- a/source/lexbor/html/tree/insertion_mode/after_head.c ++++ b/source/lexbor/html/tree/insertion_mode/after_head.c +@@ -71,6 +71,7 @@ lxb_html_tree_insertion_mode_after_head_open(lxb_html_tree_t *tree, + return lxb_html_tree_process_abort(tree); + } + ++ tree->has_explicit_body_tag = true; + tree->frameset_ok = false; + tree->mode = lxb_html_tree_insertion_mode_in_body; + +diff --git a/source/lexbor/html/tree/insertion_mode/before_head.c b/source/lexbor/html/tree/insertion_mode/before_head.c +index 14621f2..cd2ac2a 100644 +--- a/source/lexbor/html/tree/insertion_mode/before_head.c ++++ b/source/lexbor/html/tree/insertion_mode/before_head.c +@@ -67,6 +67,8 @@ lxb_html_tree_insertion_mode_before_head_open(lxb_html_tree_t *tree, + return lxb_html_tree_process_abort(tree); + } + ++ tree->has_explicit_head_tag = true; ++ + tree->mode = lxb_html_tree_insertion_mode_in_head; + + break; +diff --git a/source/lexbor/html/tree/insertion_mode/before_html.c b/source/lexbor/html/tree/insertion_mode/before_html.c +index 05fe738..1e09cda 100644 +--- a/source/lexbor/html/tree/insertion_mode/before_html.c ++++ b/source/lexbor/html/tree/insertion_mode/before_html.c +@@ -78,6 +78,8 @@ lxb_html_tree_insertion_mode_before_html_open(lxb_html_tree_t *tree, + return lxb_html_tree_process_abort(tree); + } + ++ tree->has_explicit_html_tag = true; ++ + tree->mode = lxb_html_tree_insertion_mode_before_head; + + break; +-- +2.51.2 + diff --git a/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch b/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch new file mode 100644 index 000000000000..51f77483bc6e --- /dev/null +++ b/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch @@ -0,0 +1,97 @@ +From 46fc776449252e74795569759a19d13857a59069 Mon Sep 17 00:00:00 2001 +From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> +Date: Thu, 24 Aug 2023 22:57:48 +0200 +Subject: [PATCH 3/6] Patch utilities and data structure to be able to generate + smaller lookup tables + +Changed the generation script to check if everything fits in 32-bits. +And change the actual field types to 32-bits. This decreases the hash +tables in size. +--- + source/lexbor/core/shs.h | 4 ++-- + utils/lexbor/encoding/single-byte.py | 4 ++-- + utils/lexbor/lexbor/LXB.py | 12 +++++++++--- + 3 files changed, 13 insertions(+), 7 deletions(-) + +diff --git a/source/lexbor/core/shs.h b/source/lexbor/core/shs.h +index 7a63a07..c84dfaa 100644 +--- a/source/lexbor/core/shs.h ++++ b/source/lexbor/core/shs.h +@@ -27,9 +27,9 @@ lexbor_shs_entry_t; + + typedef struct { + uint32_t key; +- void *value; ++ uint32_t value; + +- size_t next; ++ uint32_t next; + } + lexbor_shs_hash_t; + +diff --git a/utils/lexbor/encoding/single-byte.py b/utils/lexbor/encoding/single-byte.py +index d7d1bb2..5420c16 100755 +--- a/utils/lexbor/encoding/single-byte.py ++++ b/utils/lexbor/encoding/single-byte.py +@@ -128,7 +128,7 @@ class SingleByte: + entries = values[idx] + key_id = entries[1].decode('utf-8') + +- hash_key.append(key_id, '(void *) {}'.format(idx + 0x80)) ++ hash_key.append(key_id, idx + 0x80) + + return hash_key.create(rate = 1) + +@@ -161,7 +161,7 @@ def toHex(s): + lst = [] + + for ch in bytes(s, 'utf-8'): +- hv = hex(ch).replace('0x', '\\\\x') ++ hv = hex(ch).replace('0x', '\\x') + lst.append("'{}'".format(hv)) + + return ', '.join(lst) +diff --git a/utils/lexbor/lexbor/LXB.py b/utils/lexbor/lexbor/LXB.py +index 3e75812..2370c66 100755 +--- a/utils/lexbor/lexbor/LXB.py ++++ b/utils/lexbor/lexbor/LXB.py +@@ -94,7 +94,7 @@ class HashKey: + def append(self, key_id, value): + self.buffer.append([self.hash_id(int(key_id, 0)), value]) + +- def create(self, terminate_value = '{0, NULL, 0}', rate = 2, is_const = True, data_before = None): ++ def create(self, terminate_value = '{0, 0, 0}', rate = 2, is_const = True, data_before = None): + test = self.test(int(self.max_table_size / 1.2), int(self.max_table_size * 1.2)) + + rate_dn = rate - 1 +@@ -142,9 +142,12 @@ class HashKey: + entry = table[idx] + + if entry: ++ assert entry[0] < 2**32 ++ assert entry[1] < 2**32 ++ assert entry[2] < 2**32 + result.append("{{{}, {}, {}}},".format(entry[0], entry[1], entry[2])) + else: +- result.append("{0, NULL, 0},") ++ result.append("{0, 0, 0},") + + if int(idx) % rate == rate_dn: + result.append("\n ") +@@ -154,9 +157,12 @@ class HashKey: + if len(table): + entry = table[-1] + if entry: ++ assert entry[0] < 2**32 ++ assert entry[1] < 2**32 ++ assert entry[2] < 2**32 + result.append("{{{}, {}, {}}}\n".format(entry[0], entry[1], entry[2])) + else: +- result.append("{0, NULL, 0}\n") ++ result.append("{0, 0, 0}\n") + + result.append("};") + +-- +2.51.2 + diff --git a/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch b/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch new file mode 100644 index 000000000000..6cb6658a164b --- /dev/null +++ b/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch @@ -0,0 +1,53 @@ +From ae9d7254ac129cc3be34de6fd34af27baf3bb396 Mon Sep 17 00:00:00 2001 +From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> +Date: Wed, 29 Nov 2023 21:26:47 +0100 +Subject: [PATCH 4/6] Remove unused upper case tag static data + +--- + source/lexbor/tag/res.h | 2 ++ + source/lexbor/tag/tag.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/source/lexbor/tag/res.h b/source/lexbor/tag/res.h +index 604757f..5672d4a 100644 +--- a/source/lexbor/tag/res.h ++++ b/source/lexbor/tag/res.h +@@ -226,6 +226,7 @@ static const lxb_tag_data_t lxb_tag_res_data_default[LXB_TAG__LAST_ENTRY] = + {{.u.short_str = "xmp", .length = 3, .next = NULL}, LXB_TAG_XMP, 1, true} + }; + ++#if 0 + static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] = + { + {{.u.short_str = "#UNDEF", .length = 6, .next = NULL}, LXB_TAG__UNDEF, 1, true}, +@@ -427,6 +428,7 @@ static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] + {{.u.short_str = "WBR", .length = 3, .next = NULL}, LXB_TAG_WBR, 1, true}, + {{.u.short_str = "XMP", .length = 3, .next = NULL}, LXB_TAG_XMP, 1, true} + }; ++#endif + + static const lexbor_shs_entry_t lxb_tag_res_shs_data_default[263] = + { +diff --git a/source/lexbor/tag/tag.c b/source/lexbor/tag/tag.c +index 780bc47..be5bb30 100644 +--- a/source/lexbor/tag/tag.c ++++ b/source/lexbor/tag/tag.c +@@ -92,6 +92,7 @@ lxb_tag_data_by_name(lexbor_hash_t *hash, const lxb_char_t *name, size_t len) + lexbor_hash_search_lower, name, len); + } + ++#if 0 + const lxb_tag_data_t * + lxb_tag_data_by_name_upper(lexbor_hash_t *hash, + const lxb_char_t *name, size_t len) +@@ -114,6 +115,7 @@ lxb_tag_data_by_name_upper(lexbor_hash_t *hash, + return (const lxb_tag_data_t *) lexbor_hash_search(hash, + lexbor_hash_search_upper, name, len); + } ++#endif + + /* + * No inline functions for ABI. +-- +2.51.2 + diff --git a/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch b/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch new file mode 100644 index 000000000000..9ef6e305e498 --- /dev/null +++ b/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch @@ -0,0 +1,116 @@ +From 19cf6183813e013dfe0eb2303c15eaf6e01b9faf Mon Sep 17 00:00:00 2001 +From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> +Date: Wed, 29 Nov 2023 21:29:31 +0100 +Subject: [PATCH 5/6] Shrink size of static binary search tree + +This also makes it more efficient on the data cache. +--- + source/lexbor/core/sbst.h | 19 ++++++++++++++----- + source/lexbor/html/tokenizer/state.c | 2 +- + utils/lexbor/html/tokenizer_entities_bst.py | 8 ++++---- + utils/lexbor/lexbor/LXB.py | 2 +- + 4 files changed, 20 insertions(+), 11 deletions(-) + +diff --git a/source/lexbor/core/sbst.h b/source/lexbor/core/sbst.h +index b0fbc54..15a1d40 100644 +--- a/source/lexbor/core/sbst.h ++++ b/source/lexbor/core/sbst.h +@@ -15,16 +15,25 @@ extern "C" { + + #include "lexbor/core/base.h" + ++#ifdef __has_attribute ++# if __has_attribute(nonstring) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 15 ++# define LXB_NONSTRING __attribute__((nonstring)) ++# else ++# define LXB_NONSTRING ++# endif ++#else ++# define LXB_NONSTRING ++#endif + + typedef struct { + lxb_char_t key; + +- void *value; +- size_t value_len; ++ lxb_char_t value[6] LXB_NONSTRING; ++ unsigned char value_len; + +- size_t left; +- size_t right; +- size_t next; ++ unsigned short left; ++ unsigned short right; ++ unsigned short next; + } + lexbor_sbst_entry_static_t; + +diff --git a/source/lexbor/html/tokenizer/state.c b/source/lexbor/html/tokenizer/state.c +index db362c6..6c3cbeb 100644 +--- a/source/lexbor/html/tokenizer/state.c ++++ b/source/lexbor/html/tokenizer/state.c +@@ -1825,7 +1825,7 @@ lxb_html_tokenizer_state_char_ref_named(lxb_html_tokenizer_t *tkz, + goto done; + } + +- if (entry->value != NULL) { ++ if (entry->value[0] != 0) { + tkz->entity_end = (tkz->pos + (data - begin)) - tkz->start; + tkz->entity_match = entry; + } +diff --git a/utils/lexbor/html/tokenizer_entities_bst.py b/utils/lexbor/html/tokenizer_entities_bst.py +index b34bca1..2bfea81 100755 +--- a/utils/lexbor/html/tokenizer_entities_bst.py ++++ b/utils/lexbor/html/tokenizer_entities_bst.py +@@ -1,6 +1,6 @@ + + import json +-import sys, re, os ++import sys, os + + # Find and append run script run dir to module search path + ABS_PATH = os.path.dirname(os.path.abspath(__file__)) +@@ -62,7 +62,7 @@ def entities_bst_create_layer(name, entry, index): + + def entities_bst_create(index): + bst = {} +- bst[0] = ["\0", 0, 0, 0, "NULL"] ++ bst[0] = ["\0", 0, 0, 0, "{0}"] + + begin = 1 + idx = end = entities_bst_create_tree(index, bst, begin) +@@ -114,7 +114,7 @@ def entities_bst_create_tree(index, bst, idx): + assert len(index[ split[0] ]['values']) < 2, 'Double values' + + if len(index[ split[0] ]['values']) == 0: +- value = "NULL" ++ value = "{0}" + else: + value = '"{}"'.format(toHex(index[ split[0] ]['values'][0]['characters'])) + +@@ -146,7 +146,7 @@ def toHex(s): + lst = [] + + for ch in bytes(s, 'utf-8'): +- hv = hex(ch).replace('0x', '\\\\x') ++ hv = hex(ch).replace('0x', '\\x') + lst.append(hv) + + return ''.join(lst) +diff --git a/utils/lexbor/lexbor/LXB.py b/utils/lexbor/lexbor/LXB.py +index 2370c66..c41e645 100755 +--- a/utils/lexbor/lexbor/LXB.py ++++ b/utils/lexbor/lexbor/LXB.py +@@ -27,7 +27,7 @@ class Temp: + + for line in fh: + for name in self.patterns: +- line = re.sub(name, '\n'.join(self.patterns[name]), line) ++ line = line.replace(name, '\n'.join(self.patterns[name])) + self.buffer.append(line) + fh.close() + +-- +2.51.2 + diff --git a/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch b/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch new file mode 100644 index 000000000000..a643f9716488 --- /dev/null +++ b/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch @@ -0,0 +1,32 @@ +From 54399ee441d922d89c32909e2028f899f6091cd6 Mon Sep 17 00:00:00 2001 +From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> +Date: Sun, 7 Jan 2024 21:59:28 +0100 +Subject: [PATCH 6/6] Patch out unused CSS style code + +--- + source/lexbor/css/rule.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/source/lexbor/css/rule.h b/source/lexbor/css/rule.h +index 308dced..d192a01 100644 +--- a/source/lexbor/css/rule.h ++++ b/source/lexbor/css/rule.h +@@ -361,6 +361,7 @@ lxb_css_rule_ref_dec(lxb_css_rule_t *rule) + lxb_inline void + lxb_css_rule_ref_dec_destroy(lxb_css_rule_t *rule) + { ++#if 0 + if (rule->ref_count > 0) { + rule->ref_count--; + } +@@ -368,6 +369,7 @@ lxb_css_rule_ref_dec_destroy(lxb_css_rule_t *rule) + if (rule->ref_count == 0) { + (void) lxb_css_rule_destroy(rule, true); + } ++#endif + } + + lxb_inline void +-- +2.51.2 + diff --git a/ext/dom/lexbor/selectors-adapted/selectors.c b/ext/dom/lexbor/selectors-adapted/selectors.c index 0bb285b39e99..0f7874d2cf53 100644 --- a/ext/dom/lexbor/selectors-adapted/selectors.c +++ b/ext/dom/lexbor/selectors-adapted/selectors.c @@ -1,9 +1,9 @@ /* - * Copyright (C) 2021-2025 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov * Adapted for PHP + libxml2 by: Niels Dossche - * Based on Lexbor (upstream commit 971faf11a5f45433b9193a143e2897d8c0fd5611) + * Based on Lexbor (upstream commit 5291cde0d40f77e7c4ea364b7cd726269e0bf1f9) */ #include @@ -1356,8 +1356,8 @@ lxb_selectors_state_after_nth_child(lxb_selectors_t *selectors, current = selectors->current; if (current->index == 0) { - selectors->state = lxb_selectors_state_not_found; selectors->current = selectors->current->parent; + lxb_selectors_switch_to_not_found(selectors, selectors->current); return selectors->current->entry; } @@ -1453,7 +1453,7 @@ lxb_selectors_match(lxb_selectors_t *selectors, lxb_selectors_entry_t *entry, case LXB_CSS_SELECTOR_TYPE_PSEUDO_ELEMENT_FUNCTION: return false; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return false; @@ -1635,7 +1635,7 @@ lxb_selectors_match_attribute_value(const lxb_css_selector_attribute_t *attr, bo return lexbor_str_data_ncmp_contain(trg->data, trg->length, src->data, src->length); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return false; diff --git a/ext/dom/namednodemap.c b/ext/dom/namednodemap.c index 4964f836407c..c6d8157881a3 100644 --- a/ext/dom/namednodemap.c +++ b/ext/dom/namednodemap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/namespace_compat.c b/ext/dom/namespace_compat.c index ee32ec39dbeb..569daabc78ea 100644 --- a/ext/dom/namespace_compat.c +++ b/ext/dom/namespace_compat.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/namespace_compat.h b/ext/dom/namespace_compat.h index 23c80acc7fd7..dc66021e5ec4 100644 --- a/ext/dom/namespace_compat.h +++ b/ext/dom/namespace_compat.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/node.c b/ext/dom/node.c index 19b6c2eeae3b..ad30a3fa67e1 100644 --- a/ext/dom/node.c +++ b/ext/dom/node.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | @@ -138,7 +136,7 @@ zend_result dom_node_node_name_read(dom_object *obj, zval *retval) case XML_TEXT_NODE: ZVAL_STRING(retval, "#text"); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return SUCCESS; @@ -2103,36 +2101,75 @@ PHP_METHOD(DOMNode, lookupNamespaceURI) } /* }}} end dom_node_lookup_namespace_uri */ +/* Allocate, track and prepend a temporary nsDef entry for C14N. + * Returns the new xmlNsPtr for the caller to fill in href/prefix/_private, + * or NULL on allocation failure. */ +static xmlNsPtr dom_alloc_ns_decl(HashTable *links, xmlNodePtr node) +{ + xmlNsPtr ns = xmlMalloc(sizeof(*ns)); + if (!ns) { + return NULL; + } + + zval *zv = zend_hash_index_lookup(links, (zend_ulong) node); + if (Z_ISNULL_P(zv)) { + ZVAL_LONG(zv, 1); + } else { + Z_LVAL_P(zv)++; + } + + memset(ns, 0, sizeof(*ns)); + ns->type = XML_LOCAL_NAMESPACE; + ns->next = node->nsDef; + node->nsDef = ns; + + return ns; +} + +/* Mint a temporary nsDef entry so C14N finds namespaces that live on node->ns + * but have no matching xmlns attribute (typical for createElementNS). */ +static void dom_add_synthetic_ns_decl(HashTable *links, xmlNodePtr node, xmlNsPtr src_ns) +{ + xmlNsPtr ns = dom_alloc_ns_decl(links, node); + if (!ns) { + return; + } + + ns->href = xmlStrdup(src_ns->href); + ns->prefix = src_ns->prefix ? xmlStrdup(src_ns->prefix) : NULL; +} + +/* Same, but for attribute namespaces, which may collide by prefix with the + * element's own ns or with a sibling attribute's ns. */ +static void dom_add_synthetic_ns_decl_for_attr(HashTable *links, xmlNodePtr node, xmlNsPtr src_ns) +{ + for (xmlNsPtr existing = node->nsDef; existing; existing = existing->next) { + if (xmlStrEqual(existing->prefix, src_ns->prefix)) { + return; + } + } + + dom_add_synthetic_ns_decl(links, node, src_ns); +} + static void dom_relink_ns_decls_element(HashTable *links, xmlNodePtr node) { if (node->type == XML_ELEMENT_NODE) { for (xmlAttrPtr attr = node->properties; attr; attr = attr->next) { if (php_dom_ns_is_fast((const xmlNode *) attr, php_dom_ns_is_xmlns_magic_token)) { - xmlNsPtr ns = xmlMalloc(sizeof(*ns)); + xmlNsPtr ns = dom_alloc_ns_decl(links, node); if (!ns) { return; } - zval *zv = zend_hash_index_lookup(links, (zend_ulong) node); - if (Z_ISNULL_P(zv)) { - ZVAL_LONG(zv, 1); - } else { - Z_LVAL_P(zv)++; - } - bool should_free; xmlChar *attr_value = php_libxml_attr_value(attr, &should_free); - memset(ns, 0, sizeof(*ns)); - ns->type = XML_LOCAL_NAMESPACE; ns->href = should_free ? attr_value : xmlStrdup(attr_value); ns->prefix = attr->ns->prefix ? xmlStrdup(attr->name) : NULL; - ns->next = node->nsDef; - node->nsDef = ns; - ns->_private = attr; if (attr->prev) { - attr->prev = attr->next; + attr->prev->next = attr->next; } else { node->properties = attr->next; } @@ -2150,6 +2187,14 @@ static void dom_relink_ns_decls_element(HashTable *links, xmlNodePtr node) * can return the current namespace. */ zend_hash_index_add_new_ptr(links, (zend_ulong) node | 1, node->ns); node->ns = xmlSearchNs(node->doc, node, NULL); + } else if (node->ns) { + dom_add_synthetic_ns_decl(links, node, node->ns); + } + + for (xmlAttrPtr attr = node->properties; attr; attr = attr->next) { + if (attr->ns && !php_dom_ns_is_fast((const xmlNode *) attr, php_dom_ns_is_xmlns_magic_token)) { + dom_add_synthetic_ns_decl_for_attr(links, node, attr->ns); + } } } } @@ -2179,13 +2224,15 @@ static void dom_unlink_ns_decls(HashTable *links) node->nsDef = ns->next; xmlAttrPtr attr = ns->_private; - if (attr->prev) { - attr->prev->next = attr; - } else { - node->properties = attr; - } - if (attr->next) { - attr->next->prev = attr; + if (attr) { + if (attr->prev) { + attr->prev->next = attr; + } else { + node->properties = attr; + } + if (attr->next) { + attr->next->prev = attr; + } } xmlFreeNs(ns); @@ -2263,7 +2310,11 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ } zend_hash_init(&links, 0, NULL, NULL, false); - dom_relink_ns_decls(&links, xmlDocGetRootElement(docp)); + xmlNodePtr root_element = xmlDocGetRootElement(docp); + + if (root_element) { + dom_relink_ns_decls(&links, root_element); + } } else if (!docp) { /* Note: not triggerable with modern DOM */ zend_throw_error(NULL, "Node must be associated with a document"); diff --git a/ext/dom/nodelist.c b/ext/dom/nodelist.c index 5e3de728e4fa..197ff3ceb880 100644 --- a/ext/dom/nodelist.c +++ b/ext/dom/nodelist.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/nodelist.h b/ext/dom/nodelist.h index 5c5653eea6dc..084ce33b5494 100644 --- a/ext/dom/nodelist.h +++ b/ext/dom/nodelist.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/notation.c b/ext/dom/notation.c index f83b31428e16..73d0d6b083a5 100644 --- a/ext/dom/notation.c +++ b/ext/dom/notation.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/obj_map.c b/ext/dom/obj_map.c index 84fae3bad572..60f8b28e6cad 100644 --- a/ext/dom/obj_map.c +++ b/ext/dom/obj_map.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/obj_map.h b/ext/dom/obj_map.h index e7231eb7b10a..1853cce354e6 100644 --- a/ext/dom/obj_map.h +++ b/ext/dom/obj_map.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/parentnode/css_selectors.c b/ext/dom/parentnode/css_selectors.c index 4f77359835ce..7254bd909a0a 100644 --- a/ext/dom/parentnode/css_selectors.c +++ b/ext/dom/parentnode/css_selectors.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/parentnode/tree.c b/ext/dom/parentnode/tree.c index c51bd2753cd8..696c42ba64ff 100644 --- a/ext/dom/parentnode/tree.c +++ b/ext/dom/parentnode/tree.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Benjamin Eberlei | | Niels Dossche | diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index fe2810689193..b188dea6eb49 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | @@ -414,11 +412,6 @@ zval *dom_write_property(zend_object *object, zend_string *name, zval *value, vo const dom_prop_handler *hnd = dom_get_prop_handler(obj, name, cache_slot); if (hnd) { - if (UNEXPECTED(!hnd->write_func)) { - zend_readonly_property_modification_error_ex(ZSTR_VAL(object->ce->name), ZSTR_VAL(name)); - return &EG(error_zval); - } - zend_property_info *prop = NULL; if (cache_slot) { ZEND_ASSERT(*cache_slot == obj->prop_handler); @@ -431,6 +424,16 @@ zval *dom_write_property(zend_object *object, zend_string *name, zval *value, vo } } + if (UNEXPECTED(!hnd->write_func)) { + if (prop && (prop->flags & ZEND_ACC_PPP_SET_MASK) && + !zend_asymmetric_property_has_set_access(prop)) { + zend_asymmetric_visibility_property_modification_error(prop, "modify"); + } else { + zend_readonly_property_modification_error_ex(ZSTR_VAL(object->ce->name), ZSTR_VAL(name)); + } + return &EG(error_zval); + } + ZEND_ASSERT(prop && ZEND_TYPE_IS_SET(prop->type)); zval tmp; ZVAL_COPY(&tmp, value); diff --git a/ext/dom/php_dom.h b/ext/dom/php_dom.h index e93000044f00..bc414adaa2f9 100644 --- a/ext/dom/php_dom.h +++ b/ext/dom/php_dom.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/php_dom.stub.php b/ext/dom/php_dom.stub.php index 71aa5f4ec0fa..521e3cd99c2e 100644 --- a/ext/dom/php_dom.stub.php +++ b/ext/dom/php_dom.stub.php @@ -237,41 +237,23 @@ class DOMDocumentType extends DOMNode { - /** - * @readonly - * @virtual - */ - public string $name; + /** @virtual */ + public private(set) string $name; - /** - * @readonly - * @virtual - */ - public DOMNamedNodeMap $entities; + /** @virtual */ + public private(set) DOMNamedNodeMap $entities; - /** - * @readonly - * @virtual - */ - public DOMNamedNodeMap $notations; + /** @virtual */ + public private(set) DOMNamedNodeMap $notations; - /** - * @readonly - * @virtual - */ - public string $publicId; + /** @virtual */ + public private(set) string $publicId; - /** - * @readonly - * @virtual - */ - public string $systemId; + /** @virtual */ + public private(set) string $systemId; - /** - * @readonly - * @virtual - */ - public ?string $internalSubset; + /** @virtual */ + public private(set) ?string $internalSubset; } class DOMCdataSection extends DOMText @@ -319,101 +301,56 @@ class DOMNode public const int DOCUMENT_POSITION_CONTAINED_BY = 0x10; public const int DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; - /** - * @readonly - * @virtual - */ - public string $nodeName; + /** @virtual */ + public private(set) string $nodeName; /** @virtual */ public ?string $nodeValue; - /** - * @readonly - * @virtual - */ - public int $nodeType; + /** @virtual */ + public private(set) int $nodeType; - /** - * @readonly - * @virtual - */ - public ?DOMNode $parentNode; + /** @virtual */ + public private(set) ?DOMNode $parentNode; - /** - * @readonly - * @virtual - */ - public ?DOMElement $parentElement; + /** @virtual */ + public private(set) ?DOMElement $parentElement; - /** - * @readonly - * @virtual - */ - public DOMNodeList $childNodes; + /** @virtual */ + public private(set) DOMNodeList $childNodes; - /** - * @readonly - * @virtual - */ - public ?DOMNode $firstChild; + /** @virtual */ + public private(set) ?DOMNode $firstChild; - /** - * @readonly - * @virtual - */ - public ?DOMNode $lastChild; + /** @virtual */ + public private(set) ?DOMNode $lastChild; - /** - * @readonly - * @virtual - */ - public ?DOMNode $previousSibling; + /** @virtual */ + public private(set) ?DOMNode $previousSibling; - /** - * @readonly - * @virtual - */ - public ?DOMNode $nextSibling; + /** @virtual */ + public private(set) ?DOMNode $nextSibling; - /** - * @readonly - * @virtual - */ - public ?DOMNamedNodeMap $attributes; + /** @virtual */ + public private(set) ?DOMNamedNodeMap $attributes; - /** - * @readonly - * @virtual - */ - public bool $isConnected; + /** @virtual */ + public private(set) bool $isConnected; - /** - * @readonly - * @virtual - */ - public ?DOMDocument $ownerDocument; + /** @virtual */ + public private(set) ?DOMDocument $ownerDocument; - /** - * @readonly - * @virtual - */ - public ?string $namespaceURI; + /** @virtual */ + public private(set) ?string $namespaceURI; /** @virtual */ public string $prefix; - /** - * @readonly - * @virtual - */ - public ?string $localName; + /** @virtual */ + public private(set) ?string $localName; - /** - * @readonly - * @virtual - */ - public ?string $baseURI; + /** @virtual */ + public private(set) ?string $baseURI; /** @virtual */ public string $textContent; @@ -484,65 +421,35 @@ public function __wakeup(): void {} class DOMNameSpaceNode { - /** - * @readonly - * @virtual - */ - public string $nodeName; + /** @virtual */ + public private(set) string $nodeName; - /** - * @readonly - * @virtual - */ - public ?string $nodeValue; + /** @virtual */ + public private(set) ?string $nodeValue; - /** - * @readonly - * @virtual - */ - public int $nodeType; + /** @virtual */ + public private(set) int $nodeType; - /** - * @readonly - * @virtual - */ - public string $prefix; + /** @virtual */ + public private(set) string $prefix; - /** - * @readonly - * @virtual - */ - public ?string $localName; + /** @virtual */ + public private(set) ?string $localName; - /** - * @readonly - * @virtual - */ - public ?string $namespaceURI; + /** @virtual */ + public private(set) ?string $namespaceURI; - /** - * @readonly - * @virtual - */ - public bool $isConnected; + /** @virtual */ + public private(set) bool $isConnected; - /** - * @readonly - * @virtual - */ - public ?DOMDocument $ownerDocument; + /** @virtual */ + public private(set) ?DOMDocument $ownerDocument; - /** - * @readonly - * @virtual - */ - public ?DOMNode $parentNode; + /** @virtual */ + public private(set) ?DOMNode $parentNode; - /** - * @readonly - * @virtual - */ - public ?DOMElement $parentElement; + /** @virtual */ + public private(set) ?DOMElement $parentElement; /** @implementation-alias DOMNode::__sleep */ public function __sleep(): array {} @@ -565,23 +472,14 @@ public function createDocument(?string $namespace = null, string $qualifiedName class DOMDocumentFragment extends DOMNode implements DOMParentNode { - /** - * @readonly - * @virtual - */ - public ?DOMElement $firstElementChild; + /** @virtual */ + public private(set) ?DOMElement $firstElementChild; - /** - * @readonly - * @virtual - */ - public ?DOMElement $lastElementChild; + /** @virtual */ + public private(set) ?DOMElement $lastElementChild; - /** - * @readonly - * @virtual - */ - public int $childElementCount; + /** @virtual */ + public private(set) int $childElementCount; public function __construct() {} @@ -609,11 +507,8 @@ public function replaceChildren(...$nodes): void {} class DOMNodeList implements IteratorAggregate, Countable { - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @tentative-return-type */ public function count(): int {} @@ -629,23 +524,14 @@ class DOMCharacterData extends DOMNode implements DOMChildNode /** @virtual */ public string $data; - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; - /** - * @readonly - * @virtual - */ - public ?DOMElement $previousElementSibling; + /** @virtual */ + public private(set) ?DOMElement $previousElementSibling; - /** - * @readonly - * @virtual - */ - public ?DOMElement $nextElementSibling; + /** @virtual */ + public private(set) ?DOMElement $nextElementSibling; /** @tentative-return-type */ public function appendData(string $data): true {} @@ -686,32 +572,20 @@ public function after(...$nodes): void {} class DOMAttr extends DOMNode { - /** - * @readonly - * @virtual - */ - public string $name; + /** @virtual */ + public private(set) string $name; - /** - * @readonly - * @virtual - */ - public bool $specified; + /** @virtual */ + public private(set) bool $specified; /** @virtual */ public string $value; - /** - * @readonly - * @virtual - */ - public ?DOMElement $ownerElement; + /** @virtual */ + public private(set) ?DOMElement $ownerElement; - /** - * @readonly - * @virtual - */ - public mixed $schemaTypeInfo; + /** @virtual */ + public private(set) mixed $schemaTypeInfo; public function __construct(string $name, string $value = "") {} @@ -721,11 +595,8 @@ public function isId(): bool {} class DOMElement extends DOMNode implements \DOMParentNode, \DOMChildNode { - /** - * @readonly - * @virtual - */ - public string $tagName; + /** @virtual */ + public private(set) string $tagName; /** @virtual */ public string $className; @@ -733,41 +604,23 @@ class DOMElement extends DOMNode implements \DOMParentNode, \DOMChildNode /** @virtual */ public string $id; - /** - * @readonly - * @virtual - */ - public mixed $schemaTypeInfo; + /** @virtual */ + public private(set) mixed $schemaTypeInfo; - /** - * @readonly - * @virtual - */ - public ?DOMElement $firstElementChild; + /** @virtual */ + public private(set) ?DOMElement $firstElementChild; - /** - * @readonly - * @virtual - */ - public ?DOMElement $lastElementChild; + /** @virtual */ + public private(set) ?DOMElement $lastElementChild; - /** - * @readonly - * @virtual - */ - public int $childElementCount; + /** @virtual */ + public private(set) int $childElementCount; - /** - * @readonly - * @virtual - */ - public ?DOMElement $previousElementSibling; + /** @virtual */ + public private(set) ?DOMElement $previousElementSibling; - /** - * @readonly - * @virtual - */ - public ?DOMElement $nextElementSibling; + /** @virtual */ + public private(set) ?DOMElement $nextElementSibling; public function __construct(string $qualifiedName, ?string $value = null, string $namespace = "") {} @@ -856,39 +709,26 @@ public function insertAdjacentText(string $where, string $data): void {} class DOMDocument extends DOMNode implements DOMParentNode { - /** - * @readonly - * @virtual - */ - public ?DOMDocumentType $doctype; + /** @virtual */ + public private(set) ?DOMDocumentType $doctype; - /** - * @readonly - * @virtual - */ - public DOMImplementation $implementation; + /** @virtual */ + public private(set) DOMImplementation $implementation; - /** - * @readonly - * @virtual - */ - public ?DOMElement $documentElement; + /** @virtual */ + public private(set) ?DOMElement $documentElement; /** - * @readonly * @deprecated * @virtual */ - public ?string $actualEncoding; + public private(set) ?string $actualEncoding; /** @virtual */ public ?string $encoding; - /** - * @readonly - * @virtual - */ - public ?string $xmlEncoding; + /** @virtual */ + public private(set) ?string $xmlEncoding; /** @virtual */ public bool $standalone; @@ -909,11 +749,10 @@ class DOMDocument extends DOMNode implements DOMParentNode public ?string $documentURI; /** - * @readonly * @deprecated * @virtual */ - public mixed $config; + public private(set) mixed $config; /** @virtual */ public bool $formatOutput; @@ -933,23 +772,14 @@ class DOMDocument extends DOMNode implements DOMParentNode /** @virtual */ public bool $substituteEntities; - /** - * @readonly - * @virtual - */ - public ?DOMElement $firstElementChild; + /** @virtual */ + public private(set) ?DOMElement $firstElementChild; - /** - * @readonly - * @virtual - */ - public ?DOMElement $lastElementChild; + /** @virtual */ + public private(set) ?DOMElement $lastElementChild; - /** - * @readonly - * @virtual - */ - public int $childElementCount; + /** @virtual */ + public private(set) int $childElementCount; public function __construct(string $version = "1.0", string $encoding = "") {} @@ -1082,11 +912,8 @@ final class DOMException extends Exception class DOMText extends DOMCharacterData { - /** - * @readonly - * @virtual - */ - public string $wholeText; + /** @virtual */ + public private(set) string $wholeText; public function __construct(string $data = "") {} @@ -1105,11 +932,8 @@ public function splitText(int $offset) {} class DOMNamedNodeMap implements IteratorAggregate, Countable { - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @tentative-return-type */ public function getNamedItem(string $qualifiedName): ?DOMNode {} @@ -1128,44 +952,32 @@ public function getIterator(): Iterator {} class DOMEntity extends DOMNode { - /** - * @readonly - * @virtual - */ - public ?string $publicId; + /** @virtual */ + public private(set) ?string $publicId; - /** - * @readonly - * @virtual - */ - public ?string $systemId; + /** @virtual */ + public private(set) ?string $systemId; - /** - * @readonly - * @virtual - */ - public ?string $notationName; + /** @virtual */ + public private(set) ?string $notationName; /** - * @readonly * @deprecated * @virtual */ - public ?string $actualEncoding; + public private(set) ?string $actualEncoding; /** - * @readonly * @deprecated * @virtual */ - public ?string $encoding; + public private(set) ?string $encoding; /** - * @readonly * @deprecated * @virtual */ - public ?string $version; + public private(set) ?string $version; } class DOMEntityReference extends DOMNode @@ -1175,26 +987,17 @@ public function __construct(string $name) {} class DOMNotation extends DOMNode { - /** - * @readonly - * @virtual - */ - public string $publicId; + /** @virtual */ + public private(set) string $publicId; - /** - * @readonly - * @virtual - */ - public string $systemId; + /** @virtual */ + public private(set) string $systemId; } class DOMProcessingInstruction extends DOMNode - { - /** - * @readonly - * @virtual - */ - public string $target; + { + /** @virtual */ + public private(set) string $target; /** @virtual */ public string $data; @@ -1206,11 +1009,8 @@ public function __construct(string $name, string $value = "") {} /** @not-serializable */ class DOMXPath { - /** - * @readonly - * @virtual - */ - public DOMDocument $document; + /** @virtual */ + public private(set) DOMDocument $document; /** @virtual */ public bool $registerNodeNamespaces; @@ -1358,73 +1158,37 @@ class Node { private final function __construct() {} - /** - * @readonly - * @virtual - */ - public int $nodeType; - /** - * @readonly - * @virtual - */ - public string $nodeName; + /** @virtual */ + public private(set) int $nodeType; + /** @virtual */ + public private(set) string $nodeName; - /** - * @readonly - * @virtual - */ - public string $baseURI; + /** @virtual */ + public private(set) string $baseURI; - /** - * @readonly - * @virtual - */ - public bool $isConnected; - /** - * @readonly - * @virtual - */ - public ?Document $ownerDocument; + /** @virtual */ + public private(set) bool $isConnected; + /** @virtual */ + public private(set) ?Document $ownerDocument; /** @implementation-alias DOMNode::getRootNode */ public function getRootNode(array $options = []): Node {} - /** - * @readonly - * @virtual - */ - public ?Node $parentNode; - /** - * @readonly - * @virtual - */ - public ?Element $parentElement; + /** @virtual */ + public private(set) ?Node $parentNode; + /** @virtual */ + public private(set) ?Element $parentElement; /** @implementation-alias DOMNode::hasChildNodes */ public function hasChildNodes(): bool {} - /** - * @readonly - * @virtual - */ - public NodeList $childNodes; - /** - * @readonly - * @virtual - */ - public ?Node $firstChild; - /** - * @readonly - * @virtual - */ - public ?Node $lastChild; - /** - * @readonly - * @virtual - */ - public ?Node $previousSibling; - /** - * @readonly - * @virtual - */ - public ?Node $nextSibling; + /** @virtual */ + public private(set) NodeList $childNodes; + /** @virtual */ + public private(set) ?Node $firstChild; + /** @virtual */ + public private(set) ?Node $lastChild; + /** @virtual */ + public private(set) ?Node $previousSibling; + /** @virtual */ + public private(set) ?Node $nextSibling; /** @virtual */ public ?string $nodeValue; @@ -1474,11 +1238,8 @@ public function __wakeup(): void {} class NodeList implements \IteratorAggregate, \Countable { - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @implementation-alias DOMNodeList::count */ public function count(): int {} @@ -1492,11 +1253,8 @@ public function item(int $index): ?Node {} class NamedNodeMap implements \IteratorAggregate, \Countable { - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @implementation-alias DOMNamedNodeMap::item */ public function item(int $index): ?Attr {} @@ -1514,11 +1272,8 @@ public function getIterator(): \Iterator {} class DtdNamedNodeMap implements \IteratorAggregate, \Countable { - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @implementation-alias DOMNamedNodeMap::item */ public function item(int $index): Entity|Notation|null {} @@ -1536,11 +1291,8 @@ public function getIterator(): \Iterator {} class HTMLCollection implements \IteratorAggregate, \Countable { - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @implementation-alias DOMNodeList::item */ public function item(int $index): ?Element {} @@ -1564,71 +1316,37 @@ enum AdjacentPosition : string class Element extends Node implements ParentNode, ChildNode { - /** - * @readonly - * @virtual - */ - public ?string $namespaceURI; - /** - * @readonly - * @virtual - */ - public ?string $prefix; - /** - * @readonly - * @virtual - */ - public string $localName; - /** - * @readonly - * @virtual - */ - public string $tagName; + /** @virtual */ + public private(set) ?string $namespaceURI; + /** @virtual */ + public private(set) ?string $prefix; + /** @virtual */ + public private(set) string $localName; + /** @virtual */ + public private(set) string $tagName; - /** - * @readonly - */ - public HTMLCollection $children; - /** - * @readonly - * @virtual - */ - public ?Element $firstElementChild; - /** - * @readonly - * @virtual - */ - public ?Element $lastElementChild; - /** - * @readonly - * @virtual - */ - public int $childElementCount; - /** - * @readonly - * @virtual - */ - public ?Element $previousElementSibling; - /** - * @readonly - * @virtual - */ - public ?Element $nextElementSibling; + public private(set) HTMLCollection $children; + /** @virtual */ + public private(set) ?Element $firstElementChild; + /** @virtual */ + public private(set) ?Element $lastElementChild; + /** @virtual */ + public private(set) int $childElementCount; + /** @virtual */ + public private(set) ?Element $previousElementSibling; + /** @virtual */ + public private(set) ?Element $nextElementSibling; /** @virtual */ public string $id; /** @virtual */ public string $className; - /** @readonly */ - public TokenList $classList; + public private(set) TokenList $classList; /** @implementation-alias DOMNode::hasAttributes */ public function hasAttributes(): bool {} - /** - * @readonly - * @virtual - */ - public NamedNodeMap $attributes; + /** @virtual */ + public private(set) NamedNodeMap $attributes; /** @implementation-alias DOMElement::getAttributeNames */ public function getAttributeNames(): array {} /** @implementation-alias DOMElement::getAttribute */ @@ -1716,40 +1434,22 @@ class HTMLElement extends Element class Attr extends Node { - /** - * @readonly - * @virtual - */ - public ?string $namespaceURI; - /** - * @readonly - * @virtual - */ - public ?string $prefix; - /** - * @readonly - * @virtual - */ - public string $localName; - /** - * @readonly - * @virtual - */ - public string $name; + /** @virtual */ + public private(set) ?string $namespaceURI; + /** @virtual */ + public private(set) ?string $prefix; + /** @virtual */ + public private(set) string $localName; + /** @virtual */ + public private(set) string $name; /** @virtual */ public string $value; - /** - * @readonly - * @virtual - */ - public ?Element $ownerElement; + /** @virtual */ + public private(set) ?Element $ownerElement; - /** - * @readonly - * @virtual - */ - public bool $specified; + /** @virtual */ + public private(set) bool $specified; /** @implementation-alias DOMAttr::isId */ public function isId(): bool {} @@ -1760,24 +1460,15 @@ public function rename(?string $namespaceURI, string $qualifiedName): void {} class CharacterData extends Node implements ChildNode { - /** - * @readonly - * @virtual - */ - public ?Element $previousElementSibling; - /** - * @readonly - * @virtual - */ - public ?Element $nextElementSibling; + /** @virtual */ + public private(set) ?Element $previousElementSibling; + /** @virtual */ + public private(set) ?Element $nextElementSibling; /** @virtual */ public string $data; - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; /** @implementation-alias DOMCharacterData::substringData */ public function substringData(int $offset, int $count): string {} public function appendData(string $data): void {} @@ -1801,22 +1492,16 @@ class Text extends CharacterData /** @implementation-alias DOMText::splitText */ public function splitText(int $offset): Text {} - /** - * @readonly - * @virtual - */ - public string $wholeText; + /** @virtual */ + public private(set) string $wholeText; } class CDATASection extends Text {} class ProcessingInstruction extends CharacterData { - /** - * @readonly - * @virtual - */ - public string $target; + /** @virtual */ + public private(set) string $target; } class Comment extends CharacterData @@ -1826,36 +1511,18 @@ class Comment extends CharacterData class DocumentType extends Node implements ChildNode { - /** - * @readonly - * @virtual - */ - public string $name; - /** - * @readonly - * @virtual - */ - public DtdNamedNodeMap $entities; - /** - * @readonly - * @virtual - */ - public DtdNamedNodeMap $notations; - /** - * @readonly - * @virtual - */ - public string $publicId; - /** - * @readonly - * @virtual - */ - public string $systemId; - /** - * @readonly - * @virtual - */ - public ?string $internalSubset; + /** @virtual */ + public private(set) string $name; + /** @virtual */ + public private(set) DtdNamedNodeMap $entities; + /** @virtual */ + public private(set) DtdNamedNodeMap $notations; + /** @virtual */ + public private(set) string $publicId; + /** @virtual */ + public private(set) string $systemId; + /** @virtual */ + public private(set) ?string $internalSubset; /** @implementation-alias DOMElement::remove */ public function remove(): void {} @@ -1869,25 +1536,13 @@ public function replaceWith(Node|string ...$nodes): void {} class DocumentFragment extends Node implements ParentNode { - /** - * @readonly - */ - public HTMLCollection $children; - /** - * @readonly - * @virtual - */ - public ?Element $firstElementChild; - /** - * @readonly - * @virtual - */ - public ?Element $lastElementChild; - /** - * @readonly - * @virtual - */ - public int $childElementCount; + public private(set) HTMLCollection $children; + /** @virtual */ + public private(set) ?Element $firstElementChild; + /** @virtual */ + public private(set) ?Element $lastElementChild; + /** @virtual */ + public private(set) int $childElementCount; /** @implementation-alias DOMDocumentFragment::appendXML */ public function appendXml(string $data): bool {} @@ -1906,63 +1561,35 @@ public function querySelectorAll(string $selectors): NodeList {} class Entity extends Node { - /** - * @readonly - * @virtual - */ - public ?string $publicId; - /** - * @readonly - * @virtual - */ - public ?string $systemId; - /** - * @readonly - * @virtual - */ - public ?string $notationName; + /** @virtual */ + public private(set) ?string $publicId; + /** @virtual */ + public private(set) ?string $systemId; + /** @virtual */ + public private(set) ?string $notationName; } class EntityReference extends Node {} class Notation extends Node { - /** - * @readonly - * @virtual - */ - public string $publicId; - /** - * @readonly - * @virtual - */ - public string $systemId; + /** @virtual */ + public private(set) string $publicId; + /** @virtual */ + public private(set) string $systemId; } abstract class Document extends Node implements ParentNode { - /** - * @readonly - */ - public HTMLCollection $children; - /** - * @readonly - * @virtual - */ - public ?Element $firstElementChild; - /** - * @readonly - * @virtual - */ - public ?Element $lastElementChild; - /** - * @readonly - * @virtual - */ - public int $childElementCount; + public private(set) HTMLCollection $children; + /** @virtual */ + public private(set) ?Element $firstElementChild; + /** @virtual */ + public private(set) ?Element $lastElementChild; + /** @virtual */ + public private(set) int $childElementCount; - /** @readonly */ - public Implementation $implementation; + public private(set) Implementation $implementation; /** @virtual */ public string $URL; /** @virtual */ @@ -1974,16 +1601,10 @@ abstract class Document extends Node implements ParentNode /** @virtual */ public string $inputEncoding; - /** - * @readonly - * @virtual - */ - public ?DocumentType $doctype; - /** - * @readonly - * @virtual - */ - public ?Element $documentElement; + /** @virtual */ + public private(set) ?DocumentType $doctype; + /** @virtual */ + public private(set) ?Element $documentElement; /** @implementation-alias Dom\Element::getElementsByTagName */ public function getElementsByTagName(string $qualifiedName): HTMLCollection {} /** @implementation-alias Dom\Element::getElementsByTagNameNS */ @@ -2043,11 +1664,8 @@ public function querySelectorAll(string $selectors): NodeList {} /** @virtual */ public ?HTMLElement $body; - /** - * @readonly - * @virtual - */ - public ?HTMLElement $head; + /** @virtual */ + public private(set) ?HTMLElement $head; /** @virtual */ public string $title; } @@ -2083,11 +1701,8 @@ public static function createFromFile(string $path, int $options = 0, ?string $o public static function createFromString(string $source, int $options = 0, ?string $overrideEncoding = null): XMLDocument {} - /** - * @readonly - * @virtual - */ - public string $xmlEncoding; + /** @virtual */ + public private(set) string $xmlEncoding; /** @virtual */ public bool $xmlStandalone; @@ -2121,11 +1736,8 @@ final class TokenList implements \IteratorAggregate, \Countable /** @implementation-alias Dom\Node::__construct */ private function __construct() {} - /** - * @readonly - * @virtual - */ - public int $length; + /** @virtual */ + public private(set) int $length; public function item(int $index): ?string {} public function contains(string $token): bool {} public function add(string ...$tokens): void {} @@ -2159,11 +1771,8 @@ private function __construct() {} /** @not-serializable */ final class XPath { - /** - * @readonly - * @virtual - */ - public Document $document; + /** @virtual */ + public private(set) Document $document; /** @virtual */ public bool $registerNodeNamespaces; diff --git a/ext/dom/php_dom_arginfo.h b/ext/dom/php_dom_arginfo.h index 1c90f920cdd8..0274186380dc 100644 --- a/ext/dom/php_dom_arginfo.h +++ b/ext/dom/php_dom_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit php_dom.stub.php instead. - * Stub hash: e00668999f4fe9afee1f78f6986467a315f831a5 + * Stub hash: 8d7713834c924709155ed7acc554c9efc55e96c1 * Has decl header: yes */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_dom_import_simplexml, 0, 1, DOMAttr|DOMElement, 0) @@ -1887,38 +1887,38 @@ static zend_class_entry *register_class_DOMDocumentType(zend_class_entry *class_ zval property_name_default_value; ZVAL_UNDEF(&property_name_default_value); - zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zval property_entities_default_value; ZVAL_UNDEF(&property_entities_default_value); zend_string *property_entities_name = zend_string_init("entities", sizeof("entities") - 1, true); zend_string *property_entities_class_DOMNamedNodeMap = zend_string_init("DOMNamedNodeMap", sizeof("DOMNamedNodeMap")-1, 1); - zend_declare_typed_property(class_entry, property_entities_name, &property_entities_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_entities_class_DOMNamedNodeMap, 0, 0)); + zend_declare_typed_property(class_entry, property_entities_name, &property_entities_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_entities_class_DOMNamedNodeMap, 0, 0)); zend_string_release_ex(property_entities_name, true); zval property_notations_default_value; ZVAL_UNDEF(&property_notations_default_value); zend_string *property_notations_name = zend_string_init("notations", sizeof("notations") - 1, true); zend_string *property_notations_class_DOMNamedNodeMap = zend_string_init("DOMNamedNodeMap", sizeof("DOMNamedNodeMap")-1, 1); - zend_declare_typed_property(class_entry, property_notations_name, &property_notations_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_notations_class_DOMNamedNodeMap, 0, 0)); + zend_declare_typed_property(class_entry, property_notations_name, &property_notations_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_notations_class_DOMNamedNodeMap, 0, 0)); zend_string_release_ex(property_notations_name, true); zval property_publicId_default_value; ZVAL_UNDEF(&property_publicId_default_value); zend_string *property_publicId_name = zend_string_init("publicId", sizeof("publicId") - 1, true); - zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_publicId_name, true); zval property_systemId_default_value; ZVAL_UNDEF(&property_systemId_default_value); zend_string *property_systemId_name = zend_string_init("systemId", sizeof("systemId") - 1, true); - zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_systemId_name, true); zval property_internalSubset_default_value; ZVAL_UNDEF(&property_internalSubset_default_value); zend_string *property_internalSubset_name = zend_string_init("internalSubset", sizeof("internalSubset") - 1, true); - zend_declare_typed_property(class_entry, property_internalSubset_name, &property_internalSubset_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_internalSubset_name, &property_internalSubset_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_internalSubset_name, true); return class_entry; @@ -2010,7 +2010,7 @@ static zend_class_entry *register_class_DOMNode(void) zval property_nodeName_default_value; ZVAL_UNDEF(&property_nodeName_default_value); zend_string *property_nodeName_name = zend_string_init("nodeName", sizeof("nodeName") - 1, true); - zend_declare_typed_property(class_entry, property_nodeName_name, &property_nodeName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_nodeName_name, &property_nodeName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_nodeName_name, true); zval property_nodeValue_default_value; @@ -2022,82 +2022,82 @@ static zend_class_entry *register_class_DOMNode(void) zval property_nodeType_default_value; ZVAL_UNDEF(&property_nodeType_default_value); zend_string *property_nodeType_name = zend_string_init("nodeType", sizeof("nodeType") - 1, true); - zend_declare_typed_property(class_entry, property_nodeType_name, &property_nodeType_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_nodeType_name, &property_nodeType_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_nodeType_name, true); zval property_parentNode_default_value; ZVAL_UNDEF(&property_parentNode_default_value); zend_string *property_parentNode_name = zend_string_init("parentNode", sizeof("parentNode") - 1, true); zend_string *property_parentNode_class_DOMNode = zend_string_init("DOMNode", sizeof("DOMNode")-1, 1); - zend_declare_typed_property(class_entry, property_parentNode_name, &property_parentNode_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentNode_class_DOMNode, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_parentNode_name, &property_parentNode_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentNode_class_DOMNode, 0, MAY_BE_NULL)); zend_string_release_ex(property_parentNode_name, true); zval property_parentElement_default_value; ZVAL_UNDEF(&property_parentElement_default_value); zend_string *property_parentElement_name = zend_string_init("parentElement", sizeof("parentElement") - 1, true); zend_string *property_parentElement_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_parentElement_name, &property_parentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentElement_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_parentElement_name, &property_parentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentElement_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_parentElement_name, true); zval property_childNodes_default_value; ZVAL_UNDEF(&property_childNodes_default_value); zend_string *property_childNodes_name = zend_string_init("childNodes", sizeof("childNodes") - 1, true); zend_string *property_childNodes_class_DOMNodeList = zend_string_init("DOMNodeList", sizeof("DOMNodeList")-1, 1); - zend_declare_typed_property(class_entry, property_childNodes_name, &property_childNodes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_childNodes_class_DOMNodeList, 0, 0)); + zend_declare_typed_property(class_entry, property_childNodes_name, &property_childNodes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_childNodes_class_DOMNodeList, 0, 0)); zend_string_release_ex(property_childNodes_name, true); zval property_firstChild_default_value; ZVAL_UNDEF(&property_firstChild_default_value); zend_string *property_firstChild_name = zend_string_init("firstChild", sizeof("firstChild") - 1, true); zend_string *property_firstChild_class_DOMNode = zend_string_init("DOMNode", sizeof("DOMNode")-1, 1); - zend_declare_typed_property(class_entry, property_firstChild_name, &property_firstChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstChild_class_DOMNode, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstChild_name, &property_firstChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstChild_class_DOMNode, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstChild_name, true); zval property_lastChild_default_value; ZVAL_UNDEF(&property_lastChild_default_value); zend_string *property_lastChild_name = zend_string_init("lastChild", sizeof("lastChild") - 1, true); zend_string *property_lastChild_class_DOMNode = zend_string_init("DOMNode", sizeof("DOMNode")-1, 1); - zend_declare_typed_property(class_entry, property_lastChild_name, &property_lastChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastChild_class_DOMNode, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastChild_name, &property_lastChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastChild_class_DOMNode, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastChild_name, true); zval property_previousSibling_default_value; ZVAL_UNDEF(&property_previousSibling_default_value); zend_string *property_previousSibling_name = zend_string_init("previousSibling", sizeof("previousSibling") - 1, true); zend_string *property_previousSibling_class_DOMNode = zend_string_init("DOMNode", sizeof("DOMNode")-1, 1); - zend_declare_typed_property(class_entry, property_previousSibling_name, &property_previousSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousSibling_class_DOMNode, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_previousSibling_name, &property_previousSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousSibling_class_DOMNode, 0, MAY_BE_NULL)); zend_string_release_ex(property_previousSibling_name, true); zval property_nextSibling_default_value; ZVAL_UNDEF(&property_nextSibling_default_value); zend_string *property_nextSibling_name = zend_string_init("nextSibling", sizeof("nextSibling") - 1, true); zend_string *property_nextSibling_class_DOMNode = zend_string_init("DOMNode", sizeof("DOMNode")-1, 1); - zend_declare_typed_property(class_entry, property_nextSibling_name, &property_nextSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextSibling_class_DOMNode, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nextSibling_name, &property_nextSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextSibling_class_DOMNode, 0, MAY_BE_NULL)); zend_string_release_ex(property_nextSibling_name, true); zval property_attributes_default_value; ZVAL_UNDEF(&property_attributes_default_value); zend_string *property_attributes_name = zend_string_init("attributes", sizeof("attributes") - 1, true); zend_string *property_attributes_class_DOMNamedNodeMap = zend_string_init("DOMNamedNodeMap", sizeof("DOMNamedNodeMap")-1, 1); - zend_declare_typed_property(class_entry, property_attributes_name, &property_attributes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_attributes_class_DOMNamedNodeMap, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_attributes_name, &property_attributes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_attributes_class_DOMNamedNodeMap, 0, MAY_BE_NULL)); zend_string_release_ex(property_attributes_name, true); zval property_isConnected_default_value; ZVAL_UNDEF(&property_isConnected_default_value); zend_string *property_isConnected_name = zend_string_init("isConnected", sizeof("isConnected") - 1, true); - zend_declare_typed_property(class_entry, property_isConnected_name, &property_isConnected_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); + zend_declare_typed_property(class_entry, property_isConnected_name, &property_isConnected_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); zend_string_release_ex(property_isConnected_name, true); zval property_ownerDocument_default_value; ZVAL_UNDEF(&property_ownerDocument_default_value); zend_string *property_ownerDocument_name = zend_string_init("ownerDocument", sizeof("ownerDocument") - 1, true); zend_string *property_ownerDocument_class_DOMDocument = zend_string_init("DOMDocument", sizeof("DOMDocument")-1, 1); - zend_declare_typed_property(class_entry, property_ownerDocument_name, &property_ownerDocument_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerDocument_class_DOMDocument, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_ownerDocument_name, &property_ownerDocument_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerDocument_class_DOMDocument, 0, MAY_BE_NULL)); zend_string_release_ex(property_ownerDocument_name, true); zval property_namespaceURI_default_value; ZVAL_UNDEF(&property_namespaceURI_default_value); zend_string *property_namespaceURI_name = zend_string_init("namespaceURI", sizeof("namespaceURI") - 1, true); - zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_namespaceURI_name, true); zval property_prefix_default_value; @@ -2109,13 +2109,13 @@ static zend_class_entry *register_class_DOMNode(void) zval property_localName_default_value; ZVAL_UNDEF(&property_localName_default_value); zend_string *property_localName_name = zend_string_init("localName", sizeof("localName") - 1, true); - zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_localName_name, true); zval property_baseURI_default_value; ZVAL_UNDEF(&property_baseURI_default_value); zend_string *property_baseURI_name = zend_string_init("baseURI", sizeof("baseURI") - 1, true); - zend_declare_typed_property(class_entry, property_baseURI_name, &property_baseURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_baseURI_name, &property_baseURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_baseURI_name, true); zval property_textContent_default_value; @@ -2137,64 +2137,64 @@ static zend_class_entry *register_class_DOMNameSpaceNode(void) zval property_nodeName_default_value; ZVAL_UNDEF(&property_nodeName_default_value); zend_string *property_nodeName_name = zend_string_init("nodeName", sizeof("nodeName") - 1, true); - zend_declare_typed_property(class_entry, property_nodeName_name, &property_nodeName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_nodeName_name, &property_nodeName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_nodeName_name, true); zval property_nodeValue_default_value; ZVAL_UNDEF(&property_nodeValue_default_value); zend_string *property_nodeValue_name = zend_string_init("nodeValue", sizeof("nodeValue") - 1, true); - zend_declare_typed_property(class_entry, property_nodeValue_name, &property_nodeValue_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nodeValue_name, &property_nodeValue_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_nodeValue_name, true); zval property_nodeType_default_value; ZVAL_UNDEF(&property_nodeType_default_value); zend_string *property_nodeType_name = zend_string_init("nodeType", sizeof("nodeType") - 1, true); - zend_declare_typed_property(class_entry, property_nodeType_name, &property_nodeType_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_nodeType_name, &property_nodeType_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_nodeType_name, true); zval property_prefix_default_value; ZVAL_UNDEF(&property_prefix_default_value); zend_string *property_prefix_name = zend_string_init("prefix", sizeof("prefix") - 1, true); - zend_declare_typed_property(class_entry, property_prefix_name, &property_prefix_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_prefix_name, &property_prefix_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_prefix_name, true); zval property_localName_default_value; ZVAL_UNDEF(&property_localName_default_value); zend_string *property_localName_name = zend_string_init("localName", sizeof("localName") - 1, true); - zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_localName_name, true); zval property_namespaceURI_default_value; ZVAL_UNDEF(&property_namespaceURI_default_value); zend_string *property_namespaceURI_name = zend_string_init("namespaceURI", sizeof("namespaceURI") - 1, true); - zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_namespaceURI_name, true); zval property_isConnected_default_value; ZVAL_UNDEF(&property_isConnected_default_value); zend_string *property_isConnected_name = zend_string_init("isConnected", sizeof("isConnected") - 1, true); - zend_declare_typed_property(class_entry, property_isConnected_name, &property_isConnected_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); + zend_declare_typed_property(class_entry, property_isConnected_name, &property_isConnected_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); zend_string_release_ex(property_isConnected_name, true); zval property_ownerDocument_default_value; ZVAL_UNDEF(&property_ownerDocument_default_value); zend_string *property_ownerDocument_name = zend_string_init("ownerDocument", sizeof("ownerDocument") - 1, true); zend_string *property_ownerDocument_class_DOMDocument = zend_string_init("DOMDocument", sizeof("DOMDocument")-1, 1); - zend_declare_typed_property(class_entry, property_ownerDocument_name, &property_ownerDocument_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerDocument_class_DOMDocument, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_ownerDocument_name, &property_ownerDocument_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerDocument_class_DOMDocument, 0, MAY_BE_NULL)); zend_string_release_ex(property_ownerDocument_name, true); zval property_parentNode_default_value; ZVAL_UNDEF(&property_parentNode_default_value); zend_string *property_parentNode_name = zend_string_init("parentNode", sizeof("parentNode") - 1, true); zend_string *property_parentNode_class_DOMNode = zend_string_init("DOMNode", sizeof("DOMNode")-1, 1); - zend_declare_typed_property(class_entry, property_parentNode_name, &property_parentNode_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentNode_class_DOMNode, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_parentNode_name, &property_parentNode_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentNode_class_DOMNode, 0, MAY_BE_NULL)); zend_string_release_ex(property_parentNode_name, true); zval property_parentElement_default_value; ZVAL_UNDEF(&property_parentElement_default_value); zend_string *property_parentElement_name = zend_string_init("parentElement", sizeof("parentElement") - 1, true); zend_string *property_parentElement_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_parentElement_name, &property_parentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentElement_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_parentElement_name, &property_parentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentElement_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_parentElement_name, true); return class_entry; @@ -2222,20 +2222,20 @@ static zend_class_entry *register_class_DOMDocumentFragment(zend_class_entry *cl ZVAL_UNDEF(&property_firstElementChild_default_value); zend_string *property_firstElementChild_name = zend_string_init("firstElementChild", sizeof("firstElementChild") - 1, true); zend_string *property_firstElementChild_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstElementChild_name, true); zval property_lastElementChild_default_value; ZVAL_UNDEF(&property_lastElementChild_default_value); zend_string *property_lastElementChild_name = zend_string_init("lastElementChild", sizeof("lastElementChild") - 1, true); zend_string *property_lastElementChild_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastElementChild_name, true); zval property_childElementCount_default_value; ZVAL_UNDEF(&property_childElementCount_default_value); zend_string *property_childElementCount_name = zend_string_init("childElementCount", sizeof("childElementCount") - 1, true); - zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_childElementCount_name, true); return class_entry; @@ -2252,7 +2252,7 @@ static zend_class_entry *register_class_DOMNodeList(zend_class_entry *class_entr zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -2275,21 +2275,21 @@ static zend_class_entry *register_class_DOMCharacterData(zend_class_entry *class zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); zval property_previousElementSibling_default_value; ZVAL_UNDEF(&property_previousElementSibling_default_value); zend_string *property_previousElementSibling_name = zend_string_init("previousElementSibling", sizeof("previousElementSibling") - 1, true); zend_string *property_previousElementSibling_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_previousElementSibling_name, true); zval property_nextElementSibling_default_value; ZVAL_UNDEF(&property_nextElementSibling_default_value); zend_string *property_nextElementSibling_name = zend_string_init("nextElementSibling", sizeof("nextElementSibling") - 1, true); zend_string *property_nextElementSibling_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_nextElementSibling_name, true); return class_entry; @@ -2304,12 +2304,12 @@ static zend_class_entry *register_class_DOMAttr(zend_class_entry *class_entry_DO zval property_name_default_value; ZVAL_UNDEF(&property_name_default_value); - zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zval property_specified_default_value; ZVAL_UNDEF(&property_specified_default_value); zend_string *property_specified_name = zend_string_init("specified", sizeof("specified") - 1, true); - zend_declare_typed_property(class_entry, property_specified_name, &property_specified_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); + zend_declare_typed_property(class_entry, property_specified_name, &property_specified_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); zend_string_release_ex(property_specified_name, true); zval property_value_default_value; @@ -2320,13 +2320,13 @@ static zend_class_entry *register_class_DOMAttr(zend_class_entry *class_entry_DO ZVAL_UNDEF(&property_ownerElement_default_value); zend_string *property_ownerElement_name = zend_string_init("ownerElement", sizeof("ownerElement") - 1, true); zend_string *property_ownerElement_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_ownerElement_name, &property_ownerElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerElement_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_ownerElement_name, &property_ownerElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerElement_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_ownerElement_name, true); zval property_schemaTypeInfo_default_value; ZVAL_UNDEF(&property_schemaTypeInfo_default_value); zend_string *property_schemaTypeInfo_name = zend_string_init("schemaTypeInfo", sizeof("schemaTypeInfo") - 1, true); - zend_declare_typed_property(class_entry, property_schemaTypeInfo_name, &property_schemaTypeInfo_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); + zend_declare_typed_property(class_entry, property_schemaTypeInfo_name, &property_schemaTypeInfo_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); zend_string_release_ex(property_schemaTypeInfo_name, true); return class_entry; @@ -2343,7 +2343,7 @@ static zend_class_entry *register_class_DOMElement(zend_class_entry *class_entry zval property_tagName_default_value; ZVAL_UNDEF(&property_tagName_default_value); zend_string *property_tagName_name = zend_string_init("tagName", sizeof("tagName") - 1, true); - zend_declare_typed_property(class_entry, property_tagName_name, &property_tagName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_tagName_name, &property_tagName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_tagName_name, true); zval property_className_default_value; @@ -2361,41 +2361,41 @@ static zend_class_entry *register_class_DOMElement(zend_class_entry *class_entry zval property_schemaTypeInfo_default_value; ZVAL_UNDEF(&property_schemaTypeInfo_default_value); zend_string *property_schemaTypeInfo_name = zend_string_init("schemaTypeInfo", sizeof("schemaTypeInfo") - 1, true); - zend_declare_typed_property(class_entry, property_schemaTypeInfo_name, &property_schemaTypeInfo_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); + zend_declare_typed_property(class_entry, property_schemaTypeInfo_name, &property_schemaTypeInfo_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); zend_string_release_ex(property_schemaTypeInfo_name, true); zval property_firstElementChild_default_value; ZVAL_UNDEF(&property_firstElementChild_default_value); zend_string *property_firstElementChild_name = zend_string_init("firstElementChild", sizeof("firstElementChild") - 1, true); zend_string *property_firstElementChild_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstElementChild_name, true); zval property_lastElementChild_default_value; ZVAL_UNDEF(&property_lastElementChild_default_value); zend_string *property_lastElementChild_name = zend_string_init("lastElementChild", sizeof("lastElementChild") - 1, true); zend_string *property_lastElementChild_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastElementChild_name, true); zval property_childElementCount_default_value; ZVAL_UNDEF(&property_childElementCount_default_value); zend_string *property_childElementCount_name = zend_string_init("childElementCount", sizeof("childElementCount") - 1, true); - zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_childElementCount_name, true); zval property_previousElementSibling_default_value; ZVAL_UNDEF(&property_previousElementSibling_default_value); zend_string *property_previousElementSibling_name = zend_string_init("previousElementSibling", sizeof("previousElementSibling") - 1, true); zend_string *property_previousElementSibling_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_previousElementSibling_name, true); zval property_nextElementSibling_default_value; ZVAL_UNDEF(&property_nextElementSibling_default_value); zend_string *property_nextElementSibling_name = zend_string_init("nextElementSibling", sizeof("nextElementSibling") - 1, true); zend_string *property_nextElementSibling_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_nextElementSibling_name, true); return class_entry; @@ -2413,27 +2413,27 @@ static zend_class_entry *register_class_DOMDocument(zend_class_entry *class_entr ZVAL_UNDEF(&property_doctype_default_value); zend_string *property_doctype_name = zend_string_init("doctype", sizeof("doctype") - 1, true); zend_string *property_doctype_class_DOMDocumentType = zend_string_init("DOMDocumentType", sizeof("DOMDocumentType")-1, 1); - zend_declare_typed_property(class_entry, property_doctype_name, &property_doctype_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_doctype_class_DOMDocumentType, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_doctype_name, &property_doctype_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_doctype_class_DOMDocumentType, 0, MAY_BE_NULL)); zend_string_release_ex(property_doctype_name, true); zval property_implementation_default_value; ZVAL_UNDEF(&property_implementation_default_value); zend_string *property_implementation_name = zend_string_init("implementation", sizeof("implementation") - 1, true); zend_string *property_implementation_class_DOMImplementation = zend_string_init("DOMImplementation", sizeof("DOMImplementation")-1, 1); - zend_declare_typed_property(class_entry, property_implementation_name, &property_implementation_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_implementation_class_DOMImplementation, 0, 0)); + zend_declare_typed_property(class_entry, property_implementation_name, &property_implementation_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_implementation_class_DOMImplementation, 0, 0)); zend_string_release_ex(property_implementation_name, true); zval property_documentElement_default_value; ZVAL_UNDEF(&property_documentElement_default_value); zend_string *property_documentElement_name = zend_string_init("documentElement", sizeof("documentElement") - 1, true); zend_string *property_documentElement_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_documentElement_name, &property_documentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_documentElement_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_documentElement_name, &property_documentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_documentElement_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_documentElement_name, true); zval property_actualEncoding_default_value; ZVAL_UNDEF(&property_actualEncoding_default_value); zend_string *property_actualEncoding_name = zend_string_init("actualEncoding", sizeof("actualEncoding") - 1, true); - zend_declare_typed_property(class_entry, property_actualEncoding_name, &property_actualEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_actualEncoding_name, &property_actualEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_actualEncoding_name, true); zval property_encoding_default_value; @@ -2445,7 +2445,7 @@ static zend_class_entry *register_class_DOMDocument(zend_class_entry *class_entr zval property_xmlEncoding_default_value; ZVAL_UNDEF(&property_xmlEncoding_default_value); zend_string *property_xmlEncoding_name = zend_string_init("xmlEncoding", sizeof("xmlEncoding") - 1, true); - zend_declare_typed_property(class_entry, property_xmlEncoding_name, &property_xmlEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_xmlEncoding_name, &property_xmlEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_xmlEncoding_name, true); zval property_standalone_default_value; @@ -2487,7 +2487,7 @@ static zend_class_entry *register_class_DOMDocument(zend_class_entry *class_entr zval property_config_default_value; ZVAL_UNDEF(&property_config_default_value); zend_string *property_config_name = zend_string_init("config", sizeof("config") - 1, true); - zend_declare_typed_property(class_entry, property_config_name, &property_config_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); + zend_declare_typed_property(class_entry, property_config_name, &property_config_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); zend_string_release_ex(property_config_name, true); zval property_formatOutput_default_value; @@ -2530,20 +2530,20 @@ static zend_class_entry *register_class_DOMDocument(zend_class_entry *class_entr ZVAL_UNDEF(&property_firstElementChild_default_value); zend_string *property_firstElementChild_name = zend_string_init("firstElementChild", sizeof("firstElementChild") - 1, true); zend_string *property_firstElementChild_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstElementChild_name, true); zval property_lastElementChild_default_value; ZVAL_UNDEF(&property_lastElementChild_default_value); zend_string *property_lastElementChild_name = zend_string_init("lastElementChild", sizeof("lastElementChild") - 1, true); zend_string *property_lastElementChild_class_DOMElement = zend_string_init("DOMElement", sizeof("DOMElement")-1, 1); - zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_DOMElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_DOMElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastElementChild_name, true); zval property_childElementCount_default_value; ZVAL_UNDEF(&property_childElementCount_default_value); zend_string *property_childElementCount_name = zend_string_init("childElementCount", sizeof("childElementCount") - 1, true); - zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_childElementCount_name, true); return class_entry; @@ -2574,7 +2574,7 @@ static zend_class_entry *register_class_DOMText(zend_class_entry *class_entry_DO zval property_wholeText_default_value; ZVAL_UNDEF(&property_wholeText_default_value); zend_string *property_wholeText_name = zend_string_init("wholeText", sizeof("wholeText") - 1, true); - zend_declare_typed_property(class_entry, property_wholeText_name, &property_wholeText_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_wholeText_name, &property_wholeText_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_wholeText_name, true); return class_entry; @@ -2591,7 +2591,7 @@ static zend_class_entry *register_class_DOMNamedNodeMap(zend_class_entry *class_ zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -2607,37 +2607,37 @@ static zend_class_entry *register_class_DOMEntity(zend_class_entry *class_entry_ zval property_publicId_default_value; ZVAL_UNDEF(&property_publicId_default_value); zend_string *property_publicId_name = zend_string_init("publicId", sizeof("publicId") - 1, true); - zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_publicId_name, true); zval property_systemId_default_value; ZVAL_UNDEF(&property_systemId_default_value); zend_string *property_systemId_name = zend_string_init("systemId", sizeof("systemId") - 1, true); - zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_systemId_name, true); zval property_notationName_default_value; ZVAL_UNDEF(&property_notationName_default_value); zend_string *property_notationName_name = zend_string_init("notationName", sizeof("notationName") - 1, true); - zend_declare_typed_property(class_entry, property_notationName_name, &property_notationName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_notationName_name, &property_notationName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_notationName_name, true); zval property_actualEncoding_default_value; ZVAL_UNDEF(&property_actualEncoding_default_value); zend_string *property_actualEncoding_name = zend_string_init("actualEncoding", sizeof("actualEncoding") - 1, true); - zend_declare_typed_property(class_entry, property_actualEncoding_name, &property_actualEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_actualEncoding_name, &property_actualEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_actualEncoding_name, true); zval property_encoding_default_value; ZVAL_UNDEF(&property_encoding_default_value); zend_string *property_encoding_name = zend_string_init("encoding", sizeof("encoding") - 1, true); - zend_declare_typed_property(class_entry, property_encoding_name, &property_encoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_encoding_name, &property_encoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_encoding_name, true); zval property_version_default_value; ZVAL_UNDEF(&property_version_default_value); zend_string *property_version_name = zend_string_init("version", sizeof("version") - 1, true); - zend_declare_typed_property(class_entry, property_version_name, &property_version_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_version_name, &property_version_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_version_name, true); return class_entry; @@ -2663,13 +2663,13 @@ static zend_class_entry *register_class_DOMNotation(zend_class_entry *class_entr zval property_publicId_default_value; ZVAL_UNDEF(&property_publicId_default_value); zend_string *property_publicId_name = zend_string_init("publicId", sizeof("publicId") - 1, true); - zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_publicId_name, true); zval property_systemId_default_value; ZVAL_UNDEF(&property_systemId_default_value); zend_string *property_systemId_name = zend_string_init("systemId", sizeof("systemId") - 1, true); - zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_systemId_name, true); return class_entry; @@ -2685,7 +2685,7 @@ static zend_class_entry *register_class_DOMProcessingInstruction(zend_class_entr zval property_target_default_value; ZVAL_UNDEF(&property_target_default_value); zend_string *property_target_name = zend_string_init("target", sizeof("target") - 1, true); - zend_declare_typed_property(class_entry, property_target_name, &property_target_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_target_name, &property_target_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_target_name, true); zval property_data_default_value; @@ -2709,7 +2709,7 @@ static zend_class_entry *register_class_DOMXPath(void) ZVAL_UNDEF(&property_document_default_value); zend_string *property_document_name = zend_string_init("document", sizeof("document") - 1, true); zend_string *property_document_class_DOMDocument = zend_string_init("DOMDocument", sizeof("DOMDocument")-1, 1); - zend_declare_typed_property(class_entry, property_document_name, &property_document_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_document_class_DOMDocument, 0, 0)); + zend_declare_typed_property(class_entry, property_document_name, &property_document_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_document_class_DOMDocument, 0, 0)); zend_string_release_ex(property_document_name, true); zval property_registerNodeNamespaces_default_value; @@ -2798,81 +2798,81 @@ static zend_class_entry *register_class_Dom_Node(void) zval property_nodeType_default_value; ZVAL_UNDEF(&property_nodeType_default_value); zend_string *property_nodeType_name = zend_string_init("nodeType", sizeof("nodeType") - 1, true); - zend_declare_typed_property(class_entry, property_nodeType_name, &property_nodeType_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_nodeType_name, &property_nodeType_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_nodeType_name, true); zval property_nodeName_default_value; ZVAL_UNDEF(&property_nodeName_default_value); zend_string *property_nodeName_name = zend_string_init("nodeName", sizeof("nodeName") - 1, true); - zend_declare_typed_property(class_entry, property_nodeName_name, &property_nodeName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_nodeName_name, &property_nodeName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_nodeName_name, true); zval property_baseURI_default_value; ZVAL_UNDEF(&property_baseURI_default_value); zend_string *property_baseURI_name = zend_string_init("baseURI", sizeof("baseURI") - 1, true); - zend_declare_typed_property(class_entry, property_baseURI_name, &property_baseURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_baseURI_name, &property_baseURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_baseURI_name, true); zval property_isConnected_default_value; ZVAL_UNDEF(&property_isConnected_default_value); zend_string *property_isConnected_name = zend_string_init("isConnected", sizeof("isConnected") - 1, true); - zend_declare_typed_property(class_entry, property_isConnected_name, &property_isConnected_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); + zend_declare_typed_property(class_entry, property_isConnected_name, &property_isConnected_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); zend_string_release_ex(property_isConnected_name, true); zval property_ownerDocument_default_value; ZVAL_UNDEF(&property_ownerDocument_default_value); zend_string *property_ownerDocument_name = zend_string_init("ownerDocument", sizeof("ownerDocument") - 1, true); zend_string *property_ownerDocument_class_Dom_Document = zend_string_init("Dom\\Document", sizeof("Dom\\Document")-1, 1); - zend_declare_typed_property(class_entry, property_ownerDocument_name, &property_ownerDocument_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerDocument_class_Dom_Document, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_ownerDocument_name, &property_ownerDocument_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerDocument_class_Dom_Document, 0, MAY_BE_NULL)); zend_string_release_ex(property_ownerDocument_name, true); zval property_parentNode_default_value; ZVAL_UNDEF(&property_parentNode_default_value); zend_string *property_parentNode_name = zend_string_init("parentNode", sizeof("parentNode") - 1, true); zend_string *property_parentNode_class_Dom_Node = zend_string_init("Dom\\\116ode", sizeof("Dom\\\116ode")-1, 1); - zend_declare_typed_property(class_entry, property_parentNode_name, &property_parentNode_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentNode_class_Dom_Node, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_parentNode_name, &property_parentNode_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentNode_class_Dom_Node, 0, MAY_BE_NULL)); zend_string_release_ex(property_parentNode_name, true); zval property_parentElement_default_value; ZVAL_UNDEF(&property_parentElement_default_value); zend_string *property_parentElement_name = zend_string_init("parentElement", sizeof("parentElement") - 1, true); zend_string *property_parentElement_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_parentElement_name, &property_parentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentElement_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_parentElement_name, &property_parentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_parentElement_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_parentElement_name, true); zval property_childNodes_default_value; ZVAL_UNDEF(&property_childNodes_default_value); zend_string *property_childNodes_name = zend_string_init("childNodes", sizeof("childNodes") - 1, true); zend_string *property_childNodes_class_Dom_NodeList = zend_string_init("Dom\\\116odeList", sizeof("Dom\\\116odeList")-1, 1); - zend_declare_typed_property(class_entry, property_childNodes_name, &property_childNodes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_childNodes_class_Dom_NodeList, 0, 0)); + zend_declare_typed_property(class_entry, property_childNodes_name, &property_childNodes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_childNodes_class_Dom_NodeList, 0, 0)); zend_string_release_ex(property_childNodes_name, true); zval property_firstChild_default_value; ZVAL_UNDEF(&property_firstChild_default_value); zend_string *property_firstChild_name = zend_string_init("firstChild", sizeof("firstChild") - 1, true); zend_string *property_firstChild_class_Dom_Node = zend_string_init("Dom\\\116ode", sizeof("Dom\\\116ode")-1, 1); - zend_declare_typed_property(class_entry, property_firstChild_name, &property_firstChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstChild_class_Dom_Node, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstChild_name, &property_firstChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstChild_class_Dom_Node, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstChild_name, true); zval property_lastChild_default_value; ZVAL_UNDEF(&property_lastChild_default_value); zend_string *property_lastChild_name = zend_string_init("lastChild", sizeof("lastChild") - 1, true); zend_string *property_lastChild_class_Dom_Node = zend_string_init("Dom\\\116ode", sizeof("Dom\\\116ode")-1, 1); - zend_declare_typed_property(class_entry, property_lastChild_name, &property_lastChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastChild_class_Dom_Node, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastChild_name, &property_lastChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastChild_class_Dom_Node, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastChild_name, true); zval property_previousSibling_default_value; ZVAL_UNDEF(&property_previousSibling_default_value); zend_string *property_previousSibling_name = zend_string_init("previousSibling", sizeof("previousSibling") - 1, true); zend_string *property_previousSibling_class_Dom_Node = zend_string_init("Dom\\\116ode", sizeof("Dom\\\116ode")-1, 1); - zend_declare_typed_property(class_entry, property_previousSibling_name, &property_previousSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousSibling_class_Dom_Node, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_previousSibling_name, &property_previousSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousSibling_class_Dom_Node, 0, MAY_BE_NULL)); zend_string_release_ex(property_previousSibling_name, true); zval property_nextSibling_default_value; ZVAL_UNDEF(&property_nextSibling_default_value); zend_string *property_nextSibling_name = zend_string_init("nextSibling", sizeof("nextSibling") - 1, true); zend_string *property_nextSibling_class_Dom_Node = zend_string_init("Dom\\\116ode", sizeof("Dom\\\116ode")-1, 1); - zend_declare_typed_property(class_entry, property_nextSibling_name, &property_nextSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextSibling_class_Dom_Node, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nextSibling_name, &property_nextSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextSibling_class_Dom_Node, 0, MAY_BE_NULL)); zend_string_release_ex(property_nextSibling_name, true); zval property_nodeValue_default_value; @@ -2901,7 +2901,7 @@ static zend_class_entry *register_class_Dom_NodeList(zend_class_entry *class_ent zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -2918,7 +2918,7 @@ static zend_class_entry *register_class_Dom_NamedNodeMap(zend_class_entry *class zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -2935,7 +2935,7 @@ static zend_class_entry *register_class_Dom_DtdNamedNodeMap(zend_class_entry *cl zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -2952,7 +2952,7 @@ static zend_class_entry *register_class_Dom_HTMLCollection(zend_class_entry *cla zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -2996,66 +2996,66 @@ static zend_class_entry *register_class_Dom_Element(zend_class_entry *class_entr zval property_namespaceURI_default_value; ZVAL_UNDEF(&property_namespaceURI_default_value); zend_string *property_namespaceURI_name = zend_string_init("namespaceURI", sizeof("namespaceURI") - 1, true); - zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_namespaceURI_name, true); zval property_prefix_default_value; ZVAL_UNDEF(&property_prefix_default_value); zend_string *property_prefix_name = zend_string_init("prefix", sizeof("prefix") - 1, true); - zend_declare_typed_property(class_entry, property_prefix_name, &property_prefix_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_prefix_name, &property_prefix_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_prefix_name, true); zval property_localName_default_value; ZVAL_UNDEF(&property_localName_default_value); zend_string *property_localName_name = zend_string_init("localName", sizeof("localName") - 1, true); - zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_localName_name, true); zval property_tagName_default_value; ZVAL_UNDEF(&property_tagName_default_value); zend_string *property_tagName_name = zend_string_init("tagName", sizeof("tagName") - 1, true); - zend_declare_typed_property(class_entry, property_tagName_name, &property_tagName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_tagName_name, &property_tagName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_tagName_name, true); zval property_children_default_value; ZVAL_UNDEF(&property_children_default_value); zend_string *property_children_name = zend_string_init("children", sizeof("children") - 1, true); zend_string *property_children_class_Dom_HTMLCollection = zend_string_init("Dom\\HTMLCollection", sizeof("Dom\\HTMLCollection")-1, 1); - zend_declare_typed_property(class_entry, property_children_name, &property_children_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_children_class_Dom_HTMLCollection, 0, 0)); + zend_declare_typed_property(class_entry, property_children_name, &property_children_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_children_class_Dom_HTMLCollection, 0, 0)); zend_string_release_ex(property_children_name, true); zval property_firstElementChild_default_value; ZVAL_UNDEF(&property_firstElementChild_default_value); zend_string *property_firstElementChild_name = zend_string_init("firstElementChild", sizeof("firstElementChild") - 1, true); zend_string *property_firstElementChild_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstElementChild_name, true); zval property_lastElementChild_default_value; ZVAL_UNDEF(&property_lastElementChild_default_value); zend_string *property_lastElementChild_name = zend_string_init("lastElementChild", sizeof("lastElementChild") - 1, true); zend_string *property_lastElementChild_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastElementChild_name, true); zval property_childElementCount_default_value; ZVAL_UNDEF(&property_childElementCount_default_value); zend_string *property_childElementCount_name = zend_string_init("childElementCount", sizeof("childElementCount") - 1, true); - zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_childElementCount_name, true); zval property_previousElementSibling_default_value; ZVAL_UNDEF(&property_previousElementSibling_default_value); zend_string *property_previousElementSibling_name = zend_string_init("previousElementSibling", sizeof("previousElementSibling") - 1, true); zend_string *property_previousElementSibling_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_previousElementSibling_name, true); zval property_nextElementSibling_default_value; ZVAL_UNDEF(&property_nextElementSibling_default_value); zend_string *property_nextElementSibling_name = zend_string_init("nextElementSibling", sizeof("nextElementSibling") - 1, true); zend_string *property_nextElementSibling_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_nextElementSibling_name, true); zval property_id_default_value; @@ -3074,14 +3074,14 @@ static zend_class_entry *register_class_Dom_Element(zend_class_entry *class_entr ZVAL_UNDEF(&property_classList_default_value); zend_string *property_classList_name = zend_string_init("classList", sizeof("classList") - 1, true); zend_string *property_classList_class_Dom_TokenList = zend_string_init("Dom\\TokenList", sizeof("Dom\\TokenList")-1, 1); - zend_declare_typed_property(class_entry, property_classList_name, &property_classList_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_classList_class_Dom_TokenList, 0, 0)); + zend_declare_typed_property(class_entry, property_classList_name, &property_classList_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_classList_class_Dom_TokenList, 0, 0)); zend_string_release_ex(property_classList_name, true); zval property_attributes_default_value; ZVAL_UNDEF(&property_attributes_default_value); zend_string *property_attributes_name = zend_string_init("attributes", sizeof("attributes") - 1, true); zend_string *property_attributes_class_Dom_NamedNodeMap = zend_string_init("Dom\\\116amedNodeMap", sizeof("Dom\\\116amedNodeMap")-1, 1); - zend_declare_typed_property(class_entry, property_attributes_name, &property_attributes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_attributes_class_Dom_NamedNodeMap, 0, 0)); + zend_declare_typed_property(class_entry, property_attributes_name, &property_attributes_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_attributes_class_Dom_NamedNodeMap, 0, 0)); zend_string_release_ex(property_attributes_name, true); zval property_innerHTML_default_value; @@ -3125,24 +3125,24 @@ static zend_class_entry *register_class_Dom_Attr(zend_class_entry *class_entry_D zval property_namespaceURI_default_value; ZVAL_UNDEF(&property_namespaceURI_default_value); zend_string *property_namespaceURI_name = zend_string_init("namespaceURI", sizeof("namespaceURI") - 1, true); - zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_namespaceURI_name, &property_namespaceURI_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_namespaceURI_name, true); zval property_prefix_default_value; ZVAL_UNDEF(&property_prefix_default_value); zend_string *property_prefix_name = zend_string_init("prefix", sizeof("prefix") - 1, true); - zend_declare_typed_property(class_entry, property_prefix_name, &property_prefix_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_prefix_name, &property_prefix_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_prefix_name, true); zval property_localName_default_value; ZVAL_UNDEF(&property_localName_default_value); zend_string *property_localName_name = zend_string_init("localName", sizeof("localName") - 1, true); - zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_localName_name, &property_localName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_localName_name, true); zval property_name_default_value; ZVAL_UNDEF(&property_name_default_value); - zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zval property_value_default_value; ZVAL_UNDEF(&property_value_default_value); @@ -3152,13 +3152,13 @@ static zend_class_entry *register_class_Dom_Attr(zend_class_entry *class_entry_D ZVAL_UNDEF(&property_ownerElement_default_value); zend_string *property_ownerElement_name = zend_string_init("ownerElement", sizeof("ownerElement") - 1, true); zend_string *property_ownerElement_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_ownerElement_name, &property_ownerElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerElement_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_ownerElement_name, &property_ownerElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_ownerElement_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_ownerElement_name, true); zval property_specified_default_value; ZVAL_UNDEF(&property_specified_default_value); zend_string *property_specified_name = zend_string_init("specified", sizeof("specified") - 1, true); - zend_declare_typed_property(class_entry, property_specified_name, &property_specified_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); + zend_declare_typed_property(class_entry, property_specified_name, &property_specified_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_BOOL)); zend_string_release_ex(property_specified_name, true); return class_entry; @@ -3176,14 +3176,14 @@ static zend_class_entry *register_class_Dom_CharacterData(zend_class_entry *clas ZVAL_UNDEF(&property_previousElementSibling_default_value); zend_string *property_previousElementSibling_name = zend_string_init("previousElementSibling", sizeof("previousElementSibling") - 1, true); zend_string *property_previousElementSibling_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_previousElementSibling_name, &property_previousElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_previousElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_previousElementSibling_name, true); zval property_nextElementSibling_default_value; ZVAL_UNDEF(&property_nextElementSibling_default_value); zend_string *property_nextElementSibling_name = zend_string_init("nextElementSibling", sizeof("nextElementSibling") - 1, true); zend_string *property_nextElementSibling_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_nextElementSibling_name, &property_nextElementSibling_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_nextElementSibling_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_nextElementSibling_name, true); zval property_data_default_value; @@ -3195,7 +3195,7 @@ static zend_class_entry *register_class_Dom_CharacterData(zend_class_entry *clas zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); return class_entry; @@ -3211,7 +3211,7 @@ static zend_class_entry *register_class_Dom_Text(zend_class_entry *class_entry_D zval property_wholeText_default_value; ZVAL_UNDEF(&property_wholeText_default_value); zend_string *property_wholeText_name = zend_string_init("wholeText", sizeof("wholeText") - 1, true); - zend_declare_typed_property(class_entry, property_wholeText_name, &property_wholeText_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_wholeText_name, &property_wholeText_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_wholeText_name, true); return class_entry; @@ -3237,7 +3237,7 @@ static zend_class_entry *register_class_Dom_ProcessingInstruction(zend_class_ent zval property_target_default_value; ZVAL_UNDEF(&property_target_default_value); zend_string *property_target_name = zend_string_init("target", sizeof("target") - 1, true); - zend_declare_typed_property(class_entry, property_target_name, &property_target_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_target_name, &property_target_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_target_name, true); return class_entry; @@ -3263,38 +3263,38 @@ static zend_class_entry *register_class_Dom_DocumentType(zend_class_entry *class zval property_name_default_value; ZVAL_UNDEF(&property_name_default_value); - zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, ZSTR_KNOWN(ZEND_STR_NAME), &property_name_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zval property_entities_default_value; ZVAL_UNDEF(&property_entities_default_value); zend_string *property_entities_name = zend_string_init("entities", sizeof("entities") - 1, true); zend_string *property_entities_class_Dom_DtdNamedNodeMap = zend_string_init("Dom\\DtdNamedNodeMap", sizeof("Dom\\DtdNamedNodeMap")-1, 1); - zend_declare_typed_property(class_entry, property_entities_name, &property_entities_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_entities_class_Dom_DtdNamedNodeMap, 0, 0)); + zend_declare_typed_property(class_entry, property_entities_name, &property_entities_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_entities_class_Dom_DtdNamedNodeMap, 0, 0)); zend_string_release_ex(property_entities_name, true); zval property_notations_default_value; ZVAL_UNDEF(&property_notations_default_value); zend_string *property_notations_name = zend_string_init("notations", sizeof("notations") - 1, true); zend_string *property_notations_class_Dom_DtdNamedNodeMap = zend_string_init("Dom\\DtdNamedNodeMap", sizeof("Dom\\DtdNamedNodeMap")-1, 1); - zend_declare_typed_property(class_entry, property_notations_name, &property_notations_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_notations_class_Dom_DtdNamedNodeMap, 0, 0)); + zend_declare_typed_property(class_entry, property_notations_name, &property_notations_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_notations_class_Dom_DtdNamedNodeMap, 0, 0)); zend_string_release_ex(property_notations_name, true); zval property_publicId_default_value; ZVAL_UNDEF(&property_publicId_default_value); zend_string *property_publicId_name = zend_string_init("publicId", sizeof("publicId") - 1, true); - zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_publicId_name, true); zval property_systemId_default_value; ZVAL_UNDEF(&property_systemId_default_value); zend_string *property_systemId_name = zend_string_init("systemId", sizeof("systemId") - 1, true); - zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_systemId_name, true); zval property_internalSubset_default_value; ZVAL_UNDEF(&property_internalSubset_default_value); zend_string *property_internalSubset_name = zend_string_init("internalSubset", sizeof("internalSubset") - 1, true); - zend_declare_typed_property(class_entry, property_internalSubset_name, &property_internalSubset_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_internalSubset_name, &property_internalSubset_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_internalSubset_name, true); return class_entry; @@ -3312,27 +3312,27 @@ static zend_class_entry *register_class_Dom_DocumentFragment(zend_class_entry *c ZVAL_UNDEF(&property_children_default_value); zend_string *property_children_name = zend_string_init("children", sizeof("children") - 1, true); zend_string *property_children_class_Dom_HTMLCollection = zend_string_init("Dom\\HTMLCollection", sizeof("Dom\\HTMLCollection")-1, 1); - zend_declare_typed_property(class_entry, property_children_name, &property_children_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_children_class_Dom_HTMLCollection, 0, 0)); + zend_declare_typed_property(class_entry, property_children_name, &property_children_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_children_class_Dom_HTMLCollection, 0, 0)); zend_string_release_ex(property_children_name, true); zval property_firstElementChild_default_value; ZVAL_UNDEF(&property_firstElementChild_default_value); zend_string *property_firstElementChild_name = zend_string_init("firstElementChild", sizeof("firstElementChild") - 1, true); zend_string *property_firstElementChild_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstElementChild_name, true); zval property_lastElementChild_default_value; ZVAL_UNDEF(&property_lastElementChild_default_value); zend_string *property_lastElementChild_name = zend_string_init("lastElementChild", sizeof("lastElementChild") - 1, true); zend_string *property_lastElementChild_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastElementChild_name, true); zval property_childElementCount_default_value; ZVAL_UNDEF(&property_childElementCount_default_value); zend_string *property_childElementCount_name = zend_string_init("childElementCount", sizeof("childElementCount") - 1, true); - zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_childElementCount_name, true); return class_entry; @@ -3348,19 +3348,19 @@ static zend_class_entry *register_class_Dom_Entity(zend_class_entry *class_entry zval property_publicId_default_value; ZVAL_UNDEF(&property_publicId_default_value); zend_string *property_publicId_name = zend_string_init("publicId", sizeof("publicId") - 1, true); - zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_publicId_name, true); zval property_systemId_default_value; ZVAL_UNDEF(&property_systemId_default_value); zend_string *property_systemId_name = zend_string_init("systemId", sizeof("systemId") - 1, true); - zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_systemId_name, true); zval property_notationName_default_value; ZVAL_UNDEF(&property_notationName_default_value); zend_string *property_notationName_name = zend_string_init("notationName", sizeof("notationName") - 1, true); - zend_declare_typed_property(class_entry, property_notationName_name, &property_notationName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_notationName_name, &property_notationName_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL)); zend_string_release_ex(property_notationName_name, true); return class_entry; @@ -3386,13 +3386,13 @@ static zend_class_entry *register_class_Dom_Notation(zend_class_entry *class_ent zval property_publicId_default_value; ZVAL_UNDEF(&property_publicId_default_value); zend_string *property_publicId_name = zend_string_init("publicId", sizeof("publicId") - 1, true); - zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_publicId_name, &property_publicId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_publicId_name, true); zval property_systemId_default_value; ZVAL_UNDEF(&property_systemId_default_value); zend_string *property_systemId_name = zend_string_init("systemId", sizeof("systemId") - 1, true); - zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_systemId_name, &property_systemId_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_systemId_name, true); return class_entry; @@ -3410,34 +3410,34 @@ static zend_class_entry *register_class_Dom_Document(zend_class_entry *class_ent ZVAL_UNDEF(&property_children_default_value); zend_string *property_children_name = zend_string_init("children", sizeof("children") - 1, true); zend_string *property_children_class_Dom_HTMLCollection = zend_string_init("Dom\\HTMLCollection", sizeof("Dom\\HTMLCollection")-1, 1); - zend_declare_typed_property(class_entry, property_children_name, &property_children_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_children_class_Dom_HTMLCollection, 0, 0)); + zend_declare_typed_property(class_entry, property_children_name, &property_children_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_children_class_Dom_HTMLCollection, 0, 0)); zend_string_release_ex(property_children_name, true); zval property_firstElementChild_default_value; ZVAL_UNDEF(&property_firstElementChild_default_value); zend_string *property_firstElementChild_name = zend_string_init("firstElementChild", sizeof("firstElementChild") - 1, true); zend_string *property_firstElementChild_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_firstElementChild_name, &property_firstElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_firstElementChild_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_firstElementChild_name, true); zval property_lastElementChild_default_value; ZVAL_UNDEF(&property_lastElementChild_default_value); zend_string *property_lastElementChild_name = zend_string_init("lastElementChild", sizeof("lastElementChild") - 1, true); zend_string *property_lastElementChild_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_lastElementChild_name, &property_lastElementChild_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_lastElementChild_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_lastElementChild_name, true); zval property_childElementCount_default_value; ZVAL_UNDEF(&property_childElementCount_default_value); zend_string *property_childElementCount_name = zend_string_init("childElementCount", sizeof("childElementCount") - 1, true); - zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_childElementCount_name, &property_childElementCount_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_childElementCount_name, true); zval property_implementation_default_value; ZVAL_UNDEF(&property_implementation_default_value); zend_string *property_implementation_name = zend_string_init("implementation", sizeof("implementation") - 1, true); zend_string *property_implementation_class_Dom_Implementation = zend_string_init("Dom\\Implementation", sizeof("Dom\\Implementation")-1, 1); - zend_declare_typed_property(class_entry, property_implementation_name, &property_implementation_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_implementation_class_Dom_Implementation, 0, 0)); + zend_declare_typed_property(class_entry, property_implementation_name, &property_implementation_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_implementation_class_Dom_Implementation, 0, 0)); zend_string_release_ex(property_implementation_name, true); zval property_URL_default_value; @@ -3474,14 +3474,14 @@ static zend_class_entry *register_class_Dom_Document(zend_class_entry *class_ent ZVAL_UNDEF(&property_doctype_default_value); zend_string *property_doctype_name = zend_string_init("doctype", sizeof("doctype") - 1, true); zend_string *property_doctype_class_Dom_DocumentType = zend_string_init("Dom\\DocumentType", sizeof("Dom\\DocumentType")-1, 1); - zend_declare_typed_property(class_entry, property_doctype_name, &property_doctype_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_doctype_class_Dom_DocumentType, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_doctype_name, &property_doctype_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_doctype_class_Dom_DocumentType, 0, MAY_BE_NULL)); zend_string_release_ex(property_doctype_name, true); zval property_documentElement_default_value; ZVAL_UNDEF(&property_documentElement_default_value); zend_string *property_documentElement_name = zend_string_init("documentElement", sizeof("documentElement") - 1, true); zend_string *property_documentElement_class_Dom_Element = zend_string_init("Dom\\Element", sizeof("Dom\\Element")-1, 1); - zend_declare_typed_property(class_entry, property_documentElement_name, &property_documentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_documentElement_class_Dom_Element, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_documentElement_name, &property_documentElement_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_documentElement_class_Dom_Element, 0, MAY_BE_NULL)); zend_string_release_ex(property_documentElement_name, true); zval property_body_default_value; @@ -3495,7 +3495,7 @@ static zend_class_entry *register_class_Dom_Document(zend_class_entry *class_ent ZVAL_UNDEF(&property_head_default_value); zend_string *property_head_name = zend_string_init("head", sizeof("head") - 1, true); zend_string *property_head_class_Dom_HTMLElement = zend_string_init("Dom\\HTMLElement", sizeof("Dom\\HTMLElement")-1, 1); - zend_declare_typed_property(class_entry, property_head_name, &property_head_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_head_class_Dom_HTMLElement, 0, MAY_BE_NULL)); + zend_declare_typed_property(class_entry, property_head_name, &property_head_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_head_class_Dom_HTMLElement, 0, MAY_BE_NULL)); zend_string_release_ex(property_head_name, true); zval property_title_default_value; @@ -3527,7 +3527,7 @@ static zend_class_entry *register_class_Dom_XMLDocument(zend_class_entry *class_ zval property_xmlEncoding_default_value; ZVAL_UNDEF(&property_xmlEncoding_default_value); zend_string *property_xmlEncoding_name = zend_string_init("xmlEncoding", sizeof("xmlEncoding") - 1, true); - zend_declare_typed_property(class_entry, property_xmlEncoding_name, &property_xmlEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); + zend_declare_typed_property(class_entry, property_xmlEncoding_name, &property_xmlEncoding_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING)); zend_string_release_ex(property_xmlEncoding_name, true); zval property_xmlStandalone_default_value; @@ -3562,7 +3562,7 @@ static zend_class_entry *register_class_Dom_TokenList(zend_class_entry *class_en zval property_length_default_value; ZVAL_UNDEF(&property_length_default_value); zend_string *property_length_name = zend_string_init("length", sizeof("length") - 1, true); - zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); + zend_declare_typed_property(class_entry, property_length_name, &property_length_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG)); zend_string_release_ex(property_length_name, true); zval property_value_default_value; @@ -3613,7 +3613,7 @@ static zend_class_entry *register_class_Dom_XPath(void) ZVAL_UNDEF(&property_document_default_value); zend_string *property_document_name = zend_string_init("document", sizeof("document") - 1, true); zend_string *property_document_class_Dom_Document = zend_string_init("Dom\\Document", sizeof("Dom\\Document")-1, 1); - zend_declare_typed_property(class_entry, property_document_name, &property_document_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_document_class_Dom_Document, 0, 0)); + zend_declare_typed_property(class_entry, property_document_name, &property_document_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_PRIVATE_SET|ZEND_ACC_VIRTUAL, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_document_class_Dom_Document, 0, 0)); zend_string_release_ex(property_document_name, true); zval property_registerNodeNamespaces_default_value; diff --git a/ext/dom/php_dom_decl.h b/ext/dom/php_dom_decl.h index f918637ab52d..e42fe5969595 100644 --- a/ext/dom/php_dom_decl.h +++ b/ext/dom/php_dom_decl.h @@ -1,8 +1,8 @@ /* This is a generated file, edit php_dom.stub.php instead. - * Stub hash: e00668999f4fe9afee1f78f6986467a315f831a5 */ + * Stub hash: 8d7713834c924709155ed7acc554c9efc55e96c1 */ -#ifndef ZEND_PHP_DOM_DECL_e00668999f4fe9afee1f78f6986467a315f831a5_H -#define ZEND_PHP_DOM_DECL_e00668999f4fe9afee1f78f6986467a315f831a5_H +#ifndef ZEND_PHP_DOM_DECL_8d7713834c924709155ed7acc554c9efc55e96c1_H +#define ZEND_PHP_DOM_DECL_8d7713834c924709155ed7acc554c9efc55e96c1_H typedef enum zend_enum_Dom_AdjacentPosition { ZEND_ENUM_Dom_AdjacentPosition_BeforeBegin = 1, @@ -11,4 +11,4 @@ typedef enum zend_enum_Dom_AdjacentPosition { ZEND_ENUM_Dom_AdjacentPosition_AfterEnd = 4, } zend_enum_Dom_AdjacentPosition; -#endif /* ZEND_PHP_DOM_DECL_e00668999f4fe9afee1f78f6986467a315f831a5_H */ +#endif /* ZEND_PHP_DOM_DECL_8d7713834c924709155ed7acc554c9efc55e96c1_H */ diff --git a/ext/dom/private_data.c b/ext/dom/private_data.c index bb20093b8ebb..373a79cbe712 100644 --- a/ext/dom/private_data.c +++ b/ext/dom/private_data.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/private_data.h b/ext/dom/private_data.h index ead6c75caf24..c64e96eb1a6d 100644 --- a/ext/dom/private_data.h +++ b/ext/dom/private_data.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/processinginstruction.c b/ext/dom/processinginstruction.c index eda15720eab0..94e5d5b35067 100644 --- a/ext/dom/processinginstruction.c +++ b/ext/dom/processinginstruction.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/serialize_common.h b/ext/dom/serialize_common.h index ed967c98a9ee..88088558e90e 100644 --- a/ext/dom/serialize_common.h +++ b/ext/dom/serialize_common.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/tests/modern/html/gh21688.phpt b/ext/dom/tests/modern/html/gh21688.phpt new file mode 100644 index 000000000000..ddfb4d326c63 --- /dev/null +++ b/ext/dom/tests/modern/html/gh21688.phpt @@ -0,0 +1,13 @@ +--TEST-- +GH-21688 (SEGV in C14N on empty HTMLDocument) +--CREDITS-- +YuanchengJiang +--EXTENSIONS-- +dom +--FILE-- +C14N()); +?> +--EXPECT-- +string(0) "" diff --git a/ext/dom/tests/modern/html/parser/Element_innerHTML.phpt b/ext/dom/tests/modern/html/parser/Element_innerHTML.phpt index 058d4432b49d..89574b7a631f 100644 --- a/ext/dom/tests/modern/html/parser/Element_innerHTML.phpt +++ b/ext/dom/tests/modern/html/parser/Element_innerHTML.phpt @@ -60,6 +60,6 @@ echo $dom->saveXML(), "\n"; - + diff --git a/ext/dom/tests/modern/spec/Element_prefix_readonly.phpt b/ext/dom/tests/modern/spec/Element_prefix_readonly.phpt index 78625fcb6f7d..cb623f702983 100644 --- a/ext/dom/tests/modern/spec/Element_prefix_readonly.phpt +++ b/ext/dom/tests/modern/spec/Element_prefix_readonly.phpt @@ -14,5 +14,5 @@ try { echo $dom->saveXml(); ?> --EXPECT-- -Cannot modify readonly property Dom\HTMLElement::$prefix +Cannot modify private(set) property Dom\Element::$prefix from global scope diff --git a/ext/dom/tests/modern/xml/gh21544.phpt b/ext/dom/tests/modern/xml/gh21544.phpt new file mode 100644 index 000000000000..b76742ae84a5 --- /dev/null +++ b/ext/dom/tests/modern/xml/gh21544.phpt @@ -0,0 +1,28 @@ +--TEST-- +GH-21544 (Dom\XMLDocument::C14N() drops namespace declarations on DOM-built documents) +--CREDITS-- +Toon Verwerft (veewee) +--EXTENSIONS-- +dom +--FILE-- +createElementNS("urn:envelope", "env:Root"); +$doc->appendChild($root); +$child = $doc->createElementNS("urn:child", "x:Child"); +$root->appendChild($child); + +$parsed = Dom\XMLDocument::createFromString( + '' +); + +echo "DOM-built C14N: " . $doc->C14N() . PHP_EOL; +echo "Parsed C14N: " . $parsed->C14N() . PHP_EOL; +var_dump($doc->C14N() === $parsed->C14N()); + +?> +--EXPECT-- +DOM-built C14N: +Parsed C14N: +bool(true) diff --git a/ext/dom/tests/modern/xml/gh21548.phpt b/ext/dom/tests/modern/xml/gh21548.phpt new file mode 100644 index 000000000000..55299c8d6e67 --- /dev/null +++ b/ext/dom/tests/modern/xml/gh21548.phpt @@ -0,0 +1,17 @@ +--TEST-- +GH-21548 (Dom\XMLDocument::C14N() emits duplicate xmlns declarations after setAttributeNS()) +--CREDITS-- +Toon Verwerft (veewee) +--EXTENSIONS-- +dom +--FILE-- +'); +$doc->documentElement->setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:ns1", "urn:a"); + +echo $doc->C14N() . PHP_EOL; + +?> +--EXPECT-- + diff --git a/ext/dom/tests/property_write_errors.phpt b/ext/dom/tests/property_write_errors.phpt index 58cf800728a6..7d2af3b10555 100644 --- a/ext/dom/tests/property_write_errors.phpt +++ b/ext/dom/tests/property_write_errors.phpt @@ -49,8 +49,8 @@ try { ?> --EXPECT-- Cannot assign array to property DOMNode::$nodeValue of type ?string -Cannot modify readonly property DOMDocument::$nodeType -Cannot modify readonly property DOMDocument::$xmlEncoding -Cannot modify readonly property DOMEntity::$actualEncoding -Cannot modify readonly property DOMEntity::$encoding -Cannot modify readonly property DOMEntity::$version +Cannot modify private(set) property DOMNode::$nodeType from global scope +Cannot modify private(set) property DOMDocument::$xmlEncoding from global scope +Cannot modify private(set) property DOMEntity::$actualEncoding from global scope +Cannot modify private(set) property DOMEntity::$encoding from global scope +Cannot modify private(set) property DOMEntity::$version from global scope diff --git a/ext/dom/text.c b/ext/dom/text.c index 4c503201c8bf..357ff1969490 100644 --- a/ext/dom/text.c +++ b/ext/dom/text.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/token_list.c b/ext/dom/token_list.c index 84a3dc10afeb..28dfc695ddc7 100644 --- a/ext/dom/token_list.c +++ b/ext/dom/token_list.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/token_list.h b/ext/dom/token_list.h index 7c8a6f612ffa..d5eb071f1882 100644 --- a/ext/dom/token_list.h +++ b/ext/dom/token_list.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/xml_common.h b/ext/dom/xml_common.h index a63e43e92a77..419886bae4f7 100644 --- a/ext/dom/xml_common.h +++ b/ext/dom/xml_common.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/xml_document.c b/ext/dom/xml_document.c index 66fd1d707aa0..e4f7542f1696 100644 --- a/ext/dom/xml_document.c +++ b/ext/dom/xml_document.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/xml_serializer.c b/ext/dom/xml_serializer.c index 7684057a391c..da43f24aab01 100644 --- a/ext/dom/xml_serializer.c +++ b/ext/dom/xml_serializer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/xml_serializer.h b/ext/dom/xml_serializer.h index 2d5c3bd84277..e686083a27aa 100644 --- a/ext/dom/xml_serializer.h +++ b/ext/dom/xml_serializer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c index ce17c0810835..012fa9789e0d 100644 --- a/ext/dom/xpath.c +++ b/ext/dom/xpath.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/xpath_callbacks.c b/ext/dom/xpath_callbacks.c index 816c925435ae..b1a2f808ca66 100644 --- a/ext/dom/xpath_callbacks.c +++ b/ext/dom/xpath_callbacks.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/dom/xpath_callbacks.h b/ext/dom/xpath_callbacks.h index 3a4d8731f474..072f52196331 100644 --- a/ext/dom/xpath_callbacks.h +++ b/ext/dom/xpath_callbacks.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c index dd359527bee3..3c09be9077b0 100644 --- a/ext/enchant/enchant.c +++ b/ext/enchant/enchant.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierre-Alain Joye | | Ilia Alshanetsky | diff --git a/ext/enchant/php_enchant.h b/ext/enchant/php_enchant.h index 81150648d119..d87b2b6550ad 100644 --- a/ext/enchant/php_enchant.h +++ b/ext/enchant/php_enchant.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierre-Alain Joye | +----------------------------------------------------------------------+ diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 904abede8f0f..91be074a0be3 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Marcus Boerger | diff --git a/ext/exif/php_exif.h b/ext/exif/php_exif.h index 4ae5894f9036..5a4d2ec4d2a5 100644 --- a/ext/exif/php_exif.h +++ b/ext/exif/php_exif.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Marcus Boerger | diff --git a/ext/ext_skel.php b/ext/ext_skel.php index d396dfa3da74..3237ca625c99 100755 --- a/ext/ext_skel.php +++ b/ext/ext_skel.php @@ -2,15 +2,13 @@ . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kalle Sommer Nielsen | +----------------------------------------------------------------------+ @@ -257,15 +255,13 @@ function process_source_tags($file, $short_name) { $header = <<<"HEADER" /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: $credits | +----------------------------------------------------------------------+ diff --git a/ext/ffi/ffi.c b/ext/ffi/ffi.c index 1650d0c59065..cc0c4c297447 100644 --- a/ext/ffi/ffi.c +++ b/ext/ffi/ffi.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/ext/ffi/ffi.g b/ext/ffi/ffi.g index 364837242890..9ab8ee404edf 100644 --- a/ext/ffi/ffi.g +++ b/ext/ffi/ffi.g @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -30,15 +28,13 @@ php llk.php ffi.g %{ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/ext/ffi/ffi_parser.c b/ext/ffi/ffi_parser.c index 1067f80939f3..27f1469133fe 100644 --- a/ext/ffi/ffi_parser.c +++ b/ext/ffi/ffi_parser.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/ext/ffi/php_ffi.h b/ext/ffi/php_ffi.h index ba92947e62bf..02fdb221c3df 100644 --- a/ext/ffi/php_ffi.h +++ b/ext/ffi/php_ffi.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/ext/fileinfo/fileinfo.c b/ext/fileinfo/fileinfo.c index 50695981796e..6aa4520ffcc8 100644 --- a/ext/fileinfo/fileinfo.c +++ b/ext/fileinfo/fileinfo.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ilia Alshanetsky | +----------------------------------------------------------------------+ diff --git a/ext/fileinfo/php_fileinfo.h b/ext/fileinfo/php_fileinfo.h index a0536294429b..50de6f79a537 100644 --- a/ext/fileinfo/php_fileinfo.h +++ b/ext/fileinfo/php_fileinfo.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ilia Alshanetsky | +----------------------------------------------------------------------+ diff --git a/ext/fileinfo/php_libmagic.c b/ext/fileinfo/php_libmagic.c index 05123fa8133a..efb78653c211 100644 --- a/ext/fileinfo/php_libmagic.c +++ b/ext/fileinfo/php_libmagic.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/fileinfo/php_libmagic.h b/ext/fileinfo/php_libmagic.h index 23d0c3e8eaa1..59e8e091a487 100644 --- a/ext/fileinfo/php_libmagic.h +++ b/ext/fileinfo/php_libmagic.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/filter/callback_filter.c b/ext/filter/callback_filter.c index dea39c6cc7c3..688cbf072175 100644 --- a/ext/filter/callback_filter.c +++ b/ext/filter/callback_filter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ diff --git a/ext/filter/filter.c b/ext/filter/filter.c index 03f0f7887f92..9dbd6dceda53 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Derick Rethans | diff --git a/ext/filter/filter_private.h b/ext/filter/filter_private.h index 709b7fbc45ed..14975e7911a4 100644 --- a/ext/filter/filter_private.h +++ b/ext/filter/filter_private.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 20760e656e76..c6653f29e3d7 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | | Pierre-A. Joye | diff --git a/ext/filter/php_filter.h b/ext/filter/php_filter.h index 48ad5cc07943..ccf8b6b4883f 100644 --- a/ext/filter/php_filter.h +++ b/ext/filter/php_filter.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Derick Rethans | diff --git a/ext/filter/sanitizing_filters.c b/ext/filter/sanitizing_filters.c index 94cbd0c34bba..456b138ca934 100644 --- a/ext/filter/sanitizing_filters.c +++ b/ext/filter/sanitizing_filters.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Derick Rethans | +----------------------------------------------------------------------+ diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c index 0c1287a3e705..7172ac3e960f 100644 --- a/ext/ftp/ftp.c +++ b/ext/ftp/ftp.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrew Skalski | | Stefan Esser (resume functions) | diff --git a/ext/ftp/ftp.h b/ext/ftp/ftp.h index 241f92f57ec3..b336754c3f88 100644 --- a/ext/ftp/ftp.h +++ b/ext/ftp/ftp.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrew Skalski | | Stefan Esser (resume functions) | diff --git a/ext/ftp/php_ftp.c b/ext/ftp/php_ftp.c index 671281ee4729..8285f36a5628 100644 --- a/ext/ftp/php_ftp.c +++ b/ext/ftp/php_ftp.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrew Skalski | | Stefan Esser (resume functions) | diff --git a/ext/ftp/php_ftp.h b/ext/ftp/php_ftp.h index b701f1331d0b..ee9cb50c4382 100644 --- a/ext/ftp/php_ftp.h +++ b/ext/ftp/php_ftp.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrew Skalski | | Stefan Esser (resume functions) | diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 1bd1a26f0519..c0cf361be055 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Bakken | @@ -640,7 +638,20 @@ PHP_FUNCTION(imagesetstyle) stylearr = safe_emalloc(num_styles, sizeof(int), 0); ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(styles), item) { - stylearr[index++] = zval_get_long(item); + bool failed = false; + ZVAL_DEREF(item); + zend_long tmp = zval_try_get_long(item, &failed); + if (failed) { + efree(stylearr); + zend_argument_type_error(2, "must only have elements of type int, %s given", zend_zval_type_name(item)); + RETURN_THROWS(); + } + if (ZEND_LONG_EXCEEDS_INT(tmp)) { + efree(stylearr); + zend_argument_value_error(2, "elements must be between %d and %d", INT_MIN, INT_MAX); + RETURN_THROWS(); + } + stylearr[index++] = (int) tmp; } ZEND_HASH_FOREACH_END(); gdImageSetStyle(im, stylearr, index); @@ -1746,7 +1757,7 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type) RETURN_THROWS(); } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } /* quality must fit in an int */ @@ -1776,7 +1787,7 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type) } gdImageGd2(im, fp, quality, type); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } fflush(fp); fclose(fp); @@ -1802,7 +1813,7 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type) } gdImageGd2(im, tmp, quality, type); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } fseek(tmp, 0, SEEK_SET); @@ -3595,7 +3606,20 @@ static void php_image_filter_scatter(INTERNAL_FUNCTION_PARAMETERS) colors = safe_emalloc(num_colors, sizeof(int), 0); ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(hash_colors), color) { - *(colors + i++) = (int) zval_get_long(color); + bool failed = false; + ZVAL_DEREF(color); + zend_long tmp = zval_try_get_long(color, &failed); + if (failed) { + efree(colors); + zend_argument_type_error(5, "must be of type int, %s given", zend_zval_type_name(color)); + RETURN_THROWS(); + } + if (tmp < 0 || ZEND_LONG_INT_OVFL(tmp)) { + efree(colors); + zend_argument_value_error(5, "value must be between 0 and %d", INT_MAX); + RETURN_THROWS(); + } + colors[i++] = (int) tmp; } ZEND_HASH_FOREACH_END(); RETVAL_BOOL(gdImageScatterColor(im, (int)scatter_sub, (int)scatter_plus, colors, num_colors)); @@ -3763,6 +3787,23 @@ PHP_FUNCTION(imageantialias) } /* }}} */ +static bool php_gd_zval_try_get_c_int(zval *tmp, const char *field, int *res) { + zend_long r; + bool failed = false; + ZVAL_DEREF(tmp); + r = zval_try_get_long(tmp, &failed); + if (failed) { + zend_argument_type_error(2, "\"%s\" key must be of type int, %s given", field, zend_zval_type_name(tmp)); + return false; + } + if (UNEXPECTED(ZEND_LONG_EXCEEDS_INT(r))) { + zend_argument_value_error(2, "\"%s\" key must be between %d and %d", field, INT_MIN, INT_MAX); + return false; + } + *res = (int)r; + return true; +} + /* {{{ Crop an image using the given coordinates and size, x, y, width and height. */ PHP_FUNCTION(imagecrop) { @@ -3781,28 +3822,36 @@ PHP_FUNCTION(imagecrop) im = php_gd_libgdimageptr_from_zval_p(IM); if ((tmp = zend_hash_str_find(Z_ARRVAL_P(z_rect), "x", sizeof("x") -1)) != NULL) { - rect.x = zval_get_long(tmp); + if (!php_gd_zval_try_get_c_int(tmp, "x", &rect.x)) { + RETURN_THROWS(); + } } else { zend_argument_value_error(2, "must have an \"x\" key"); RETURN_THROWS(); } if ((tmp = zend_hash_str_find(Z_ARRVAL_P(z_rect), "y", sizeof("y") - 1)) != NULL) { - rect.y = zval_get_long(tmp); + if (!php_gd_zval_try_get_c_int(tmp, "y", &rect.y)) { + RETURN_THROWS(); + } } else { zend_argument_value_error(2, "must have a \"y\" key"); RETURN_THROWS(); } if ((tmp = zend_hash_str_find(Z_ARRVAL_P(z_rect), "width", sizeof("width") - 1)) != NULL) { - rect.width = zval_get_long(tmp); + if (!php_gd_zval_try_get_c_int(tmp, "width", &rect.width)) { + RETURN_THROWS(); + } } else { zend_argument_value_error(2, "must have a \"width\" key"); RETURN_THROWS(); } if ((tmp = zend_hash_str_find(Z_ARRVAL_P(z_rect), "height", sizeof("height") - 1)) != NULL) { - rect.height = zval_get_long(tmp); + if (!php_gd_zval_try_get_c_int(tmp, "height", &rect.height)) { + RETURN_THROWS(); + } } else { zend_argument_value_error(2, "must have a \"height\" key"); RETURN_THROWS(); diff --git a/ext/gd/libgd/gd_xbm.c b/ext/gd/libgd/gd_xbm.c index 3c655a2998c1..36eff58725dd 100644 --- a/ext/gd/libgd/gd_xbm.c +++ b/ext/gd/libgd/gd_xbm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/gd/php_gd.h b/ext/gd/php_gd.h index 1ef57cb3c4d9..de83a8e0313e 100644 --- a/ext/gd/php_gd.h +++ b/ext/gd/php_gd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Bakken | diff --git a/ext/gd/tests/bug66356.phpt b/ext/gd/tests/bug66356.phpt index b65fb54f5718..616a270115c1 100644 --- a/ext/gd/tests/bug66356.phpt +++ b/ext/gd/tests/bug66356.phpt @@ -7,10 +7,14 @@ gd $img = imagecreatetruecolor(10, 10); // POC #1 -var_dump(imagecrop($img, array("x" => "a", "y" => 0, "width" => 10, "height" => 10))); +var_dump(imagecrop($img, array("x" => 0, "y" => 0, "width" => 10, "height" => 10))); -$arr = array("x" => "a", "y" => "12b", "width" => 10, "height" => 10); -var_dump(imagecrop($img, $arr)); +$arr = array("x" => 2147483647, "y" => 2147483647, "width" => 10, "height" => 10); +try { + imagecrop($img, $arr); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} print_r($arr); // POC #2 @@ -28,12 +32,11 @@ var_dump(imagecrop($img, array("x" => 0, "y" => 0, "width" => 65535, "height" => --EXPECTF-- object(GdImage)#2 (0) { } -object(GdImage)#2 (0) { -} +imagecrop(): Argument #2 ($rectangle) overflow with "x" and "width" keys Array ( - [x] => a - [y] => 12b + [x] => 2147483647 + [y] => 2147483647 [width] => 10 [height] => 10 ) @@ -41,9 +44,9 @@ Array Warning: imagecrop(): %cne parameter to a memory allocation multiplication is negative or zero, failing operation gracefully in %s on line %d bool(false) -object(GdImage)#2 (0) { +object(GdImage)#3 (0) { } -object(GdImage)#2 (0) { +object(GdImage)#3 (0) { } Warning: imagecrop(): %croduct of memory allocation multiplication would exceed INT_MAX, failing operation gracefully diff --git a/ext/gd/tests/gh18005.phpt b/ext/gd/tests/gh18005.phpt new file mode 100644 index 000000000000..5282c0be0268 --- /dev/null +++ b/ext/gd/tests/gh18005.phpt @@ -0,0 +1,92 @@ +--TEST-- +GH-18005: imagesetstyle, imagefilter, imagecrop array values type checks +--EXTENSIONS-- +gd +--SKIPIF-- + +--FILE-- +getMessage() . PHP_EOL; +} +try { + imagesetstyle($img, [0, PHP_INT_MIN]); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagefilter($img, IMG_FILTER_SCATTER, 0, 0, [new A()]); +} catch (\TypeError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagefilter($img, IMG_FILTER_SCATTER, 0, 0, [-1]); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => PHP_INT_MIN, "y" => 0, "width" => 0, "height" => 0]); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => 0, "y" => PHP_INT_MIN, "width" => 0, "height" => 0]); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => 0, "y" => 0, "width" => PHP_INT_MAX, "height" => 0]); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => 0, "y" => 0, "width" => 0, "height" => PHP_INT_MAX]); +} catch (\ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} + +try { + imagecrop($img, ["x" => new A(), "y" => 0, "width" => 0, "height" => 0]); +} catch (\TypeError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => 0, "y" => new A(), "width" => 0, "height" => 0]); +} catch (\TypeError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => 0, "y" => 0, "width" => new A(), "height" => 0]); +} catch (\TypeError $e) { + echo $e->getMessage() . PHP_EOL; +} +try { + imagecrop($img, ["x" => 0, "y" => 0, "width" => 0, "height" => new A()]); +} catch (\TypeError $e) { + echo $e->getMessage() . PHP_EOL; +} + +$one = 1; +var_dump(imagecrop($img, ["x" => &$one, "y" => &$one, "width" => &$one, "height" => &$one])); +?> +--EXPECTF-- +imagesetstyle(): Argument #2 ($style) must only have elements of type int, A given +imagesetstyle(): Argument #2 ($style) elements must be between %i and %d +imagefilter(): Argument #5 must be of type int, A given +imagefilter(): Argument #5 value must be between 0 and 2147483647 +imagecrop(): Argument #2 ($rectangle) "x" key must be between %i and %d +imagecrop(): Argument #2 ($rectangle) "y" key must be between %i and %d +imagecrop(): Argument #2 ($rectangle) "width" key must be between %i and %d +imagecrop(): Argument #2 ($rectangle) "height" key must be between %i and %d +imagecrop(): Argument #2 ($rectangle) "x" key must be of type int, A given +imagecrop(): Argument #2 ($rectangle) "y" key must be of type int, A given +imagecrop(): Argument #2 ($rectangle) "width" key must be of type int, A given +imagecrop(): Argument #2 ($rectangle) "height" key must be of type int, A given +object(GdImage)#2 (0) { +} diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c index 6badea4a1769..172ae76d3876 100644 --- a/ext/gettext/gettext.c +++ b/ext/gettext/gettext.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Alex Plotnick | +----------------------------------------------------------------------+ diff --git a/ext/gettext/php_gettext.h b/ext/gettext/php_gettext.h index f98e459f127c..5799ecf1d89b 100644 --- a/ext/gettext/php_gettext.h +++ b/ext/gettext/php_gettext.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Alex Plotnick | +----------------------------------------------------------------------+ diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index b5451b8035e3..b04fc9f5c1ba 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stanislav Malyshev | +----------------------------------------------------------------------+ @@ -358,10 +356,10 @@ static zend_result shift_operator_helper(gmp_binary_ui_op_t op, zval *return_val shift = Z_LVAL_P(op2); } - if (shift < 0) { + if (shift < 0 || shift > ULONG_MAX) { zend_throw_error( - zend_ce_value_error, "%s must be greater than or equal to 0", - opcode == ZEND_POW ? "Exponent" : "Shift" + zend_ce_value_error, "%s must be between 0 and %lu", + opcode == ZEND_POW ? "Exponent" : "Shift", ULONG_MAX ); ZVAL_UNDEF(return_value); return FAILURE; @@ -393,7 +391,7 @@ typeof_op_failure: ; case ZEND_SR: op_sigil = ">>"; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } zend_type_error("Unsupported operand types: %s %s %s", zend_zval_type_name(op1), op_sigil, zend_zval_type_name(op2)); return FAILURE; @@ -929,7 +927,7 @@ ZEND_FUNCTION(gmp_div_qr) case GMP_ROUND_MINUSINF: mpz_fdiv_qr(gmpnum_result1, gmpnum_result2, gmpnum_a, gmpnum_b); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -1089,14 +1087,11 @@ ZEND_FUNCTION(gmp_fact) GMP_Z_PARAM_INTO_MPZ_PTR(gmpnum) ZEND_PARSE_PARAMETERS_END(); - if (mpz_sgn(gmpnum) < 0) { - zend_argument_value_error(1, "must be greater than or equal to 0"); + if (!mpz_fits_ulong_p(gmpnum)) { + zend_argument_value_error(1, "must be between 0 and %lu", ULONG_MAX); RETURN_THROWS(); } - // TODO: Check that we don't an int that is larger than an unsigned long? - // Could use mpz_fits_slong_p() if we revert to using mpz_get_si() - INIT_GMP_RETVAL(gmpnum_result); mpz_fac_ui(gmpnum_result, mpz_get_ui(gmpnum)); } @@ -1114,8 +1109,8 @@ ZEND_FUNCTION(gmp_binomial) Z_PARAM_LONG(k) ZEND_PARSE_PARAMETERS_END(); - if (k < 0) { - zend_argument_value_error(2, "must be greater than or equal to 0"); + if (k < 0 || k > ULONG_MAX) { + zend_argument_value_error(2, "must be between 0 and %lu", ULONG_MAX); RETURN_THROWS(); } @@ -1136,8 +1131,8 @@ ZEND_FUNCTION(gmp_pow) Z_PARAM_LONG(exp) ZEND_PARSE_PARAMETERS_END(); - if (exp < 0) { - zend_argument_value_error(2, "must be greater than or equal to 0"); + if (exp < 0 || exp > ULONG_MAX) { + zend_argument_value_error(2, "must be between 0 and %lu", ULONG_MAX); RETURN_THROWS(); } @@ -1163,7 +1158,7 @@ ZEND_FUNCTION(gmp_powm) } if (!mpz_cmp_ui(gmpnum_mod, 0)) { - zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero"); + zend_argument_error(zend_ce_division_by_zero_error, 3, "Modulo by zero"); RETURN_THROWS(); } @@ -1226,8 +1221,8 @@ ZEND_FUNCTION(gmp_root) Z_PARAM_LONG(nth) ZEND_PARSE_PARAMETERS_END(); - if (nth <= 0) { - zend_argument_value_error(2, "must be greater than 0"); + if (nth <= 0 || nth > ULONG_MAX) { + zend_argument_value_error(2, "must be between 1 and %lu", ULONG_MAX); RETURN_THROWS(); } @@ -1253,8 +1248,8 @@ ZEND_FUNCTION(gmp_rootrem) Z_PARAM_LONG(nth) ZEND_PARSE_PARAMETERS_END(); - if (nth <= 0) { - zend_argument_value_error(2, "must be greater than or equal to 1"); + if (nth <= 0 || nth > ULONG_MAX) { + zend_argument_value_error(2, "must be between 1 and %lu", ULONG_MAX); RETURN_THROWS(); } diff --git a/ext/gmp/php_gmp.h b/ext/gmp/php_gmp.h index 597c7a9146c2..220a36d64285 100644 --- a/ext/gmp/php_gmp.h +++ b/ext/gmp/php_gmp.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/gmp/php_gmp_int.h b/ext/gmp/php_gmp_int.h index 32f1d32f592a..d6d0a6163ac4 100644 --- a/ext/gmp/php_gmp_int.h +++ b/ext/gmp/php_gmp_int.h @@ -1,3 +1,15 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + */ + /* interface header; needs to be installed; FIXME rename? */ #ifndef incl_PHP_GMP_INT_H diff --git a/ext/gmp/tests/gmp_binomial.phpt b/ext/gmp/tests/gmp_binomial.phpt index 4598a4c47ee8..1bf371e68a14 100644 --- a/ext/gmp/tests/gmp_binomial.phpt +++ b/ext/gmp/tests/gmp_binomial.phpt @@ -26,7 +26,7 @@ try { echo $e->getMessage() . \PHP_EOL; } ?> ---EXPECT-- +--EXPECTF-- object(GMP)#1 (1) { ["num"]=> string(3) "252" @@ -67,4 +67,4 @@ object(GMP)#2 (1) { ["num"]=> string(1) "7" } -gmp_binomial(): Argument #2 ($k) must be greater than or equal to 0 +gmp_binomial(): Argument #2 ($k) must be between 0 and %d diff --git a/ext/gmp/tests/gmp_fact.phpt b/ext/gmp/tests/gmp_fact.phpt index e03931454940..b28f572c6975 100644 --- a/ext/gmp/tests/gmp_fact.phpt +++ b/ext/gmp/tests/gmp_fact.phpt @@ -45,17 +45,17 @@ try { echo "Done\n"; ?> ---EXPECT-- +--EXPECTF-- string(1) "1" gmp_fact(): Argument #1 ($num) is not an integer string string(1) "1" -gmp_fact(): Argument #1 ($num) must be greater than or equal to 0 -gmp_fact(): Argument #1 ($num) must be greater than or equal to 0 +gmp_fact(): Argument #1 ($num) must be between 0 and %d +gmp_fact(): Argument #1 ($num) must be between 0 and %d string(19) "2432902008176640000" string(65) "30414093201713378043612608166064768844377641568960512000000000000" string(7) "3628800" string(1) "1" string(9) "479001600" -gmp_fact(): Argument #1 ($num) must be greater than or equal to 0 +gmp_fact(): Argument #1 ($num) must be between 0 and %d gmp_fact(): Argument #1 ($num) must be of type GMP|string|int, array given Done diff --git a/ext/gmp/tests/gmp_fact_overflow.phpt b/ext/gmp/tests/gmp_fact_overflow.phpt new file mode 100644 index 000000000000..2d22005818c5 --- /dev/null +++ b/ext/gmp/tests/gmp_fact_overflow.phpt @@ -0,0 +1,25 @@ +--TEST-- +gmp_fact() rejects values larger than unsigned long +--EXTENSIONS-- +gmp +--FILE-- +getMessage() . \PHP_EOL; +} + +try { + var_dump(gmp_fact(gmp_init("18446744073709551616"))); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} + +echo "Done\n"; +?> +--EXPECTF-- +gmp_fact(): Argument #1 ($num) must be between 0 and %d +gmp_fact(): Argument #1 ($num) must be between 0 and %d +Done diff --git a/ext/gmp/tests/gmp_overflow_llp64.phpt b/ext/gmp/tests/gmp_overflow_llp64.phpt new file mode 100644 index 000000000000..ea242bc52155 --- /dev/null +++ b/ext/gmp/tests/gmp_overflow_llp64.phpt @@ -0,0 +1,58 @@ +--TEST-- +GMP functions reject values larger than unsigned long on LLP64 +--EXTENSIONS-- +gmp +--SKIPIF-- + +--FILE-- +getMessage() . PHP_EOL; +} + +try { + gmp_binomial(10, PHP_INT_MAX); +} catch (ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} + +try { + gmp_root(10, PHP_INT_MAX); +} catch (ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} + +try { + gmp_rootrem(10, PHP_INT_MAX); +} catch (ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} + +$n = gmp_init(2); +try { + $n << PHP_INT_MAX; +} catch (ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} + +try { + $n ** PHP_INT_MAX; +} catch (ValueError $e) { + echo $e->getMessage() . PHP_EOL; +} + +echo "Done\n"; +?> +--EXPECTF-- +gmp_pow(): Argument #2 ($exponent) must be between 0 and %d +gmp_binomial(): Argument #2 ($k) must be between 0 and %d +gmp_root(): Argument #2 ($nth) must be between 1 and %d +gmp_rootrem(): Argument #2 ($nth) must be between 1 and %d +Shift must be between 0 and %d +Exponent must be between 0 and %d +Done diff --git a/ext/gmp/tests/gmp_pow.phpt b/ext/gmp/tests/gmp_pow.phpt index f42e44e31abe..36d0d16d8ccc 100644 --- a/ext/gmp/tests/gmp_pow.phpt +++ b/ext/gmp/tests/gmp_pow.phpt @@ -43,17 +43,17 @@ try { echo "Done\n"; ?> ---EXPECT-- +--EXPECTF-- string(4) "1024" string(4) "1024" string(5) "-2048" string(4) "1024" string(1) "1" -gmp_pow(): Argument #2 ($exponent) must be greater than or equal to 0 +gmp_pow(): Argument #2 ($exponent) must be between 0 and %d string(4) "1024" string(14) "10240000000000" string(17) "97656250000000000" -gmp_pow(): Argument #2 ($exponent) must be greater than or equal to 0 +gmp_pow(): Argument #2 ($exponent) must be between 0 and %d string(14) "10240000000000" string(14) "10240000000000" gmp_pow(): Argument #2 ($exponent) must be of type int, array given diff --git a/ext/gmp/tests/gmp_pow2.phpt b/ext/gmp/tests/gmp_pow2.phpt index 43bf9bb5aaa5..96f33e8c25ca 100644 --- a/ext/gmp/tests/gmp_pow2.phpt +++ b/ext/gmp/tests/gmp_pow2.phpt @@ -31,5 +31,5 @@ object(GMP)#%d (1) { ["num"]=> string(4) "1024" } -Exponent must be greater than or equal to 0 -Exponent must be greater than or equal to 0 +Exponent must be between 0 and %d +Exponent must be between 0 and %d diff --git a/ext/gmp/tests/gmp_pown.phpt b/ext/gmp/tests/gmp_pown.phpt index 0e7b3bd1fa5d..79709f272715 100644 --- a/ext/gmp/tests/gmp_pown.phpt +++ b/ext/gmp/tests/gmp_pown.phpt @@ -63,7 +63,7 @@ var_dump(gmp_powm(10, $n, 10)); echo "Done\n"; ?> ---EXPECT-- +--EXPECTF-- string(1) "0" string(1) "5" string(1) "5" @@ -73,8 +73,8 @@ string(3) "533" string(3) "331" string(3) "171" string(3) "371" -Modulo by zero -Modulo by zero +gmp_powm(): Argument #3 ($modulus) Modulo by zero +gmp_powm(): Argument #3 ($modulus) Modulo by zero gmp_powm(): Argument #1 ($num) must be of type GMP|string|int, array given gmp_powm(): Argument #2 ($exponent) must be of type GMP|string|int, array given gmp_powm(): Argument #2 ($exponent) must be of type GMP|string|int, TypeError given diff --git a/ext/gmp/tests/gmp_remroot.phpt b/ext/gmp/tests/gmp_remroot.phpt index 8e53858c6047..de54d0e91c3e 100644 --- a/ext/gmp/tests/gmp_remroot.phpt +++ b/ext/gmp/tests/gmp_remroot.phpt @@ -105,5 +105,5 @@ array(2) { string(1) "0" } } -gmp_rootrem(): Argument #2 ($nth) must be greater than or equal to 1 -gmp_rootrem(): Argument #2 ($nth) must be greater than or equal to 1 +gmp_rootrem(): Argument #2 ($nth) must be between 1 and %d +gmp_rootrem(): Argument #2 ($nth) must be between 1 and %d diff --git a/ext/gmp/tests/gmp_root.phpt b/ext/gmp/tests/gmp_root.phpt index 2313b207cc8d..36793e249721 100644 --- a/ext/gmp/tests/gmp_root.phpt +++ b/ext/gmp/tests/gmp_root.phpt @@ -58,5 +58,5 @@ object(GMP)#%d (1) { ["num"]=> string(1) "0" } -gmp_root(): Argument #2 ($nth) must be greater than 0 -gmp_root(): Argument #2 ($nth) must be greater than 0 +gmp_root(): Argument #2 ($nth) must be between 1 and %d +gmp_root(): Argument #2 ($nth) must be between 1 and %d diff --git a/ext/gmp/tests/overloading.phpt b/ext/gmp/tests/overloading.phpt index 14c35ea8470c..f55a83f0bd5f 100644 --- a/ext/gmp/tests/overloading.phpt +++ b/ext/gmp/tests/overloading.phpt @@ -123,7 +123,7 @@ $a .= '17'; var_dump($a); ?> ---EXPECT-- +--EXPECTF-- object(GMP)#3 (1) { ["num"]=> string(2) "59" @@ -254,8 +254,8 @@ object(GMP)#5 (1) { ["num"]=> string(3) "-11" } -Shift must be greater than or equal to 0 -Shift must be greater than or equal to 0 +Shift must be between 0 and %d +Shift must be between 0 and %d object(GMP)#5 (1) { ["num"]=> string(3) "-43" diff --git a/ext/hash/hash.c b/ext/hash/hash.c index 8a9494fb62d0..0f7d24275722 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | | Scott MacVicar | diff --git a/ext/hash/hash_adler32.c b/ext/hash/hash_adler32.c index 3898ea60e877..2a40b3318cd5 100644 --- a/ext/hash/hash_adler32.c +++ b/ext/hash/hash_adler32.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/hash_crc32.c b/ext/hash/hash_crc32.c index a770d0b55416..795cfcdf05b2 100644 --- a/ext/hash/hash_crc32.c +++ b/ext/hash/hash_crc32.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/hash_fnv.c b/ext/hash/hash_fnv.c index 92d4922bd810..58101c4f2e6c 100644 --- a/ext/hash/hash_fnv.c +++ b/ext/hash/hash_fnv.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Maclean | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_gost.c b/ext/hash/hash_gost.c index bba585a11f9f..ad87754970b9 100644 --- a/ext/hash/hash_gost.c +++ b/ext/hash/hash_gost.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/hash_haval.c b/ext/hash/hash_haval.c index 67bc2b2e4780..2adafdb189e2 100644 --- a/ext/hash/hash_haval.c +++ b/ext/hash/hash_haval.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_joaat.c b/ext/hash/hash_joaat.c index 328f9292c4ca..0d7b64092f47 100644 --- a/ext/hash/hash_joaat.c +++ b/ext/hash/hash_joaat.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Martin Jansen | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_md.c b/ext/hash/hash_md.c index dd299e695891..0bd48a9c823c 100644 --- a/ext/hash/hash_md.c +++ b/ext/hash/hash_md.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Taken from: ext/standard/md5.c | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_murmur.c b/ext/hash/hash_murmur.c index 0117b2e57d36..cd5d5f4be520 100644 --- a/ext/hash/hash_murmur.c +++ b/ext/hash/hash_murmur.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_ripemd.c b/ext/hash/hash_ripemd.c index 4802fdf9a1fc..1b76f58ff098 100644 --- a/ext/hash/hash_ripemd.c +++ b/ext/hash/hash_ripemd.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_sha.c b/ext/hash/hash_sha.c index 3129446fcde4..fd4d8ce5a36a 100644 --- a/ext/hash/hash_sha.c +++ b/ext/hash/hash_sha.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Steffan Esser | | Sara Golemon | diff --git a/ext/hash/hash_sha3.c b/ext/hash/hash_sha3.c index 8fa0a4b4e522..d82840e81de6 100644 --- a/ext/hash/hash_sha3.c +++ b/ext/hash/hash_sha3.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/hash_snefru.c b/ext/hash/hash_snefru.c index b9b70f364208..5f08eb088229 100644 --- a/ext/hash/hash_snefru.c +++ b/ext/hash/hash_snefru.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/hash_tiger.c b/ext/hash/hash_tiger.c index 62d1b7347143..1153711d85d4 100644 --- a/ext/hash/hash_tiger.c +++ b/ext/hash/hash_tiger.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/hash_whirlpool.c b/ext/hash/hash_whirlpool.c index fa3c216a64c4..2a5b220d3a18 100644 --- a/ext/hash/hash_whirlpool.c +++ b/ext/hash/hash_whirlpool.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/hash_xxhash.c b/ext/hash/hash_xxhash.c index add922e8e84f..b6177905e691 100644 --- a/ext/hash/hash_xxhash.c +++ b/ext/hash/hash_xxhash.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash.h b/ext/hash/php_hash.h index f56605a33be6..9eac5da78c8d 100644 --- a/ext/hash/php_hash.h +++ b/ext/hash/php_hash.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_adler32.h b/ext/hash/php_hash_adler32.h index bacb47ff1c91..c076893cb76f 100644 --- a/ext/hash/php_hash_adler32.h +++ b/ext/hash/php_hash_adler32.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_crc32.h b/ext/hash/php_hash_crc32.h index b6accea17bb6..f50bff1c69ea 100644 --- a/ext/hash/php_hash_crc32.h +++ b/ext/hash/php_hash_crc32.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_crc32_tables.h b/ext/hash/php_hash_crc32_tables.h index d126f177bdbe..28b70e4226b3 100644 --- a/ext/hash/php_hash_crc32_tables.h +++ b/ext/hash/php_hash_crc32_tables.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_fnv.h b/ext/hash/php_hash_fnv.h index e9d1ce8d0b44..5e82bc4dab66 100644 --- a/ext/hash/php_hash_fnv.h +++ b/ext/hash/php_hash_fnv.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Maclean | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_gost.h b/ext/hash/php_hash_gost.h index 66992b09b976..f1116c3852d6 100644 --- a/ext/hash/php_hash_gost.h +++ b/ext/hash/php_hash_gost.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_haval.h b/ext/hash/php_hash_haval.h index e3a3a31b3685..c857d84b0abd 100644 --- a/ext/hash/php_hash_haval.h +++ b/ext/hash/php_hash_haval.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_joaat.h b/ext/hash/php_hash_joaat.h index fcc4cc3911bb..26e5adc03532 100644 --- a/ext/hash/php_hash_joaat.h +++ b/ext/hash/php_hash_joaat.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Martin Jansen | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_md.h b/ext/hash/php_hash_md.h index f648fbf7c3c2..f9abbd5583b5 100644 --- a/ext/hash/php_hash_md.h +++ b/ext/hash/php_hash_md.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Original Author: Rasmus Lerdorf | | Modified for pHASH by: Sara Golemon diff --git a/ext/hash/php_hash_murmur.h b/ext/hash/php_hash_murmur.h index 6180a9b8f341..1539011156b3 100644 --- a/ext/hash/php_hash_murmur.h +++ b/ext/hash/php_hash_murmur.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_ripemd.h b/ext/hash/php_hash_ripemd.h index 0065450d21bb..1d30330d9e7f 100644 --- a/ext/hash/php_hash_ripemd.h +++ b/ext/hash/php_hash_ripemd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_sha.h b/ext/hash/php_hash_sha.h index 50eef82e858a..e2c6eac30b4c 100644 --- a/ext/hash/php_hash_sha.h +++ b/ext/hash/php_hash_sha.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | SHA1 Author: Stefan Esser | | SHA256 Author: Sara Golemon | diff --git a/ext/hash/php_hash_sha3.h b/ext/hash/php_hash_sha3.h index 8381a8943b4d..2692fd5de766 100644 --- a/ext/hash/php_hash_sha3.h +++ b/ext/hash/php_hash_sha3.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_snefru.h b/ext/hash/php_hash_snefru.h index df90e8e46968..2fbeb7c42ebe 100644 --- a/ext/hash/php_hash_snefru.h +++ b/ext/hash/php_hash_snefru.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_snefru_tables.h b/ext/hash/php_hash_snefru_tables.h index 0fc186b14cbe..075b2fe3e620 100644 --- a/ext/hash/php_hash_snefru_tables.h +++ b/ext/hash/php_hash_snefru_tables.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_tiger.h b/ext/hash/php_hash_tiger.h index 92515c4dbf75..aa0f6cafbe8d 100644 --- a/ext/hash/php_hash_tiger.h +++ b/ext/hash/php_hash_tiger.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_tiger_tables.h b/ext/hash/php_hash_tiger_tables.h index 594bf836fd04..f2d1bb69f1ec 100644 --- a/ext/hash/php_hash_tiger_tables.h +++ b/ext/hash/php_hash_tiger_tables.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Michael Wallner | | Sara Golemon | diff --git a/ext/hash/php_hash_whirlpool.h b/ext/hash/php_hash_whirlpool.h index f28ab234861b..b12e6c50a9f6 100644 --- a/ext/hash/php_hash_whirlpool.h +++ b/ext/hash/php_hash_whirlpool.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_whirlpool_tables.h b/ext/hash/php_hash_whirlpool_tables.h index ef121efe9449..cd58d6c53a3e 100644 --- a/ext/hash/php_hash_whirlpool_tables.h +++ b/ext/hash/php_hash_whirlpool_tables.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/ext/hash/php_hash_xxhash.h b/ext/hash/php_hash_xxhash.h index f099039f3711..e2003ba4c584 100644 --- a/ext/hash/php_hash_xxhash.h +++ b/ext/hash/php_hash_xxhash.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 02cffcb4b859..5dfc5d9a1906 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rui Hirokawa | | Stig Bakken | @@ -1030,7 +1028,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn if (out_size <= out_reserved) { err = PHP_ICONV_ERR_TOO_BIG; - goto out; + goto out_try; } out_left = out_size - out_reserved; @@ -1039,22 +1037,22 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn switch (errno) { case EINVAL: err = PHP_ICONV_ERR_ILLEGAL_CHAR; - goto out; + goto out_try; case EILSEQ: err = PHP_ICONV_ERR_ILLEGAL_SEQ; - goto out; + goto out_try; case E2BIG: if (prev_in_left == in_left) { err = PHP_ICONV_ERR_TOO_BIG; - goto out; + goto out_try; } break; default: err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } } @@ -1063,7 +1061,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn if (iconv(cd, NULL, NULL, (char **) &out_p, &out_left) == (size_t)-1) { if (errno != E2BIG) { err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } } else { break; @@ -1071,7 +1069,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn if (iconv(cd, NULL, NULL, NULL, NULL) == (size_t)-1) { err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } out_reserved += 4; @@ -1086,7 +1084,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn if (char_cnt < ZSTR_LEN(encoded)) { /* something went wrong! */ err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } smart_str_append(pretval, encoded); @@ -1123,28 +1121,28 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn switch (errno) { case EINVAL: err = PHP_ICONV_ERR_ILLEGAL_CHAR; - goto out; + goto out_try; case EILSEQ: err = PHP_ICONV_ERR_ILLEGAL_SEQ; - goto out; + goto out_try; case E2BIG: if (prev_in_left == in_left) { err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } break; default: err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } } if (iconv(cd, NULL, NULL, (char **) &out_p, &out_left) == (size_t)-1) { if (errno != E2BIG) { err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } } @@ -1179,7 +1177,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn if (iconv(cd, NULL, NULL, NULL, NULL) == (size_t)-1) { err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } } break; /* case PHP_ICONV_ENC_SCHEME_QPRINT: */ @@ -1187,6 +1185,8 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn } while (in_left > 0); smart_str_0(pretval); + +out_try: ; } zend_catch { bailout = true; } zend_end_try(); @@ -1278,7 +1278,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st if (mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR) { err = PHP_ICONV_ERR_SUCCESS; } else { - goto out; + goto out_try; } } encoded_word = NULL; @@ -1296,7 +1296,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st } err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1326,7 +1326,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st _php_iconv_appendc(pretval, '?', cd_pl); err = _php_iconv_appendl(pretval, csname, (size_t)((p1 + 1) - csname), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } csname = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1342,7 +1342,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st if (csname == NULL) { err = PHP_ICONV_ERR_MALFORMED; - goto out; + goto out_try; } csname_len = (size_t)(p1 - csname); @@ -1351,7 +1351,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) { err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1362,7 +1362,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st break; } else { err = PHP_ICONV_ERR_MALFORMED; - goto out; + goto out_try; } } @@ -1409,7 +1409,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } /* Let's go back and see if there are further @@ -1423,7 +1423,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st } else { err = PHP_ICONV_ERR_CONVERTER; } - goto out; + goto out_try; } } } @@ -1447,7 +1447,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) { err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1458,7 +1458,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st break; } else { err = PHP_ICONV_ERR_MALFORMED; - goto out; + goto out_try; } } break; @@ -1469,7 +1469,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st /* pass the entire chunk through the converter */ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1480,7 +1480,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st break; } else { err = PHP_ICONV_ERR_MALFORMED; - goto out; + goto out_try; } } encoded_text = p1 + 1; @@ -1525,7 +1525,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st /* pass the entire chunk through the converter */ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1536,7 +1536,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st break; } else { err = PHP_ICONV_ERR_MALFORMED; - goto out; + goto out_try; } } scan_stat = 9; @@ -1564,7 +1564,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st /* pass the entire chunk through the converter */ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } scan_stat = 12; break; @@ -1593,7 +1593,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st /* pass the entire chunk through the converter */ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + goto out_try; } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { @@ -1604,7 +1604,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st break; } else { err = PHP_ICONV_ERR_UNKNOWN; - goto out; + goto out_try; } } @@ -1623,7 +1623,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st break; } } else { - goto out; + goto out_try; } } @@ -1744,7 +1744,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st err = PHP_ICONV_ERR_SUCCESS; } else { err = PHP_ICONV_ERR_MALFORMED; - goto out; + goto out_try; } } @@ -1753,6 +1753,8 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st } smart_str_0(pretval); + +out_try: ; } zend_catch { bailout = true; } zend_end_try(); diff --git a/ext/iconv/php_iconv.h b/ext/iconv/php_iconv.h index fcabdfaf6449..84a934e1e98b 100644 --- a/ext/iconv/php_iconv.h +++ b/ext/iconv/php_iconv.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rui Hirokawa | | Stig Bakken | diff --git a/ext/iconv/tests/gh21664.phpt b/ext/iconv/tests/gh21664.phpt new file mode 100644 index 000000000000..92c66049c8dd --- /dev/null +++ b/ext/iconv/tests/gh21664.phpt @@ -0,0 +1,21 @@ +--TEST-- +GH-21664 (iconv_mime_decode/iconv_mime_encode bailout corruption) +--EXTENSIONS-- +iconv +--FILE-- + "UTF-8", "output-charset" => "UTF-8"]); +var_dump($r); + +echo "Done\n"; +?> +--EXPECTF-- +Notice: iconv_mime_decode(): Detected an illegal character in input string in %s on line %d +bool(false) + +Notice: iconv_mime_encode(): Detected an illegal character in input string in %s on line %d +bool(false) +Done diff --git a/ext/intl/ERROR_CONVENTIONS.md b/ext/intl/ERROR_CONVENTIONS.md index 432862afd685..4b29101a0a86 100644 --- a/ext/intl/ERROR_CONVENTIONS.md +++ b/ext/intl/ERROR_CONVENTIONS.md @@ -40,7 +40,7 @@ no way to pass ownership of the string without it being copied. unless the error is due to bad arguments, in which case only the global error should be set. -Objects store an intl_error structed in their private data. For instance: +Objects store an intl_error in their private data. For instance: ```c typedef struct { @@ -59,7 +59,7 @@ void intl_errors_set_code(intl_error* err, UErrorCode err_code); void intl_errors_set(intl_error* err, UErrorCode code, char* msg, int copyMsg); ``` -by passing a pointer to the object's `intl_error` structed as the first parameter. +by passing a pointer to the object's `intl_error` as the first parameter. Node the extra `s` in the functions' names (`errors`, not `error`). Static methods should only set the global error. diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp index 4976d4ff675b..901ed1015536 100644 --- a/ext/intl/breakiterator/breakiterator_class.cpp +++ b/ext/intl/breakiterator/breakiterator_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/breakiterator_class.h b/ext/intl/breakiterator/breakiterator_class.h index 0852d86e2a82..96d8bba626e2 100644 --- a/ext/intl/breakiterator/breakiterator_class.h +++ b/ext/intl/breakiterator/breakiterator_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp index 34176bf90e52..805057489013 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.cpp +++ b/ext/intl/breakiterator/breakiterator_iterators.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/breakiterator_iterators.h b/ext/intl/breakiterator/breakiterator_iterators.h index e52d066ac9ed..3ac07cd271c8 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.h +++ b/ext/intl/breakiterator/breakiterator_iterators.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/breakiterator_methods.cpp b/ext/intl/breakiterator/breakiterator_methods.cpp index c9791d4b23ae..972cd28cf38e 100644 --- a/ext/intl/breakiterator/breakiterator_methods.cpp +++ b/ext/intl/breakiterator/breakiterator_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/codepointiterator_internal.cpp b/ext/intl/breakiterator/codepointiterator_internal.cpp index 3982a599af38..47d5df00c1be 100644 --- a/ext/intl/breakiterator/codepointiterator_internal.cpp +++ b/ext/intl/breakiterator/codepointiterator_internal.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/codepointiterator_internal.h b/ext/intl/breakiterator/codepointiterator_internal.h index 8090bfbbd3cc..a64d49e24d5e 100644 --- a/ext/intl/breakiterator/codepointiterator_internal.h +++ b/ext/intl/breakiterator/codepointiterator_internal.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/codepointiterator_methods.cpp b/ext/intl/breakiterator/codepointiterator_methods.cpp index 49beb41be4e9..3b5044cb45a1 100644 --- a/ext/intl/breakiterator/codepointiterator_methods.cpp +++ b/ext/intl/breakiterator/codepointiterator_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp index a7c322b1d816..1e1c2f0f6e5c 100644 --- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp +++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/calendar/calendar_class.cpp b/ext/intl/calendar/calendar_class.cpp index 326b5475b73a..d09f04454790 100644 --- a/ext/intl/calendar/calendar_class.cpp +++ b/ext/intl/calendar/calendar_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/calendar/calendar_class.h b/ext/intl/calendar/calendar_class.h index 167bded8f31b..540646ba3049 100644 --- a/ext/intl/calendar/calendar_class.h +++ b/ext/intl/calendar/calendar_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/calendar/calendar_methods.cpp b/ext/intl/calendar/calendar_methods.cpp index c404286fe094..4828c6417300 100644 --- a/ext/intl/calendar/calendar_methods.cpp +++ b/ext/intl/calendar/calendar_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/calendar/gregoriancalendar_methods.cpp b/ext/intl/calendar/gregoriancalendar_methods.cpp index 0cc3a94d4c56..b94548b54a65 100644 --- a/ext/intl/calendar/gregoriancalendar_methods.cpp +++ b/ext/intl/calendar/gregoriancalendar_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/collator/collator.h b/ext/intl/collator/collator.h index e92429f51179..959da9063e09 100644 --- a/ext/intl/collator/collator.h +++ b/ext/intl/collator/collator.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_attr.cpp b/ext/intl/collator/collator_attr.cpp index f56596deb6b0..14b8abf497b4 100644 --- a/ext/intl/collator/collator_attr.cpp +++ b/ext/intl/collator/collator_attr.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_class.cpp b/ext/intl/collator/collator_class.cpp index 293a089c2679..33c25845a864 100644 --- a/ext/intl/collator/collator_class.cpp +++ b/ext/intl/collator/collator_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_class.h b/ext/intl/collator/collator_class.h index a281b2bec8ad..af564f31e51b 100644 --- a/ext/intl/collator/collator_class.h +++ b/ext/intl/collator/collator_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_compare.cpp b/ext/intl/collator/collator_compare.cpp index 38e283a6d853..bac0bbf50b21 100644 --- a/ext/intl/collator/collator_compare.cpp +++ b/ext/intl/collator/collator_compare.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_convert.cpp b/ext/intl/collator/collator_convert.cpp index d4de15aa0b82..dd3360a69092 100644 --- a/ext/intl/collator/collator_convert.cpp +++ b/ext/intl/collator/collator_convert.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | @@ -289,7 +289,7 @@ U_CFUNC zval* collator_convert_string_to_double( zval* str, zval *rv ) /* {{{ collator_convert_string_to_number_if_possible * - * Convert string to numer. + * Convert string to number. * * @param zval* str String to convert. * diff --git a/ext/intl/collator/collator_convert.h b/ext/intl/collator/collator_convert.h index 8c5356095b7a..1d65d9d2d76b 100644 --- a/ext/intl/collator/collator_convert.h +++ b/ext/intl/collator/collator_convert.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_create.cpp b/ext/intl/collator/collator_create.cpp index 59280bcdbed5..7aa715f8e091 100644 --- a/ext/intl/collator/collator_create.cpp +++ b/ext/intl/collator/collator_create.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_error.cpp b/ext/intl/collator/collator_error.cpp index aa333b5098a0..2a1eda8f9f36 100644 --- a/ext/intl/collator/collator_error.cpp +++ b/ext/intl/collator/collator_error.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_is_numeric.cpp b/ext/intl/collator/collator_is_numeric.cpp index b3cc52085dea..85a6eb695c0b 100644 --- a/ext/intl/collator/collator_is_numeric.cpp +++ b/ext/intl/collator/collator_is_numeric.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_is_numeric.h b/ext/intl/collator/collator_is_numeric.h index d30acd0b5843..e2f6ed83a178 100644 --- a/ext/intl/collator/collator_is_numeric.h +++ b/ext/intl/collator/collator_is_numeric.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_locale.cpp b/ext/intl/collator/collator_locale.cpp index 67b3d1342cc7..ea1393779846 100644 --- a/ext/intl/collator/collator_locale.cpp +++ b/ext/intl/collator/collator_locale.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/collator/collator_sort.cpp b/ext/intl/collator/collator_sort.cpp index 003d7f45a837..2b1122cb747a 100644 --- a/ext/intl/collator/collator_sort.cpp +++ b/ext/intl/collator/collator_sort.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | @@ -380,7 +380,7 @@ U_CFUNC PHP_FUNCTION( collator_sort_with_sort_keys ) if( !hash || zend_hash_num_elements( hash ) == 0 ) RETURN_TRUE; - /* Create bufers */ + /* Create buffers */ sortKeyBuf = reinterpret_cast(ecalloc( sortKeyBufSize, sizeof( char ) )); sortKeyIndxBuf = reinterpret_cast(ecalloc( sortKeyIndxBufSize, sizeof( uint8_t ) )); utf16_buf = eumalloc( utf16_buf_size ); diff --git a/ext/intl/collator/collator_sort.h b/ext/intl/collator/collator_sort.h index 53abc1028a0e..6b4c5766da6b 100644 --- a/ext/intl/collator/collator_sort.h +++ b/ext/intl/collator/collator_sort.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/common/common_date.cpp b/ext/intl/common/common_date.cpp index f2ca077554b4..0a7aa023b43c 100644 --- a/ext/intl/common/common_date.cpp +++ b/ext/intl/common/common_date.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/common/common_date.h b/ext/intl/common/common_date.h index 988f279294c3..a3a58eb3b037 100644 --- a/ext/intl/common/common_date.h +++ b/ext/intl/common/common_date.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/common/common_enum.cpp b/ext/intl/common/common_enum.cpp index 8cf9796717f4..114dabdcc00a 100644 --- a/ext/intl/common/common_enum.cpp +++ b/ext/intl/common/common_enum.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/common/common_enum.h b/ext/intl/common/common_enum.h index 6f0828528901..5c1f7495762f 100644 --- a/ext/intl/common/common_enum.h +++ b/ext/intl/common/common_enum.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/common/common_error.cpp b/ext/intl/common/common_error.cpp index cb12d8dff8f3..8d0cca52bb77 100644 --- a/ext/intl/common/common_error.cpp +++ b/ext/intl/common/common_error.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/config.w32 b/ext/intl/config.w32 index da8285b50d0c..9e2f695532d3 100644 --- a/ext/intl/config.w32 +++ b/ext/intl/config.w32 @@ -92,13 +92,11 @@ if (PHP_INTL != "no") { resourcebundle_iterator.cpp", "intl"); - if (CHECK_HEADER("unicode/uspoof.h", "CFLAGS_INTL")) { - ADD_SOURCES(configure_module_dirname + "/spoofchecker", "\ - spoofchecker_class.cpp \ - spoofchecker_create.cpp \ - spoofchecker_main.cpp", - "intl"); - } + ADD_SOURCES(configure_module_dirname + "/spoofchecker", "\ + spoofchecker_class.cpp \ + spoofchecker_create.cpp \ + spoofchecker_main.cpp", + "intl"); ADD_SOURCES(configure_module_dirname + "/transliterator", "\ transliterator_class.cpp \ diff --git a/ext/intl/converter/converter.cpp b/ext/intl/converter/converter.cpp index ad68909b5ea3..8921728fc9d7 100644 --- a/ext/intl/converter/converter.cpp +++ b/ext/intl/converter/converter.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/intl/converter/converter.h b/ext/intl/converter/converter.h index 5d779560811d..60967d196723 100644 --- a/ext/intl/converter/converter.h +++ b/ext/intl/converter/converter.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat.cpp b/ext/intl/dateformat/dateformat.cpp index cf2b445590bb..64454a8afde9 100644 --- a/ext/intl/dateformat/dateformat.cpp +++ b/ext/intl/dateformat/dateformat.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat.h b/ext/intl/dateformat/dateformat.h index 3e0b14cf6c0d..bff8d4e1ed72 100644 --- a/ext/intl/dateformat/dateformat.h +++ b/ext/intl/dateformat/dateformat.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_attr.cpp b/ext/intl/dateformat/dateformat_attr.cpp index 1ec55a806a7c..170a85889d53 100644 --- a/ext/intl/dateformat/dateformat_attr.cpp +++ b/ext/intl/dateformat/dateformat_attr.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_attrcpp.cpp b/ext/intl/dateformat/dateformat_attrcpp.cpp index 13dadc9c9697..1391823ff0fe 100644 --- a/ext/intl/dateformat/dateformat_attrcpp.cpp +++ b/ext/intl/dateformat/dateformat_attrcpp.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_class.cpp b/ext/intl/dateformat/dateformat_class.cpp index b6ccf9799007..03f2bc9a2d6a 100644 --- a/ext/intl/dateformat/dateformat_class.cpp +++ b/ext/intl/dateformat/dateformat_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_class.h b/ext/intl/dateformat/dateformat_class.h index e722c40b4bd9..458313a92502 100644 --- a/ext/intl/dateformat/dateformat_class.h +++ b/ext/intl/dateformat/dateformat_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_create.cpp b/ext/intl/dateformat/dateformat_create.cpp index 251f6f3fbc9b..4b055fc88eba 100644 --- a/ext/intl/dateformat/dateformat_create.cpp +++ b/ext/intl/dateformat/dateformat_create.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | | Gustavo Lopes | diff --git a/ext/intl/dateformat/dateformat_create.h b/ext/intl/dateformat/dateformat_create.h index a15828e7794c..440f91d261d9 100644 --- a/ext/intl/dateformat/dateformat_create.h +++ b/ext/intl/dateformat/dateformat_create.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_data.cpp b/ext/intl/dateformat/dateformat_data.cpp index 42e7c9522055..6246257732c1 100644 --- a/ext/intl/dateformat/dateformat_data.cpp +++ b/ext/intl/dateformat/dateformat_data.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_data.h b/ext/intl/dateformat/dateformat_data.h index 962ffbade31d..a8dcef4c500b 100644 --- a/ext/intl/dateformat/dateformat_data.h +++ b/ext/intl/dateformat/dateformat_data.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_format.cpp b/ext/intl/dateformat/dateformat_format.cpp index 30570a5887c1..8b2a28d5c4d2 100644 --- a/ext/intl/dateformat/dateformat_format.cpp +++ b/ext/intl/dateformat/dateformat_format.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_format_object.cpp b/ext/intl/dateformat/dateformat_format_object.cpp index a5113ce4cf9e..5b0950094d51 100644 --- a/ext/intl/dateformat/dateformat_format_object.cpp +++ b/ext/intl/dateformat/dateformat_format_object.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_helpers.cpp b/ext/intl/dateformat/dateformat_helpers.cpp index 18dc594deddd..747105bb4f90 100644 --- a/ext/intl/dateformat/dateformat_helpers.cpp +++ b/ext/intl/dateformat/dateformat_helpers.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_helpers.h b/ext/intl/dateformat/dateformat_helpers.h index b931d9667e5f..f71e7f368706 100644 --- a/ext/intl/dateformat/dateformat_helpers.h +++ b/ext/intl/dateformat/dateformat_helpers.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/dateformat_parse.cpp b/ext/intl/dateformat/dateformat_parse.cpp index a82a20a42f96..667bbf98ac62 100644 --- a/ext/intl/dateformat/dateformat_parse.cpp +++ b/ext/intl/dateformat/dateformat_parse.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/datepatterngenerator_class.cpp b/ext/intl/dateformat/datepatterngenerator_class.cpp index 38faff751fb7..6a218fab72ff 100644 --- a/ext/intl/dateformat/datepatterngenerator_class.cpp +++ b/ext/intl/dateformat/datepatterngenerator_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Mel Dafert (mel@dafert.at) | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/datepatterngenerator_class.h b/ext/intl/dateformat/datepatterngenerator_class.h index eb8f7c433d0e..017bea2cca07 100644 --- a/ext/intl/dateformat/datepatterngenerator_class.h +++ b/ext/intl/dateformat/datepatterngenerator_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Mel Dafert (mel@dafert.at) | +----------------------------------------------------------------------+ diff --git a/ext/intl/dateformat/datepatterngenerator_methods.cpp b/ext/intl/dateformat/datepatterngenerator_methods.cpp index beaf10d9f507..f22be1c21fc1 100644 --- a/ext/intl/dateformat/datepatterngenerator_methods.cpp +++ b/ext/intl/dateformat/datepatterngenerator_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Mel Dafert (mel@dafert.at) | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_attr.cpp b/ext/intl/formatter/formatter_attr.cpp index 905a4415ef59..01108351a5d4 100644 --- a/ext/intl/formatter/formatter_attr.cpp +++ b/ext/intl/formatter/formatter_attr.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_class.cpp b/ext/intl/formatter/formatter_class.cpp index 214e1e57dae8..82843ba90911 100644 --- a/ext/intl/formatter/formatter_class.cpp +++ b/ext/intl/formatter/formatter_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_class.h b/ext/intl/formatter/formatter_class.h index bf21825b5f5f..1d3393fdd522 100644 --- a/ext/intl/formatter/formatter_class.h +++ b/ext/intl/formatter/formatter_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_data.cpp b/ext/intl/formatter/formatter_data.cpp index 095be92ed29e..593d746f1006 100644 --- a/ext/intl/formatter/formatter_data.cpp +++ b/ext/intl/formatter/formatter_data.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ @@ -32,7 +32,7 @@ void formatter_data_init( formatter_data* nf_data ) /* }}} */ /* {{{ void formatter_data_free( formatter_data* nf_data ) - * Clean up mem allocted by internals of formatter_data + * Clean up mem allocated by internals of formatter_data */ void formatter_data_free( formatter_data* nf_data ) { diff --git a/ext/intl/formatter/formatter_data.h b/ext/intl/formatter/formatter_data.h index 35acc242a8db..183682bee6ae 100644 --- a/ext/intl/formatter/formatter_data.h +++ b/ext/intl/formatter/formatter_data.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_format.cpp b/ext/intl/formatter/formatter_format.cpp index f28ea30b9ff8..6b2651e4ead2 100644 --- a/ext/intl/formatter/formatter_format.cpp +++ b/ext/intl/formatter/formatter_format.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ @@ -55,7 +55,7 @@ U_CFUNC PHP_FUNCTION( numfmt_format ) case IS_DOUBLE: type = FORMAT_TYPE_DOUBLE; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/intl/formatter/formatter_format.h b/ext/intl/formatter/formatter_format.h index 0238d5d4b8b0..14aa91193ba2 100644 --- a/ext/intl/formatter/formatter_format.h +++ b/ext/intl/formatter/formatter_format.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_main.cpp b/ext/intl/formatter/formatter_main.cpp index a014323089a7..31c4cdcc485d 100644 --- a/ext/intl/formatter/formatter_main.cpp +++ b/ext/intl/formatter/formatter_main.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/formatter/formatter_parse.cpp b/ext/intl/formatter/formatter_parse.cpp index c7d0df8cbda0..b2dc2e8dcbdf 100644 --- a/ext/intl/formatter/formatter_parse.cpp +++ b/ext/intl/formatter/formatter_parse.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/grapheme/grapheme.h b/ext/intl/grapheme/grapheme.h index 8ec470d47927..b52f48f9d142 100644 --- a/ext/intl/grapheme/grapheme.h +++ b/ext/intl/grapheme/grapheme.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/grapheme/grapheme_string.cpp b/ext/intl/grapheme/grapheme_string.cpp index 36c0cc0f732c..9b463fcd94cf 100644 --- a/ext/intl/grapheme/grapheme_string.cpp +++ b/ext/intl/grapheme/grapheme_string.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/grapheme/grapheme_util.cpp b/ext/intl/grapheme/grapheme_util.cpp index a04f3db0b8a6..d5bbef6009cd 100644 --- a/ext/intl/grapheme/grapheme_util.cpp +++ b/ext/intl/grapheme/grapheme_util.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/grapheme/grapheme_util.h b/ext/intl/grapheme/grapheme_util.h index 57d2ace384f8..a1d67981d270 100644 --- a/ext/intl/grapheme/grapheme_util.h +++ b/ext/intl/grapheme/grapheme_util.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/idn/idn.cpp b/ext/intl/idn/idn.cpp index 6c7e4d8c6d68..28708eb93508 100644 --- a/ext/intl/idn/idn.cpp +++ b/ext/intl/idn/idn.cpp @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierre A. Joye | | Gustavo Lopes | diff --git a/ext/intl/idn/idn.h b/ext/intl/idn/idn.h index 596e63f207e0..cf3af63a26ae 100644 --- a/ext/intl/idn/idn.h +++ b/ext/intl/idn/idn.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierre A. Joye | +----------------------------------------------------------------------+ diff --git a/ext/intl/intl_common.h b/ext/intl/intl_common.h index cef96325e9af..1fdb1c16efed 100644 --- a/ext/intl/intl_common.h +++ b/ext/intl/intl_common.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/intl_convert.c b/ext/intl/intl_convert.c index 39f70821e117..abbcc6c1fa73 100644 --- a/ext/intl/intl_convert.c +++ b/ext/intl/intl_convert.c @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/intl_convert.h b/ext/intl/intl_convert.h index 5cc3a671333d..443d373d55c2 100644 --- a/ext/intl/intl_convert.h +++ b/ext/intl/intl_convert.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/intl_convertcpp.cpp b/ext/intl/intl_convertcpp.cpp index b919c3fb4087..cd7614b3a6c6 100644 --- a/ext/intl/intl_convertcpp.cpp +++ b/ext/intl/intl_convertcpp.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/intl_convertcpp.h b/ext/intl/intl_convertcpp.h index 28948c2e01ca..ef4310bac4ff 100644 --- a/ext/intl/intl_convertcpp.h +++ b/ext/intl/intl_convertcpp.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/intl_cppshims.h b/ext/intl/intl_cppshims.h index 169448a2edf3..d2bc5f9a240d 100644 --- a/ext/intl/intl_cppshims.h +++ b/ext/intl/intl_cppshims.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/intl_data.h b/ext/intl/intl_data.h index c818427e07e1..c36f0adf5665 100644 --- a/ext/intl/intl_data.h +++ b/ext/intl/intl_data.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/intl_error.c b/ext/intl/intl_error.c index be6e53fb5439..f19a5ec617dc 100644 --- a/ext/intl/intl_error.c +++ b/ext/intl/intl_error.c @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/intl_error.h b/ext/intl/intl_error.h index 8a9bff0b271c..dd13cf84ebd2 100644 --- a/ext/intl/intl_error.h +++ b/ext/intl/intl_error.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | @@ -37,7 +37,7 @@ void intl_error_set( intl_error* err, UErrorCode code, const char* msg); UErrorCode intl_error_get_code( intl_error* err ); zend_string* intl_error_get_message( intl_error* err ); -// Wrappers to synchonize object's and global error structures. +// Wrappers to synchronize object's and global error structures. void intl_errors_reset( intl_error* err ); void intl_errors_set_custom_msg( intl_error* err, const char* msg); void intl_errors_set_code( intl_error* err, UErrorCode err_code ); diff --git a/ext/intl/listformatter/listformatter_class.cpp b/ext/intl/listformatter/listformatter_class.cpp index 8a7f9ffef9c2..d50374393cce 100644 --- a/ext/intl/listformatter/listformatter_class.cpp +++ b/ext/intl/listformatter/listformatter_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bogdan Ungureanu | +----------------------------------------------------------------------+ diff --git a/ext/intl/listformatter/listformatter_class.h b/ext/intl/listformatter/listformatter_class.h index 8edbf8d63e2d..6aa43740604e 100644 --- a/ext/intl/listformatter/listformatter_class.h +++ b/ext/intl/listformatter/listformatter_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bogdan Ungureanu | +----------------------------------------------------------------------+ diff --git a/ext/intl/locale/locale.cpp b/ext/intl/locale/locale.cpp index 76b269ca85e3..bad1c775c1b0 100644 --- a/ext/intl/locale/locale.cpp +++ b/ext/intl/locale/locale.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/locale/locale.h b/ext/intl/locale/locale.h index 31aef035050d..1c40871d2065 100644 --- a/ext/intl/locale/locale.h +++ b/ext/intl/locale/locale.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/locale/locale_class.cpp b/ext/intl/locale/locale_class.cpp index 75fde45d53d6..a8d34f2e9f24 100644 --- a/ext/intl/locale/locale_class.cpp +++ b/ext/intl/locale/locale_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/locale/locale_class.h b/ext/intl/locale/locale_class.h index 64a661ca2b44..86cbc6ed9421 100644 --- a/ext/intl/locale/locale_class.h +++ b/ext/intl/locale/locale_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ diff --git a/ext/intl/locale/locale_methods.cpp b/ext/intl/locale/locale_methods.cpp index 8f09e5c116e1..6370b1282af8 100644 --- a/ext/intl/locale/locale_methods.cpp +++ b/ext/intl/locale/locale_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kirti Velankar | +----------------------------------------------------------------------+ @@ -254,7 +254,7 @@ static zend_off_t getStrrtokenPos(char* str, zend_off_t savedPos) } } if(result < 1){ - /* Just in case inavlid locale e.g. '-x-xyz' or '-sl_Latn' */ + /* Just in case invalid locale e.g. '-x-xyz' or '-sl_Latn' */ result =-1; } return result; @@ -362,7 +362,7 @@ static zend_string* get_icu_value_internal( const char* loc_name , const char* t if( strcmp(tag_name , LOC_LANG_TAG)==0 ){ return zend_string_init(loc_name, strlen(loc_name), 0); } else { - /* Since Grandfathered , no value , do nothing , retutn NULL */ + /* Since Grandfathered , no value , do nothing , return NULL */ return NULL; } } diff --git a/ext/intl/msgformat/msgformat.cpp b/ext/intl/msgformat/msgformat.cpp index a9e1f71bfc60..3857e97b4a4a 100644 --- a/ext/intl/msgformat/msgformat.cpp +++ b/ext/intl/msgformat/msgformat.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_attr.cpp b/ext/intl/msgformat/msgformat_attr.cpp index e7ec006e5e79..15c3525b858f 100644 --- a/ext/intl/msgformat/msgformat_attr.cpp +++ b/ext/intl/msgformat/msgformat_attr.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_class.cpp b/ext/intl/msgformat/msgformat_class.cpp index e762febf0d1b..06ba7fa6fa67 100644 --- a/ext/intl/msgformat/msgformat_class.cpp +++ b/ext/intl/msgformat/msgformat_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_class.h b/ext/intl/msgformat/msgformat_class.h index 809fdec65418..e80c75cf2e17 100644 --- a/ext/intl/msgformat/msgformat_class.h +++ b/ext/intl/msgformat/msgformat_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_data.cpp b/ext/intl/msgformat/msgformat_data.cpp index f8b7ec39601e..c629e8a3d818 100644 --- a/ext/intl/msgformat/msgformat_data.cpp +++ b/ext/intl/msgformat/msgformat_data.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_data.h b/ext/intl/msgformat/msgformat_data.h index bac94cbec34c..121c8360efea 100644 --- a/ext/intl/msgformat/msgformat_data.h +++ b/ext/intl/msgformat/msgformat_data.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_format.cpp b/ext/intl/msgformat/msgformat_format.cpp index 8e3ec28b389e..c0a02ad8db17 100644 --- a/ext/intl/msgformat/msgformat_format.cpp +++ b/ext/intl/msgformat/msgformat_format.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_helpers.cpp b/ext/intl/msgformat/msgformat_helpers.cpp index 25e8dbf86968..399db1e8c0b0 100644 --- a/ext/intl/msgformat/msgformat_helpers.cpp +++ b/ext/intl/msgformat/msgformat_helpers.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ @@ -411,7 +411,7 @@ U_CFUNC void umsg_format_helper(MessageFormatter_object *mfo, int32_t len = u_sprintf(temp, "%u", (uint32_t)num_index); key.append(temp, len); - storedArgType = (Formattable::Type*)zend_hash_index_find_ptr(types, (zend_ulong)num_index); + storedArgType = (Formattable::Type*)zend_hash_index_find_ptr(types, num_index); } else { //string; assumed to be in UTF-8 intl_stringFromChar(key, ZSTR_VAL(str_index), ZSTR_LEN(str_index), &err.code); diff --git a/ext/intl/msgformat/msgformat_helpers.h b/ext/intl/msgformat/msgformat_helpers.h index 20282526cbfb..c1a153783511 100644 --- a/ext/intl/msgformat/msgformat_helpers.h +++ b/ext/intl/msgformat/msgformat_helpers.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/msgformat/msgformat_parse.cpp b/ext/intl/msgformat/msgformat_parse.cpp index 28d7ce710802..b50dc1efed41 100644 --- a/ext/intl/msgformat/msgformat_parse.cpp +++ b/ext/intl/msgformat/msgformat_parse.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/ext/intl/normalizer/normalizer.h b/ext/intl/normalizer/normalizer.h index 3c6aa0e6eafc..c6feaa106eb1 100644 --- a/ext/intl/normalizer/normalizer.h +++ b/ext/intl/normalizer/normalizer.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/normalizer/normalizer_class.cpp b/ext/intl/normalizer/normalizer_class.cpp index 3838f7546325..1898df04e2e1 100644 --- a/ext/intl/normalizer/normalizer_class.cpp +++ b/ext/intl/normalizer/normalizer_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/normalizer/normalizer_class.h b/ext/intl/normalizer/normalizer_class.h index 8f88f215abcc..e30c29237041 100644 --- a/ext/intl/normalizer/normalizer_class.h +++ b/ext/intl/normalizer/normalizer_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/normalizer/normalizer_normalize.cpp b/ext/intl/normalizer/normalizer_normalize.cpp index 9cf809f27183..846eda64b4c8 100644 --- a/ext/intl/normalizer/normalizer_normalize.cpp +++ b/ext/intl/normalizer/normalizer_normalize.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ed Batutis | +----------------------------------------------------------------------+ diff --git a/ext/intl/php_intl.c b/ext/intl/php_intl.c index 441b26ae088d..9882309c6f46 100644 --- a/ext/intl/php_intl.c +++ b/ext/intl/php_intl.c @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/php_intl.h b/ext/intl/php_intl.h index a56c34f3dce4..1a9b4f769e86 100644 --- a/ext/intl/php_intl.h +++ b/ext/intl/php_intl.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Vadim Savchuk | | Dmitry Lakhtyuk | diff --git a/ext/intl/rangeformatter/rangeformatter_class.cpp b/ext/intl/rangeformatter/rangeformatter_class.cpp index 2042966177cb..e80e3bc02079 100644 --- a/ext/intl/rangeformatter/rangeformatter_class.cpp +++ b/ext/intl/rangeformatter/rangeformatter_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bogdan Ungureanu | +----------------------------------------------------------------------+ diff --git a/ext/intl/rangeformatter/rangeformatter_class.h b/ext/intl/rangeformatter/rangeformatter_class.h index 661641c2ce0f..6e911403be3f 100644 --- a/ext/intl/rangeformatter/rangeformatter_class.h +++ b/ext/intl/rangeformatter/rangeformatter_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bogdan Ungureanu | +----------------------------------------------------------------------+ diff --git a/ext/intl/resourcebundle/resourcebundle.cpp b/ext/intl/resourcebundle/resourcebundle.cpp index b8c5c00efaba..d3a41b7c8d92 100644 --- a/ext/intl/resourcebundle/resourcebundle.cpp +++ b/ext/intl/resourcebundle/resourcebundle.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Hans-Peter Oeri (University of St.Gallen) | +----------------------------------------------------------------------+ @@ -74,7 +74,7 @@ U_CFUNC void resourcebundle_extract_value( zval *return_value, ResourceBundle_ob source->child = NULL; intl_errors_reset(INTL_DATA_ERROR_P(source)); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ diff --git a/ext/intl/resourcebundle/resourcebundle.h b/ext/intl/resourcebundle/resourcebundle.h index c46908a8edff..e7c79c480d35 100644 --- a/ext/intl/resourcebundle/resourcebundle.h +++ b/ext/intl/resourcebundle/resourcebundle.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Hans-Peter Oeri (University of St.Gallen) | +----------------------------------------------------------------------+ diff --git a/ext/intl/resourcebundle/resourcebundle_class.cpp b/ext/intl/resourcebundle/resourcebundle_class.cpp index d88ba2ad1317..b6e62f2a4d4f 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.cpp +++ b/ext/intl/resourcebundle/resourcebundle_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Hans-Peter Oeri (University of St.Gallen) | +----------------------------------------------------------------------+ diff --git a/ext/intl/resourcebundle/resourcebundle_class.h b/ext/intl/resourcebundle/resourcebundle_class.h index 334532bde99b..f21ac5690930 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.h +++ b/ext/intl/resourcebundle/resourcebundle_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Hans-Peter Oeri (University of St.Gallen) | +----------------------------------------------------------------------+ diff --git a/ext/intl/resourcebundle/resourcebundle_iterator.cpp b/ext/intl/resourcebundle/resourcebundle_iterator.cpp index 7747b34adbd4..29288418437a 100644 --- a/ext/intl/resourcebundle/resourcebundle_iterator.cpp +++ b/ext/intl/resourcebundle/resourcebundle_iterator.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Hans-Peter Oeri (University of St.Gallen) | +----------------------------------------------------------------------+ diff --git a/ext/intl/resourcebundle/resourcebundle_iterator.h b/ext/intl/resourcebundle/resourcebundle_iterator.h index c323d4e17b4c..762c12f363b5 100644 --- a/ext/intl/resourcebundle/resourcebundle_iterator.h +++ b/ext/intl/resourcebundle/resourcebundle_iterator.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Hans-Peter Oeri (University of St.Gallen) | +----------------------------------------------------------------------+ diff --git a/ext/intl/spoofchecker/spoofchecker_class.cpp b/ext/intl/spoofchecker/spoofchecker_class.cpp index ba4c64321f14..e3bc04766610 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.cpp +++ b/ext/intl/spoofchecker/spoofchecker_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ diff --git a/ext/intl/spoofchecker/spoofchecker_class.h b/ext/intl/spoofchecker/spoofchecker_class.h index 06701eb60e36..0b0244c69528 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.h +++ b/ext/intl/spoofchecker/spoofchecker_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ diff --git a/ext/intl/spoofchecker/spoofchecker_create.cpp b/ext/intl/spoofchecker/spoofchecker_create.cpp index 1ed4055cccd1..f4b51492cac6 100644 --- a/ext/intl/spoofchecker/spoofchecker_create.cpp +++ b/ext/intl/spoofchecker/spoofchecker_create.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ diff --git a/ext/intl/spoofchecker/spoofchecker_main.cpp b/ext/intl/spoofchecker/spoofchecker_main.cpp index e49ddec87a3c..e3e21ef72b79 100644 --- a/ext/intl/spoofchecker/spoofchecker_main.cpp +++ b/ext/intl/spoofchecker/spoofchecker_main.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ diff --git a/ext/intl/timezone/timezone_class.cpp b/ext/intl/timezone/timezone_class.cpp index c613edf5585f..cf528f1cc09d 100644 --- a/ext/intl/timezone/timezone_class.cpp +++ b/ext/intl/timezone/timezone_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/timezone/timezone_class.h b/ext/intl/timezone/timezone_class.h index bbfd8adcae23..d1f1c5f8fe2c 100644 --- a/ext/intl/timezone/timezone_class.h +++ b/ext/intl/timezone/timezone_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/timezone/timezone_methods.cpp b/ext/intl/timezone/timezone_methods.cpp index 3de186a9ca03..29180f9caa2d 100644 --- a/ext/intl/timezone/timezone_methods.cpp +++ b/ext/intl/timezone/timezone_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/transliterator/transliterator.h b/ext/intl/transliterator/transliterator.h index f98ca0682965..2a86eb6781be 100644 --- a/ext/intl/transliterator/transliterator.h +++ b/ext/intl/transliterator/transliterator.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/transliterator/transliterator_class.cpp b/ext/intl/transliterator/transliterator_class.cpp index fd0cd4f3c3e6..1da1dbdab8ea 100644 --- a/ext/intl/transliterator/transliterator_class.cpp +++ b/ext/intl/transliterator/transliterator_class.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ @@ -80,7 +80,7 @@ static void transliterator_object_init( Transliterator_object* to ) /* }}} */ /* {{{ void transliterator_object_destroy( Transliterator_object* to ) - * Clean up mem allocted by internals of Transliterator_object + * Clean up mem allocated by internals of Transliterator_object */ static void transliterator_object_destroy( Transliterator_object* to ) { diff --git a/ext/intl/transliterator/transliterator_class.h b/ext/intl/transliterator/transliterator_class.h index 7e02d6fa5e28..9d41f0ea2bbc 100644 --- a/ext/intl/transliterator/transliterator_class.h +++ b/ext/intl/transliterator/transliterator_class.h @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/transliterator/transliterator_methods.cpp b/ext/intl/transliterator/transliterator_methods.cpp index d8a8cbb7a49e..2dce4612e7a2 100644 --- a/ext/intl/transliterator/transliterator_methods.cpp +++ b/ext/intl/transliterator/transliterator_methods.cpp @@ -1,12 +1,12 @@ /* +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/intl/uchar/uchar.cpp b/ext/intl/uchar/uchar.cpp index f1f777f0ea3e..ccb642b9d416 100644 --- a/ext/intl/uchar/uchar.cpp +++ b/ext/intl/uchar/uchar.cpp @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Sara Golemon | + +----------------------------------------------------------------------+ + */ + extern "C" { #include "uchar.h" #include "intl_data.h" diff --git a/ext/intl/uchar/uchar.h b/ext/intl/uchar/uchar.h index 25bab1f2156f..7b472163ab0f 100644 --- a/ext/intl/uchar/uchar.h +++ b/ext/intl/uchar/uchar.h @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Sara Golemon | + +----------------------------------------------------------------------+ + */ + #ifndef incl_PHP_INTL_UCHAR_H #define incl_PHP_INTL_UCHAR_H diff --git a/ext/json/json.c b/ext/json/json.c index 079f67a5c400..3ba53e959c5d 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Omar Kilani | | Jakub Zelenka | diff --git a/ext/json/json_encoder.c b/ext/json/json_encoder.c index d84917e95c7b..424315eca7ec 100644 --- a/ext/json/json_encoder.c +++ b/ext/json/json_encoder.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Omar Kilani | | Jakub Zelenka | diff --git a/ext/json/json_parser.y b/ext/json/json_parser.y index 2fd4edfe3693..cf296ed9db62 100644 --- a/ext/json/json_parser.y +++ b/ext/json/json_parser.y @@ -2,15 +2,13 @@ %code top { /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jakub Zelenka | +----------------------------------------------------------------------+ diff --git a/ext/json/json_scanner.re b/ext/json/json_scanner.re index d6eaaf65b2e1..e4d25009132a 100644 --- a/ext/json/json_scanner.re +++ b/ext/json/json_scanner.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jakub Zelenka | +----------------------------------------------------------------------+ diff --git a/ext/json/php_json.h b/ext/json/php_json.h index bbe8be9d60ad..e2728835ed42 100644 --- a/ext/json/php_json.h +++ b/ext/json/php_json.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Omar Kilani | | Jakub Zelenka | diff --git a/ext/json/php_json_encoder.h b/ext/json/php_json_encoder.h index d66d71cb5538..30cc1d564fa5 100644 --- a/ext/json/php_json_encoder.h +++ b/ext/json/php_json_encoder.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jakub Zelenka | +----------------------------------------------------------------------+ diff --git a/ext/json/php_json_parser.h b/ext/json/php_json_parser.h index 8fee3d11c6bf..4a7d64307c43 100644 --- a/ext/json/php_json_parser.h +++ b/ext/json/php_json_parser.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jakub Zelenka | +----------------------------------------------------------------------+ diff --git a/ext/json/php_json_scanner.h b/ext/json/php_json_scanner.h index a6de149391dc..90460cf9952a 100644 --- a/ext/json/php_json_scanner.h +++ b/ext/json/php_json_scanner.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jakub Zelenka | +----------------------------------------------------------------------+ diff --git a/ext/ldap/config.w32 b/ext/ldap/config.w32 index 7dbb353dd80b..c6a7049aa1c6 100644 --- a/ext/ldap/config.w32 +++ b/ext/ldap/config.w32 @@ -24,7 +24,7 @@ if (PHP_LDAP != "no") { AC_DEFINE('HAVE_LDAP_WHOAMI_S', 1); AC_DEFINE('HAVE_LDAP_REFRESH_S', 1); AC_DEFINE('HAVE_LDAP_EXTENDED_OPERATION', 1); - + AC_DEFINE('HAVE_3ARG_SETREBINDPROC', 1); } else { WARNING("ldap not enabled; libraries and headers not found"); } diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index a13b25e1efde..f97761a42a2d 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Amitay Isaacs | | Eric Warnke | @@ -2783,7 +2781,7 @@ PHP_FUNCTION(ldap_modify_batch) case LDAP_MODIFY_BATCH_REPLACE: ldap_operation = LDAP_MOD_REPLACE; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } /* fill in the basic info */ diff --git a/ext/ldap/php_ldap.h b/ext/ldap/php_ldap.h index a8c4a77af801..a8591888fa83 100644 --- a/ext/ldap/php_ldap.h +++ b/ext/ldap/php_ldap.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Amitay Isaacs | | Eric Warnke | diff --git a/ext/lexbor/config.m4 b/ext/lexbor/config.m4 index ee136881c5be..21fabcd0ddb0 100644 --- a/ext/lexbor/config.m4 +++ b/ext/lexbor/config.m4 @@ -22,15 +22,23 @@ PHP_NEW_EXTENSION([lexbor], m4_normalize([ $LEXBOR_DIR/core/shs.c $LEXBOR_DIR/core/str.c $LEXBOR_DIR/core/strtod.c + $LEXBOR_DIR/css/at_rule.c + $LEXBOR_DIR/css/at_rule/state.c + $LEXBOR_DIR/css/blank.c $LEXBOR_DIR/css/css.c + $LEXBOR_DIR/css/declaration.c $LEXBOR_DIR/css/log.c $LEXBOR_DIR/css/parser.c + $LEXBOR_DIR/css/property.c + $LEXBOR_DIR/css/property/state.c + $LEXBOR_DIR/css/rule.c $LEXBOR_DIR/css/selectors/pseudo_state.c $LEXBOR_DIR/css/selectors/pseudo.c $LEXBOR_DIR/css/selectors/selector.c $LEXBOR_DIR/css/selectors/selectors.c $LEXBOR_DIR/css/selectors/state.c $LEXBOR_DIR/css/state.c + $LEXBOR_DIR/css/stylesheet.c $LEXBOR_DIR/css/syntax/anb.c $LEXBOR_DIR/css/syntax/parser.c $LEXBOR_DIR/css/syntax/state.c @@ -38,6 +46,8 @@ PHP_NEW_EXTENSION([lexbor], m4_normalize([ $LEXBOR_DIR/css/syntax/token.c $LEXBOR_DIR/css/syntax/tokenizer.c $LEXBOR_DIR/css/syntax/tokenizer/error.c + $LEXBOR_DIR/css/unit.c + $LEXBOR_DIR/css/value.c $LEXBOR_DIR/dom/interface.c $LEXBOR_DIR/dom/interfaces/attr.c $LEXBOR_DIR/dom/interfaces/cdata_section.c @@ -113,7 +123,9 @@ PHP_NEW_EXTENSION([lexbor], m4_normalize([ $LEXBOR_DIR/html/interfaces/progress_element.c $LEXBOR_DIR/html/interfaces/quote_element.c $LEXBOR_DIR/html/interfaces/script_element.c + $LEXBOR_DIR/html/interfaces/search_element.c $LEXBOR_DIR/html/interfaces/select_element.c + $LEXBOR_DIR/html/interfaces/selectedcontent_element.c $LEXBOR_DIR/html/interfaces/slot_element.c $LEXBOR_DIR/html/interfaces/source_element.c $LEXBOR_DIR/html/interfaces/span_element.c @@ -134,6 +146,7 @@ PHP_NEW_EXTENSION([lexbor], m4_normalize([ $LEXBOR_DIR/html/interfaces/video_element.c $LEXBOR_DIR/html/interfaces/window.c $LEXBOR_DIR/html/parser.c + $LEXBOR_DIR/html/tag.c $LEXBOR_DIR/html/token_attr.c $LEXBOR_DIR/html/token.c $LEXBOR_DIR/html/tokenizer.c @@ -163,8 +176,6 @@ PHP_NEW_EXTENSION([lexbor], m4_normalize([ $LEXBOR_DIR/html/tree/insertion_mode/in_head_noscript.c $LEXBOR_DIR/html/tree/insertion_mode/in_head.c $LEXBOR_DIR/html/tree/insertion_mode/in_row.c - $LEXBOR_DIR/html/tree/insertion_mode/in_select_in_table.c - $LEXBOR_DIR/html/tree/insertion_mode/in_select.c $LEXBOR_DIR/html/tree/insertion_mode/in_table_body.c $LEXBOR_DIR/html/tree/insertion_mode/in_table_text.c $LEXBOR_DIR/html/tree/insertion_mode/in_table.c @@ -186,6 +197,8 @@ PHP_NEW_EXTENSION([lexbor], m4_normalize([ PHP_ADD_BUILD_DIR([ $ext_builddir/ $ext_builddir/$LEXBOR_DIR/core + $ext_builddir/$LEXBOR_DIR/css/at_rule + $ext_builddir/$LEXBOR_DIR/css/property $ext_builddir/$LEXBOR_DIR/css/selectors $ext_builddir/$LEXBOR_DIR/css/syntax/tokenizer $ext_builddir/$LEXBOR_DIR/css/tokenizer diff --git a/ext/lexbor/config.w32 b/ext/lexbor/config.w32 index 900cc91e9dd4..44ddfe1ffae4 100644 --- a/ext/lexbor/config.w32 +++ b/ext/lexbor/config.w32 @@ -8,11 +8,13 @@ ADD_SOURCES("ext/lexbor/lexbor/dom", "interface.c", "lexbor"); ADD_SOURCES("ext/lexbor/lexbor/dom/interfaces", "attr.c cdata_section.c character_data.c comment.c document.c document_fragment.c document_type.c element.c node.c processing_instruction.c shadow_root.c text.c", "lexbor"); ADD_SOURCES("ext/lexbor/lexbor/html/tokenizer", "error.c state_comment.c state_doctype.c state_rawtext.c state_rcdata.c state_script.c state.c", "lexbor"); ADD_SOURCES("ext/lexbor/lexbor/html/tree", "active_formatting.c open_elements.c error.c","lexbor"); -ADD_SOURCES("ext/lexbor/lexbor/html/tree/insertion_mode", "after_after_body.c after_after_frameset.c after_body.c after_frameset.c after_head.c before_head.c before_html.c foreign_content.c in_body.c in_caption.c in_cell.c in_column_group.c in_frameset.c in_head.c in_head_noscript.c initial.c in_row.c in_select.c in_select_in_table.c in_table_body.c in_table.c in_table_text.c in_template.c text.c","lexbor"); -ADD_SOURCES("ext/lexbor/lexbor/html", "encoding.c interface.c parser.c token.c token_attr.c tokenizer.c tree.c","lexbor"); +ADD_SOURCES("ext/lexbor/lexbor/html/tree/insertion_mode", "after_after_body.c after_after_frameset.c after_body.c after_frameset.c after_head.c before_head.c before_html.c foreign_content.c in_body.c in_caption.c in_cell.c in_column_group.c in_frameset.c in_head.c in_head_noscript.c initial.c in_row.c in_table_body.c in_table.c in_table_text.c in_template.c text.c","lexbor"); +ADD_SOURCES("ext/lexbor/lexbor/html", "encoding.c interface.c parser.c tag.c token.c token_attr.c tokenizer.c tree.c","lexbor"); ADD_SOURCES("ext/lexbor/lexbor/encoding", "decode.c encode.c encoding.c multi.c range.c res.c single.c","lexbor"); -ADD_SOURCES("ext/lexbor/lexbor/html/interfaces", "anchor_element.c area_element.c audio_element.c base_element.c body_element.c br_element.c button_element.c canvas_element.c data_element.c data_list_element.c details_element.c dialog_element.c directory_element.c div_element.c d_list_element.c document.c element.c embed_element.c field_set_element.c font_element.c form_element.c frame_element.c frame_set_element.c head_element.c heading_element.c hr_element.c html_element.c iframe_element.c image_element.c input_element.c label_element.c legend_element.c li_element.c link_element.c map_element.c marquee_element.c media_element.c menu_element.c meta_element.c meter_element.c mod_element.c object_element.c o_list_element.c opt_group_element.c option_element.c output_element.c paragraph_element.c param_element.c picture_element.c pre_element.c progress_element.c quote_element.c script_element.c select_element.c slot_element.c source_element.c span_element.c style_element.c table_caption_element.c table_cell_element.c table_col_element.c table_element.c table_row_element.c table_section_element.c template_element.c text_area_element.c time_element.c title_element.c track_element.c u_list_element.c unknown_element.c video_element.c window.c","lexbor"); -ADD_SOURCES("ext/lexbor/lexbor/css", "state.c log.c parser.c css.c","lexbor"); +ADD_SOURCES("ext/lexbor/lexbor/html/interfaces", "anchor_element.c area_element.c audio_element.c base_element.c body_element.c br_element.c button_element.c canvas_element.c data_element.c data_list_element.c details_element.c dialog_element.c directory_element.c div_element.c d_list_element.c document.c element.c embed_element.c field_set_element.c font_element.c form_element.c frame_element.c frame_set_element.c head_element.c heading_element.c hr_element.c html_element.c iframe_element.c image_element.c input_element.c label_element.c legend_element.c li_element.c link_element.c map_element.c marquee_element.c media_element.c menu_element.c meta_element.c meter_element.c mod_element.c object_element.c o_list_element.c opt_group_element.c option_element.c output_element.c paragraph_element.c param_element.c picture_element.c pre_element.c progress_element.c quote_element.c script_element.c search_element.c select_element.c selectedcontent_element.c slot_element.c source_element.c span_element.c style_element.c table_caption_element.c table_cell_element.c table_col_element.c table_element.c table_row_element.c table_section_element.c template_element.c text_area_element.c time_element.c title_element.c track_element.c u_list_element.c unknown_element.c video_element.c window.c", "dom"); +ADD_SOURCES("ext/lexbor/lexbor/css", "at_rule.c blank.c css.c declaration.c log.c parser.c property.c rule.c state.c stylesheet.c unit.c value.c", "dom"); +ADD_SOURCES("ext/lexbor/lexbor/css/at_rule", "state.c", "dom"); +ADD_SOURCES("ext/lexbor/lexbor/css/property", "state.c", "dom"); ADD_SOURCES("ext/lexbor/lexbor/css/selectors", "state.c selectors.c selector.c pseudo_state.c pseudo.c","lexbor"); ADD_SOURCES("ext/lexbor/lexbor/css/syntax", "state.c parser.c syntax.c anb.c tokenizer.c token.c","lexbor"); ADD_SOURCES("ext/lexbor/lexbor/css/syntax/tokenizer", "error.c","lexbor"); diff --git a/ext/lexbor/lexbor/core/base.h b/ext/lexbor/lexbor/core/base.h index d3a04880f220..e488dcf7334b 100644 --- a/ext/lexbor/lexbor/core/base.h +++ b/ext/lexbor/lexbor/core/base.h @@ -27,7 +27,7 @@ extern "C" { #include "lexbor/core/lexbor.h" #define LEXBOR_VERSION_MAJOR 2 -#define LEXBOR_VERSION_MINOR 0 +#define LEXBOR_VERSION_MINOR 7 #define LEXBOR_VERSION_PATCH 0 #define LEXBOR_VERSION_STRING LEXBOR_STRINGIZE(LEXBOR_VERSION_MAJOR) "." \ @@ -39,6 +39,10 @@ extern "C" { #define lexbor_max(val1, val2) ((val1) > (val2) ? (val1) : (val2)) #define lexbor_min(val1, val2) ((val1) < (val2) ? (val1) : (val2)) +#define LEXBOR_STR_RES_MAP_CHAR_OTHER 0x00 +#define LEXBOR_STR_RES_MAP_CHAR_A_Z_a_z 0x01 +#define LEXBOR_STR_RES_MAP_CHAR_WHITESPACE 0x02 +#define LEXBOR_STR_RES_SLIP 0xFF /* * Very important!!! diff --git a/ext/lexbor/lexbor/core/def.h b/ext/lexbor/lexbor/core/def.h index 5a48f59e994d..c8b94400a2df 100644 --- a/ext/lexbor/lexbor/core/def.h +++ b/ext/lexbor/lexbor/core/def.h @@ -54,4 +54,6 @@ #define LXB_EXTERN extern LXB_API +#define lxb_size(_size) ((size_t) (_size)) + #endif /* LEXBOR_DEF_H */ diff --git a/ext/lexbor/lexbor/core/diyfp.c b/ext/lexbor/lexbor/core/diyfp.c index 62020bbc645e..7bdbcbbcb08f 100644 --- a/ext/lexbor/lexbor/core/diyfp.c +++ b/ext/lexbor/lexbor/core/diyfp.c @@ -1,16 +1,44 @@ /* - * Copyright (C) Alexander Borisov + * Copyright (C) 2015-2019 NGINX, Inc. + * Copyright (C) 2019-2025 F5, Inc. + * Copyright (C) 2015-2021 Igor Sysoev + * Copyright (C) 2017-2025 Dmitry Volyntsev + * Copyright (C) 2019-2022 Alexander Borisov + * Copyright (C) 2022-2025 Vadim Zhestikov + * All rights reserved. * - * Based on nxt_diyfp.c from NGINX NJS project + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * Copyright (C) Dmitry Volyntsev - * Copyright (C) NGINX, Inc. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) Alexander Borisov * + * Based on nxt_diyfp.h from NGINX NJS project * An internal diy_fp implementation. * For details, see Loitsch, Florian. "Printing floating-point numbers quickly * and accurately with integers." ACM Sigplan Notices 45.6 (2010): 233-243. */ + #include "lexbor/core/diyfp.h" diff --git a/ext/lexbor/lexbor/core/diyfp.h b/ext/lexbor/lexbor/core/diyfp.h index 47fedb9da997..86c5336f2e03 100644 --- a/ext/lexbor/lexbor/core/diyfp.h +++ b/ext/lexbor/lexbor/core/diyfp.h @@ -1,11 +1,38 @@ /* - * Copyright (C) Alexander Borisov + * Copyright (C) 2015-2019 NGINX, Inc. + * Copyright (C) 2019-2025 F5, Inc. + * Copyright (C) 2015-2021 Igor Sysoev + * Copyright (C) 2017-2025 Dmitry Volyntsev + * Copyright (C) 2019-2022 Alexander Borisov + * Copyright (C) 2022-2025 Vadim Zhestikov + * All rights reserved. * - * Based on nxt_diyfp.h from NGINX NJS project + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * Copyright (C) Dmitry Volyntsev - * Copyright (C) NGINX, Inc. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) Alexander Borisov * + * Based on nxt_diyfp.h from NGINX NJS project * An internal diy_fp implementation. * For details, see Loitsch, Florian. "Printing floating-point numbers quickly * and accurately with integers." ACM Sigplan Notices 45.6 (2010): 233-243. diff --git a/ext/lexbor/lexbor/core/dtoa.c b/ext/lexbor/lexbor/core/dtoa.c index b1a4ee03258d..7da7ce013227 100644 --- a/ext/lexbor/lexbor/core/dtoa.c +++ b/ext/lexbor/lexbor/core/dtoa.c @@ -1,39 +1,36 @@ /* - * Copyright (C) Alexander Borisov - * - * Based on nxt_dtoa.c from NGINX NJS project - * - * Copyright (C) Dmitry Volyntsev - * Copyright (C) NGINX, Inc. - * - * Grisu2 algorithm implementation for printing floating-point numbers based - * upon the work of Milo Yip and Doug Currie. - * - * For algorithm information, see Loitsch, Florian. "Printing - * floating-point numbers quickly and accurately with integers." ACM Sigplan - * Notices 45.6 (2010): 233-243. - * - * Copyright (C) 2015 Doug Currie - * based on dtoa_milo.h - * Copyright (C) 2014 Milo Yip + * Copyright (C) 2015-2019 NGINX, Inc. + * Copyright (C) 2019-2025 F5, Inc. + * Copyright (C) 2015-2021 Igor Sysoev + * Copyright (C) 2017-2025 Dmitry Volyntsev + * Copyright (C) 2019-2022 Alexander Borisov + * Copyright (C) 2022-2025 Vadim Zhestikov + * All rights reserved. * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) Alexander Borisov */ #include "lexbor/core/str.h" diff --git a/ext/lexbor/lexbor/core/dtoa.h b/ext/lexbor/lexbor/core/dtoa.h index c60c28803b7b..2d569cfff973 100644 --- a/ext/lexbor/lexbor/core/dtoa.h +++ b/ext/lexbor/lexbor/core/dtoa.h @@ -1,10 +1,36 @@ /* - * Copyright (C) Alexander Borisov + * Copyright (C) 2015-2019 NGINX, Inc. + * Copyright (C) 2019-2025 F5, Inc. + * Copyright (C) 2015-2021 Igor Sysoev + * Copyright (C) 2017-2025 Dmitry Volyntsev + * Copyright (C) 2019-2022 Alexander Borisov + * Copyright (C) 2022-2025 Vadim Zhestikov + * All rights reserved. * - * Based on nxt_dtoa.h from NGINX NJS project + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * Copyright (C) Dmitry Volyntsev - * Copyright (C) Nginx, Inc. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) Alexander Borisov */ #ifndef LEXBOR_DTOA_H diff --git a/ext/lexbor/lexbor/core/hash.c b/ext/lexbor/lexbor/core/hash.c index 2fdd4caa9d98..c16466effd35 100644 --- a/ext/lexbor/lexbor/core/hash.c +++ b/ext/lexbor/lexbor/core/hash.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -10,9 +10,10 @@ #include "lexbor/core/str.h" -#define LEXBOR_STR_RES_MAP_LOWERCASE -#define LEXBOR_STR_RES_MAP_UPPERCASE -#include "lexbor/core/str_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_uppercase[256]; +#endif /* Insert variable. */ diff --git a/ext/lexbor/lexbor/core/in.c b/ext/lexbor/lexbor/core/in.c index 951e585cbd39..363256b732a4 100644 --- a/ext/lexbor/lexbor/core/in.c +++ b/ext/lexbor/lexbor/core/in.c @@ -1,11 +1,10 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ #include "lexbor/core/in.h" -#include "lexbor/core/str_res.h" lexbor_in_t * diff --git a/ext/lexbor/lexbor/core/shs.c b/ext/lexbor/lexbor/core/shs.c index 679143bf45cc..c2753457d74a 100644 --- a/ext/lexbor/lexbor/core/shs.c +++ b/ext/lexbor/lexbor/core/shs.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2019 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,10 +7,10 @@ #include "lexbor/core/shs.h" #include "lexbor/core/str.h" -#define LEXBOR_STR_RES_MAP_LOWERCASE -#define LEXBOR_STR_RES_MAP_UPPERCASE -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_uppercase[256]; +#endif #define lexbor_shs_make_id_m(key, size, table_size) \ (((((key[0] * key[size - 1]) * key[0]) + size) % table_size) + 0x01) diff --git a/ext/lexbor/lexbor/core/str.c b/ext/lexbor/lexbor/core/str.c index bf8fc547d88d..3d164ebf82dd 100644 --- a/ext/lexbor/lexbor/core/str.c +++ b/ext/lexbor/lexbor/core/str.c @@ -1,14 +1,10 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ #include "lexbor/core/str.h" - -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#define LEXBOR_STR_RES_MAP_LOWERCASE -#define LEXBOR_STR_RES_MAP_UPPERCASE #include "lexbor/core/str_res.h" @@ -381,6 +377,30 @@ lexbor_str_whitespace_from_end(lexbor_str_t *target) return 0; } +lxb_char_t * +lexbor_str_copy_to(lexbor_str_t *str, const lxb_char_t *buff, size_t length) +{ + lxb_char_t *data_begin; + + data_begin = &str->data[str->length]; + memcpy(data_begin, buff, sizeof(lxb_char_t) * length); + + str->length += length; + + return data_begin; +} + +lxb_char_t * +lexbor_str_copy_to_with_null(lexbor_str_t *str, + const lxb_char_t *buff, size_t length) +{ + lxb_char_t *data_begin = lexbor_str_copy_to(str, buff, length); + + str->data[str->length] = '\0'; + + return data_begin; +} + /* * Data utils * TODO: All functions need optimization. diff --git a/ext/lexbor/lexbor/core/str.h b/ext/lexbor/lexbor/core/str.h index 3bee14537387..8e5f3806fe93 100644 --- a/ext/lexbor/lexbor/core/str.h +++ b/ext/lexbor/lexbor/core/str.h @@ -21,7 +21,6 @@ extern "C" { #define lexbor_str_len(str) lexbor_str_get(str, length) #define lexbor_str(p) {.data = (lxb_char_t *) (p), sizeof(p) - 1} - #define lexbor_str_check_size_arg_m(str, size, mraw, plus_len, return_fail) \ do { \ void *tmp; \ @@ -117,6 +116,12 @@ lexbor_str_whitespace_from_begin(lexbor_str_t *target); LXB_API size_t lexbor_str_whitespace_from_end(lexbor_str_t *target); +LXB_API lxb_char_t * +lexbor_str_copy_to(lexbor_str_t *str, const lxb_char_t *buff, size_t length); + +LXB_API lxb_char_t * +lexbor_str_copy_to_with_null(lexbor_str_t *str, + const lxb_char_t *buff, size_t length); /* Data utils */ /* diff --git a/ext/lexbor/lexbor/core/str_res.h b/ext/lexbor/lexbor/core/str_res.h index cebbda8aa534..be34a0eeb42c 100644 --- a/ext/lexbor/lexbor/core/str_res.h +++ b/ext/lexbor/lexbor/core/str_res.h @@ -1,32 +1,16 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ -#ifndef LEXBOR_STR_RES_H -#define LEXBOR_STR_RES_H -#define LEXBOR_STR_RES_MAP_CHAR_OTHER '\00' -#define LEXBOR_STR_RES_MAP_CHAR_A_Z_a_z '\01' -#define LEXBOR_STR_RES_MAP_CHAR_WHITESPACE '\02' +LXB_API const lxb_char_t +lexbor_str_res_ansi_replacement_character[4] = "\xEF\xBF\xBD"; -#define LEXBOR_STR_RES_SLIP 0xFF - -#endif /* LEXBOR_STR_RES_H */ - -#ifdef LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#ifndef LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER_ENABLED -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER_ENABLED -static const lxb_char_t -lexbor_str_res_ansi_replacement_character[] = "\xEF\xBF\xBD"; -#endif /* LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER_ENABLED */ -#endif /* LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER */ - -#ifdef LEXBOR_STR_RES_MAP_NUM -#ifndef LEXBOR_STR_RES_MAP_NUM_ENABLED -#define LEXBOR_STR_RES_MAP_NUM_ENABLED -static const lxb_char_t lexbor_str_res_map_num[] = { +LXB_API const lxb_char_t +lexbor_str_res_map_num[256] = +{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -57,14 +41,10 @@ static const lxb_char_t lexbor_str_res_map_num[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -#endif /* LEXBOR_STR_RES_MAP_NUM_ENABLED */ -#endif /* LEXBOR_STR_RES_MAP_NUM */ - -#ifdef LEXBOR_STR_RES_MAP_HEX -#ifndef LEXBOR_STR_RES_MAP_HEX_ENABLED -#define LEXBOR_STR_RES_MAP_HEX_ENABLED -static const lxb_char_t lexbor_str_res_map_hex[] = { +LXB_API const lxb_char_t +lexbor_str_res_map_hex[256] = +{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -95,14 +75,10 @@ static const lxb_char_t lexbor_str_res_map_hex[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -#endif /* LEXBOR_STR_RES_MAP_HEX_ENABLED */ -#endif /* LEXBOR_STR_RES_MAP_HEX */ - -#ifdef LEXBOR_STR_RES_MAP_LOWERCASE -#ifndef LEXBOR_STR_RES_MAP_LOWERCASE_ENABLED -#define LEXBOR_STR_RES_MAP_LOWERCASE_ENABLED -static const lxb_char_t lexbor_str_res_map_lowercase[] = { +LXB_API const lxb_char_t +lexbor_str_res_map_lowercase[256] = +{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, @@ -133,14 +109,10 @@ static const lxb_char_t lexbor_str_res_map_lowercase[] = { 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; -#endif /* LEXBOR_STR_RES_MAP_LOWERCASE_ENABLED */ -#endif /* LEXBOR_STR_RES_MAP_LOWERCASE */ - -#ifdef LEXBOR_STR_RES_MAP_UPPERCASE -#ifndef LEXBOR_STR_RES_MAP_UPPERCASE_ENABLED -#define LEXBOR_STR_RES_MAP_UPPERCASE_ENABLED -static const lxb_char_t lexbor_str_res_map_uppercase[] = { +LXB_API const lxb_char_t +lexbor_str_res_map_uppercase[256] = +{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, @@ -171,14 +143,10 @@ static const lxb_char_t lexbor_str_res_map_uppercase[] = { 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }; -#endif /* LEXBOR_STR_RES_MAP_UPPERCASE_ENABLED */ -#endif /* LEXBOR_STR_RES_MAP_UPPERCASE */ - -#ifdef LEXBOR_STR_RES_REPLACEMENT_CHARACTER -#ifndef LEXBOR_STR_RES_REPLACEMENT_CHARACTER_ENABLED -#define LEXBOR_STR_RES_REPLACEMENT_CHARACTER_ENABLED -static const size_t lexbor_str_res_replacement_character[] = { +LXB_API const size_t +lexbor_str_res_replacement_character[160] = +{ 65533, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, @@ -198,14 +166,10 @@ static const size_t lexbor_str_res_replacement_character[] = { 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, 157, 382, 376 }; -#endif /* LEXBOR_STR_RES_REPLACEMENT_CHARACTER_ENABLED */ -#endif /* LEXBOR_STR_RES_REPLACEMENT_CHARACTER */ - -#ifdef LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER -#ifndef LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER_ENABLED -#define LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER_ENABLED -static const size_t lexbor_str_res_alphanumeric_character[] = { +LXB_API const size_t +lexbor_str_res_alphanumeric_character[256] = +{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -236,14 +200,10 @@ static const size_t lexbor_str_res_alphanumeric_character[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -#endif /* LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER_ENABLED */ -#endif /* LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER */ - -#ifdef LEXBOR_STR_RES_ALPHA_CHARACTER -#ifndef LEXBOR_STR_RES_ALPHA_CHARACTER_ENABLED -#define LEXBOR_STR_RES_ALPHA_CHARACTER_ENABLED -static const size_t lexbor_str_res_alpha_character[] = { +LXB_API const size_t +lexbor_str_res_alpha_character[256] = +{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -274,14 +234,10 @@ static const size_t lexbor_str_res_alpha_character[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -#endif /* LEXBOR_STR_RES_ALPHA_CHARACTER_ENABLED */ -#endif /* LEXBOR_STR_RES_ALPHA_CHARACTER */ - -#ifdef LEXBOR_TOKENIZER_CHARS_MAP -#ifndef LEXBOR_TOKENIZER_CHARS_MAP_ENABLED -#define LEXBOR_TOKENIZER_CHARS_MAP_ENABLED -static const unsigned char lexbor_tokenizer_chars_map[] = { +LXB_API const unsigned char +lexbor_tokenizer_chars_map[256] = +{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x02, 0xff, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -312,35 +268,24 @@ static const unsigned char lexbor_tokenizer_chars_map[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -#endif /* LEXBOR_TOKENIZER_CHARS_MAP_ENABLED */ -#endif /* LEXBOR_TOKENIZER_CHARS_MAP */ - -#ifdef LEXBOR_STR_RES_MAP_HEX_TO_CHAR -#ifndef LEXBOR_STR_RES_MAP_HEX_TO_CHAR_ENABLED -#define LEXBOR_STR_RES_MAP_HEX_TO_CHAR_ENABLED -static const lxb_char_t lexbor_str_res_map_hex_to_char[] = { +LXB_API const lxb_char_t +lexbor_str_res_map_hex_to_char[17] = +{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00 }; -#endif /* LEXBOR_STR_RES_MAP_HEX_TO_CHAR_ENABLED */ -#endif /* LEXBOR_STR_RES_MAP_HEX_TO_CHAR */ -#ifdef LEXBOR_STR_RES_MAP_HEX_TO_CHAR_LOWERCASE -#ifndef LEXBOR_STR_RES_MAP_HEX_TO_CHAR_LOWERCASE_ENABLED -#define LEXBOR_STR_RES_MAP_HEX_TO_CHAR_LOWERCASE_ENABLED -static const lxb_char_t lexbor_str_res_map_hex_to_char_lowercase[] = { +LXB_API const lxb_char_t +lexbor_str_res_map_hex_to_char_lowercase[17] = +{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00 }; -#endif /* LEXBOR_STR_RES_MAP_HEX_TO_CHAR_LOWERCASE_ENABLED */ -#endif /* LEXBOR_STR_RES_MAP_HEX_TO_CHAR_LOWERCASE */ - -#ifdef LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE -#ifndef LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_ENABLED -#define LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_ENABLED -static const char * lexbor_str_res_char_to_two_hex_value[257] = { +LXB_API const char * +lexbor_str_res_char_to_two_hex_value[257] = +{ "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10", "11", "12", "13", "14", "15", "16", "17", @@ -375,13 +320,10 @@ static const char * lexbor_str_res_char_to_two_hex_value[257] = { "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF", NULL }; -#endif /* LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_ENABLED */ -#endif /* LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE */ -#ifdef LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_LOWERCASE -#ifndef LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_LOWERCASE_ENABLED -#define LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_LOWERCASE_ENABLED -static const char * lexbor_str_res_char_to_two_hex_value_lowercase[257] = { +LXB_API const char * +lexbor_str_res_char_to_two_hex_value_lowercase[257] = +{ "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", @@ -416,5 +358,3 @@ static const char * lexbor_str_res_char_to_two_hex_value_lowercase[257] = { "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff", NULL }; -#endif /* LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_LOWERCASE_ENABLED */ -#endif /* LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_LOWERCASE */ diff --git a/ext/lexbor/lexbor/core/strtod.c b/ext/lexbor/lexbor/core/strtod.c index 6389fc3156fc..2dad45c109b5 100644 --- a/ext/lexbor/lexbor/core/strtod.c +++ b/ext/lexbor/lexbor/core/strtod.c @@ -1,14 +1,36 @@ /* - * Copyright (C) Alexander Borisov - * - * Based on nxt_strtod.c from NGINX NJS project + * Copyright (C) 2015-2019 NGINX, Inc. + * Copyright (C) 2019-2025 F5, Inc. + * Copyright (C) 2015-2021 Igor Sysoev + * Copyright (C) 2017-2025 Dmitry Volyntsev + * Copyright (C) 2019-2022 Alexander Borisov + * Copyright (C) 2022-2025 Vadim Zhestikov + * All rights reserved. * - * An internal strtod() implementation based upon V8 src/strtod.cc - * without bignum support. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * Copyright 2012 the V8 project authors. All rights reserved. - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) Alexander Borisov */ #include diff --git a/ext/lexbor/lexbor/core/strtod.h b/ext/lexbor/lexbor/core/strtod.h index 7f15706bc946..0f834bab4868 100644 --- a/ext/lexbor/lexbor/core/strtod.h +++ b/ext/lexbor/lexbor/core/strtod.h @@ -1,10 +1,36 @@ /* - * Copyright (C) Alexander Borisov + * Copyright (C) 2015-2019 NGINX, Inc. + * Copyright (C) 2019-2025 F5, Inc. + * Copyright (C) 2015-2021 Igor Sysoev + * Copyright (C) 2017-2025 Dmitry Volyntsev + * Copyright (C) 2019-2022 Alexander Borisov + * Copyright (C) 2022-2025 Vadim Zhestikov + * All rights reserved. * - * Based on nxt_strtod.h from NGINX NJS project + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * Copyright (C) Dmitry Volyntsev - * Copyright (C) Nginx, Inc. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (C) Alexander Borisov */ #ifndef LEXBOR_STRTOD_H diff --git a/ext/lexbor/lexbor/css/at_rule.c b/ext/lexbor/lexbor/css/at_rule.c new file mode 100644 index 000000000000..6c5435d22e06 --- /dev/null +++ b/ext/lexbor/lexbor/css/at_rule.c @@ -0,0 +1,449 @@ +/* + * Copyright (C) 2021-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/at_rule.h" +#include "lexbor/css/css.h" +#include "lexbor/css/parser.h" +#include "lexbor/css/stylesheet.h" +#include "lexbor/css/at_rule/state.h" +#include "lexbor/css/at_rule/types.h" +#include "lexbor/css/at_rule/res.h" +#include "lexbor/core/serialize.h" + + +const lxb_css_entry_at_rule_data_t * +lxb_css_at_rule_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_at_rule_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_entry_at_rule_data_t * +lxb_css_at_rule_by_id(uintptr_t id) +{ + return &lxb_css_at_rule_data[id]; +} + +lxb_css_rule_at_t * +lxb_css_at_rule_create(lxb_css_parser_t *parser, + const lxb_char_t *name, size_t length, + const lxb_css_entry_at_rule_data_t **out_entry) +{ + void *prop; + const lxb_css_entry_at_rule_data_t *entry; + lxb_css_at_rule__custom_t *custom; + lxb_css_rule_at_t *at; + + at = lxb_css_rule_at_create(parser->memory); + if (at == NULL) { + return NULL; + } + + entry = lxb_css_at_rule_by_name(name, length); + if (entry == NULL) { + entry = lxb_css_at_rule_by_id(LXB_CSS_AT_RULE__CUSTOM); + + prop = entry->create(parser->memory); + if (prop == NULL) { + goto failed; + } + + custom = prop; + + (void) lexbor_str_init(&custom->name, parser->memory->mraw, length); + if (custom->name.data == NULL) { + goto failed; + } + + memcpy(custom->name.data, name, length); + + custom->name.length = length; + custom->name.data[custom->name.length] = 0x00; + } + else { + prop = entry->create(parser->memory); + if (prop == NULL) { + goto failed; + } + } + + at->type = entry->unique; + at->u.user = prop; + + if (out_entry != NULL) { + *out_entry = entry; + } + + return at; + +failed: + + if (prop != NULL) { + (void) entry->destroy(parser->memory, prop, true); + } + + if (at != NULL) { + (void) lxb_css_rule_at_destroy(at, true); + } + + if (out_entry != NULL) { + *out_entry = NULL; + } + + return NULL; +} + +void * +lxb_css_at_rule_destroy(lxb_css_memory_t *memory, void *value, + lxb_css_at_rule_type_t type, bool self_destroy) +{ + const lxb_css_entry_at_rule_data_t *data; + + data = lxb_css_at_rule_by_id(type); + if (data == NULL) { + return value; + } + + return data->destroy(memory, value, self_destroy); +} + +lxb_status_t +lxb_css_at_rule_convert_to_undef(lxb_css_parser_t *parser, + lxb_css_rule_at_t *at) +{ + lxb_css_at_rule__undef_t *undef; + + undef = lxb_css_at_rule__undef_create(parser->memory); + if (undef == NULL) { + return LXB_STATUS_ERROR_MEMORY_ALLOCATION; + } + + undef->type = at->type; + + (void) lxb_css_at_rule_destroy(parser->memory, at, undef->type, false); + + at->type = LXB_CSS_AT_RULE__UNDEF; + at->u.undef = undef; + + return lxb_css_make_data(parser, &at->u.undef->prelude, + at->prelude_begin, at->prelude_end); +} + +lxb_status_t +lxb_css_at_rule_serialize(const void *style, lxb_css_at_rule_type_t type, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_entry_at_rule_data_t *data; + + data = lxb_css_at_rule_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + return data->serialize(style, cb, ctx); +} + +lxb_status_t +lxb_css_at_rule_serialize_str(const void *style, lxb_css_at_rule_type_t type, + lexbor_mraw_t *mraw, lexbor_str_t *str) +{ + const lxb_css_entry_at_rule_data_t *data; + + data = lxb_css_at_rule_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + return lxb_css_serialize_str_handler(style, str, mraw, data->serialize); +} + +lxb_status_t +lxb_css_at_rule_serialize_name(const void *style, lxb_css_at_rule_type_t type, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_entry_at_rule_data_t *data; + + if (type == LXB_CSS_AT_RULE__UNDEF) { + return lxb_css_at_rule__undef_serialize_name(style, cb, ctx); + } + else if (type == LXB_CSS_AT_RULE__CUSTOM) { + return lxb_css_at_rule__custom_serialize_name(style, cb, ctx); + } + + data = lxb_css_at_rule_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + return cb(data->name, data->length, ctx); +} + +lxb_status_t +lxb_css_at_rule_serialize_name_str(const void *style, lxb_css_at_rule_type_t type, + lexbor_mraw_t *mraw, lexbor_str_t *str) +{ + const lxb_css_entry_at_rule_data_t *data; + + if (type == LXB_CSS_AT_RULE__UNDEF) { + return lxb_css_serialize_str_handler(style, str, mraw, + lxb_css_at_rule__undef_serialize_name); + } + else if (type == LXB_CSS_AT_RULE__CUSTOM) { + return lxb_css_serialize_str_handler(style, str, mraw, + lxb_css_at_rule__custom_serialize_name); + } + + data = lxb_css_at_rule_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + if (str->data == NULL) { + lexbor_str_init(str, mraw, data->length); + if (str->data == NULL) { + return LXB_STATUS_ERROR_MEMORY_ALLOCATION; + } + } + + (void) lexbor_str_append(str, mraw, data->name, data->length); + + return LXB_STATUS_OK; +} + +/* _undef. */ + +void * +lxb_css_at_rule__undef_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_at_rule__undef_t)); +} + +void * +lxb_css_at_rule__undef_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + if (style == NULL) { + return NULL; + } + + if (self_destroy) { + return lexbor_mraw_free(memory->mraw, style); + } + + return style; +} + +lxb_status_t +lxb_css_at_rule__undef_serialize(const void *at, lexbor_serialize_cb_f cb, + void *ctx) +{ + lxb_status_t status; + const lxb_css_entry_at_rule_data_t *data; + const lxb_css_at_rule__undef_t *undef = at; + + static const lxb_char_t wc_str[] = " "; + static const lxb_char_t lb_str[] = "{"; + static const lxb_char_t rb_str[] = "}"; + static const lxb_char_t sm_str[] = ";"; + + data = lxb_css_at_rule_by_id(undef->type); + if (data == NULL) { + return LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + if (undef->prelude.data != NULL) { + lexbor_serialize_write(cb, wc_str, (sizeof(wc_str) - 1), ctx, status); + lexbor_serialize_write(cb, undef->prelude.data, undef->prelude.length, + ctx, status); + } + + if (undef->block != NULL) { + lexbor_serialize_write(cb, lb_str, (sizeof(lb_str) - 1), ctx, status); + + status = lxb_css_rule_list_serialize(undef->block, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, rb_str, (sizeof(rb_str) - 1), ctx, status); + } + else { + lexbor_serialize_write(cb, sm_str, (sizeof(sm_str) - 1), ctx, status); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_at_rule__undef_serialize_name(const void *at, lexbor_serialize_cb_f cb, + void *ctx) +{ + const lxb_css_entry_at_rule_data_t *data; + const lxb_css_at_rule__undef_t *undef = at; + + data = lxb_css_at_rule_by_id(undef->type); + if (data == NULL) { + return LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + return cb(data->name, data->length, ctx); +} + +/* _custom. */ + +void * +lxb_css_at_rule__custom_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_at_rule__custom_t)); +} + +void * +lxb_css_at_rule__custom_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + if (style == NULL) { + return NULL; + } + + if (self_destroy) { + return lexbor_mraw_free(memory->mraw, style); + } + + return style; +} + +lxb_status_t +lxb_css_at_rule__custom_serialize(const void *at, lexbor_serialize_cb_f cb, + void *ctx) +{ + lxb_status_t status; + const lxb_css_at_rule__custom_t *custom = at; + + static const lxb_char_t ws_str[] = " "; + static const lxb_char_t lb_str[] = "{"; + static const lxb_char_t rb_str[] = "}"; + + + if (custom->prelude.data != NULL) { + lexbor_serialize_write(cb, ws_str, (sizeof(ws_str) - 1), ctx, status); + lexbor_serialize_write(cb, custom->prelude.data, custom->prelude.length, + ctx, status); + } + + if (custom->block != NULL) { + lexbor_serialize_write(cb, lb_str, (sizeof(lb_str) - 1), ctx, status); + + status = lxb_css_rule_list_serialize(custom->block, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, rb_str, (sizeof(rb_str) - 1), ctx, status); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_at_rule__custom_serialize_name(const void *at, lexbor_serialize_cb_f cb, + void *ctx) +{ + const lxb_css_at_rule__custom_t *custom = at; + + return cb(custom->name.data, custom->name.length, ctx); +} + +/* Media. */ + +void * +lxb_css_at_rule_media_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_at_rule_media_t)); +} + +void * +lxb_css_at_rule_media_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_at_rule__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_at_rule_media_serialize(const void *style, lexbor_serialize_cb_f cb, + void *ctx) +{ + return LXB_STATUS_OK; +} + +/* Namespace. */ + +void * +lxb_css_at_rule_namespace_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_at_rule_namespace_t)); +} + +void * +lxb_css_at_rule_namespace_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_at_rule__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_at_rule_namespace_serialize(const void *style, lexbor_serialize_cb_f cb, + void *ctx) +{ + return LXB_STATUS_OK; +} + +/* Font-face. */ + +void * +lxb_css_at_rule_font_face_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_at_rule_font_face_t)); +} + +void * +lxb_css_at_rule_font_face_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_at_rule__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_at_rule_font_face_serialize(const void *font_face, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_at_rule_font_face_t *ff = font_face; + + static const lxb_char_t lb_str[] = " {"; + static const lxb_char_t rb_str[] = "}"; + + if (ff->block != NULL) { + lexbor_serialize_write(cb, lb_str, (sizeof(lb_str) - 1), ctx, status); + + status = lxb_css_rule_list_serialize(ff->block, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, rb_str, (sizeof(rb_str) - 1), ctx, status); + } + + return LXB_STATUS_OK; +} diff --git a/ext/lexbor/lexbor/css/at_rule.h b/ext/lexbor/lexbor/css/at_rule.h index a11455c14cd0..cacfa4c8cf2d 100644 --- a/ext/lexbor/lexbor/css/at_rule.h +++ b/ext/lexbor/lexbor/css/at_rule.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -19,19 +19,19 @@ extern "C" { typedef struct { lxb_css_at_rule_type_t type; lexbor_str_t prelude; - lexbor_str_t block; + lxb_css_rule_list_t *block; } lxb_css_at_rule__undef_t; typedef struct { - lexbor_str_t name; - lexbor_str_t prelude; - lexbor_str_t block; + lexbor_str_t name; + lexbor_str_t prelude; + lxb_css_rule_list_t *block; } lxb_css_at_rule__custom_t; typedef struct { - uintptr_t reserved; + lxb_css_rule_list_t *block; } lxb_css_at_rule_media_t; @@ -40,17 +40,31 @@ typedef struct { } lxb_css_at_rule_namespace_t; +typedef struct { + lxb_css_rule_list_t *block; +} +lxb_css_at_rule_font_face_t; -LXB_API const lxb_css_entry_data_t * + +LXB_API const lxb_css_entry_at_rule_data_t * lxb_css_at_rule_by_name(const lxb_char_t *name, size_t length); -LXB_API const lxb_css_entry_data_t * +LXB_API const lxb_css_entry_at_rule_data_t * lxb_css_at_rule_by_id(uintptr_t id); +LXB_API lxb_css_rule_at_t * +lxb_css_at_rule_create(lxb_css_parser_t *parser, + const lxb_char_t *name, size_t length, + const lxb_css_entry_at_rule_data_t **out_entry); + LXB_API void * lxb_css_at_rule_destroy(lxb_css_memory_t *memory, void *value, lxb_css_at_rule_type_t type, bool self_destroy); +LXB_API lxb_status_t +lxb_css_at_rule_convert_to_undef(lxb_css_parser_t *parser, + lxb_css_rule_at_t *at); + LXB_API lxb_status_t lxb_css_at_rule_serialize(const void *style, lxb_css_at_rule_type_t type, lexbor_serialize_cb_f cb, void *ctx); @@ -73,10 +87,6 @@ LXB_API void * lxb_css_at_rule__undef_destroy(lxb_css_memory_t *memory, void *style, bool self_destroy); LXB_API lxb_status_t -lxb_css_at_rule__undef_make(lxb_css_parser_t *parser, - lxb_css_at_rule__undef_t *undef, - const lxb_css_syntax_at_rule_offset_t *at_rule); -LXB_API lxb_status_t lxb_css_at_rule__undef_serialize(const void *style, lexbor_serialize_cb_f cb, void *ctx); LXB_API lxb_status_t @@ -92,10 +102,6 @@ LXB_API void * lxb_css_at_rule__custom_destroy(lxb_css_memory_t *memory, void *style, bool self_destroy); LXB_API lxb_status_t -lxb_css_at_rule__custom_make(lxb_css_parser_t *parser, - lxb_css_at_rule__custom_t *custom, - const lxb_css_syntax_at_rule_offset_t *at_rule); -LXB_API lxb_status_t lxb_css_at_rule__custom_serialize(const void *style, lexbor_serialize_cb_f cb, void *ctx); LXB_API lxb_status_t @@ -126,6 +132,18 @@ LXB_API lxb_status_t lxb_css_at_rule_namespace_serialize(const void *style, lexbor_serialize_cb_f cb, void *ctx); +/* Font-face. */ + +LXB_API void * +lxb_css_at_rule_font_face_create(lxb_css_memory_t *memory); + +LXB_API void * +lxb_css_at_rule_font_face_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy); + +LXB_API lxb_status_t +lxb_css_at_rule_font_face_serialize(const void *style, lexbor_serialize_cb_f cb, + void *ctx); #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/css/at_rule/const.h b/ext/lexbor/lexbor/css/at_rule/const.h index 961f933a2367..29ba3dd95488 100644 --- a/ext/lexbor/lexbor/css/at_rule/const.h +++ b/ext/lexbor/lexbor/css/at_rule/const.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -21,9 +21,10 @@ enum { LXB_CSS_AT_RULE__UNDEF = 0x0000, LXB_CSS_AT_RULE__CUSTOM = 0x0001, - LXB_CSS_AT_RULE_MEDIA = 0x0002, - LXB_CSS_AT_RULE_NAMESPACE = 0x0003, - LXB_CSS_AT_RULE__LAST_ENTRY = 0x0004 + LXB_CSS_AT_RULE_FONT_FACE = 0x0002, + LXB_CSS_AT_RULE_MEDIA = 0x0003, + LXB_CSS_AT_RULE_NAMESPACE = 0x0004, + LXB_CSS_AT_RULE__LAST_ENTRY = 0x0005 }; typedef uintptr_t lxb_css_at_rule_type_t; diff --git a/ext/lexbor/lexbor/css/at_rule/res.h b/ext/lexbor/lexbor/css/at_rule/res.h index 026a88ae0dd6..6604fb923f40 100644 --- a/ext/lexbor/lexbor/css/at_rule/res.h +++ b/ext/lexbor/lexbor/css/at_rule/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -18,16 +18,19 @@ #include "lexbor/css/at_rule/const.h" -static const lxb_css_entry_data_t lxb_css_at_rule_data[LXB_CSS_AT_RULE__LAST_ENTRY] = +static const lxb_css_entry_at_rule_data_t lxb_css_at_rule_data[LXB_CSS_AT_RULE__LAST_ENTRY] = { - {(lxb_char_t *) "#undef", 6, LXB_CSS_AT_RULE__UNDEF, lxb_css_at_rule_state__undef, + {(lxb_char_t *) "#undef", 6, LXB_CSS_AT_RULE__UNDEF, &lxb_css_at_rule__undef_cb, lxb_css_at_rule__undef_create, lxb_css_at_rule__undef_destroy, lxb_css_at_rule__undef_serialize, (void *) (uintptr_t) LXB_CSS_AT_RULE__UNDEF}, - {(lxb_char_t *) "#сustom", 7, LXB_CSS_AT_RULE__CUSTOM, lxb_css_at_rule_state__custom, + {(lxb_char_t *) "#сustom", 7, LXB_CSS_AT_RULE__CUSTOM, &lxb_css_at_rule__custom_cb, lxb_css_at_rule__custom_create, lxb_css_at_rule__custom_destroy, lxb_css_at_rule__custom_serialize, (void *) (uintptr_t) LXB_CSS_AT_RULE__CUSTOM}, - {(lxb_char_t *) "media", 5, LXB_CSS_AT_RULE_MEDIA, lxb_css_at_rule_state_media, + {(lxb_char_t *) "font-face", 9, LXB_CSS_AT_RULE_FONT_FACE, &lxb_css_at_rule_font_face_cb, + lxb_css_at_rule_font_face_create, lxb_css_at_rule_font_face_destroy, lxb_css_at_rule_font_face_serialize, + NULL}, + {(lxb_char_t *) "media", 5, LXB_CSS_AT_RULE_MEDIA, &lxb_css_at_rule_media_cb, lxb_css_at_rule_media_create, lxb_css_at_rule_media_destroy, lxb_css_at_rule_media_serialize, NULL}, - {(lxb_char_t *) "namespace", 9, LXB_CSS_AT_RULE_NAMESPACE, lxb_css_at_rule_state_namespace, + {(lxb_char_t *) "namespace", 9, LXB_CSS_AT_RULE_NAMESPACE, &lxb_css_at_rule_namespace_cb, lxb_css_at_rule_namespace_create, lxb_css_at_rule_namespace_destroy, lxb_css_at_rule_namespace_serialize, NULL} }; @@ -38,7 +41,7 @@ static const lexbor_shs_entry_t lxb_css_at_rule_shs[6] = {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {"media", (void *) &lxb_css_at_rule_data[LXB_CSS_AT_RULE_MEDIA], 5, 0}, - {NULL, NULL, 0, 0}, + {"font-face", (void *) &lxb_css_at_rule_data[LXB_CSS_AT_RULE_FONT_FACE], 9, 0}, {"namespace", (void *) &lxb_css_at_rule_data[LXB_CSS_AT_RULE_NAMESPACE], 9, 0} }; diff --git a/ext/lexbor/lexbor/css/at_rule/state.c b/ext/lexbor/lexbor/css/at_rule/state.c new file mode 100644 index 000000000000..4df2f6085adf --- /dev/null +++ b/ext/lexbor/lexbor/css/at_rule/state.c @@ -0,0 +1,374 @@ +/* + * Copyright (C) 2021-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/css.h" +#include "lexbor/css/at_rule.h" +#include "lexbor/css/parser.h" +#include "lexbor/css/rule.h" +#include "lexbor/css/blank.h" +#include "lexbor/css/at_rule/state.h" + + +/* Undef */ + +bool +lxb_css_at_rule__undef_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_begin = token->offset; + + /* Skip all prelude. */ + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +lxb_status_t +lxb_css_at_rule__undef_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_status_t status; + lxb_css_rule_at_t *at = ctx; + + at->prelude_end = token->offset; + + status = lxb_css_make_data(parser, &at->u.undef->prelude, + at->prelude_begin, at->prelude_end); + if (status != LXB_STATUS_OK) { + return lxb_css_parser_memory_fail_status(parser); + } + + return LXB_STATUS_OK; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_at_rule__undef_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return lxb_css_state_at_rule_block_begin(parser, token, ctx, out_rule); +} + +bool +lxb_css_at_rule__undef_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + /* For _UNDEF and _CUSTOM, access here is not possible. */ + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +lxb_status_t +lxb_css_at_rule__undef_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_at_t *at = ctx; + lxb_css_rule_list_t *block = lxb_css_syntax_returned(parser); + + /* + * Here we do not check for failed because it cannot happen; we do not call + * failed anywhere in _UNDEF and _CUSTOM, we simply skip the tokens. + */ + + at->u.undef->block = block; + + lxb_css_syntax_set_return(parser, at); + + return LXB_STATUS_OK; +} + +/* Custom */ + +bool +lxb_css_at_rule__custom_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_at_rule__undef_prelude(parser, token, ctx); +} + +lxb_status_t +lxb_css_at_rule__custom_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_status_t status; + lxb_css_rule_at_t *at = ctx; + + at->prelude_end = token->offset; + + status = lxb_css_make_data(parser, &at->u.custom->prelude, + at->prelude_begin, at->prelude_end); + if (status != LXB_STATUS_OK) { + return lxb_css_parser_memory_fail_status(parser); + } + + return LXB_STATUS_OK; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_at_rule__custom_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return lxb_css_state_at_rule_block_begin(parser, token, ctx, out_rule); +} + +bool +lxb_css_at_rule__custom_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + return lxb_css_at_rule__undef_prelude_failed(parser, token, ctx); +} + +lxb_status_t +lxb_css_at_rule__custom_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_at_t *at = ctx; + lxb_css_rule_list_t *block = lxb_css_syntax_returned(parser); + + /* + * Here we do not check for failed because it cannot happen; we do not call + * failed anywhere in _UNDEF and _CUSTOM, we simply skip the tokens. + */ + + at->u.custom->block = block; + + lxb_css_syntax_set_return(parser, at); + + return LXB_STATUS_OK; +} + +/* Namespace */ + +bool +lxb_css_at_rule_namespace_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_begin = token->offset; + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +lxb_status_t +lxb_css_at_rule_namespace_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_end = token->offset; + + return LXB_STATUS_OK; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_at_rule_namespace_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + lxb_css_parser_failed_set(parser, true); + + return lxb_css_state_at_rule_block_begin(parser, token, ctx, out_rule); +} + +bool +lxb_css_at_rule_namespace_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + return lxb_css_at_rule__undef_prelude_failed(parser, token, ctx); +} + +lxb_status_t +lxb_css_at_rule_namespace_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_status_t status; + lxb_css_rule_at_t *at = ctx; + + if (failed) { + status = lxb_css_at_rule_convert_to_undef(parser, at); + if (status != LXB_STATUS_OK) { + return status; + } + + at->u.undef->block = lxb_css_syntax_returned(parser); + } + + lxb_css_syntax_set_return(parser, at); + + return LXB_STATUS_OK; +} + +/* Media */ + +bool +lxb_css_at_rule_media_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_begin = token->offset; + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +lxb_status_t +lxb_css_at_rule_media_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_end = token->offset; + + return LXB_STATUS_OK; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_at_rule_media_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return lxb_css_state_at_rule_block_begin(parser, token, ctx, out_rule); +} + +bool +lxb_css_at_rule_media_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + return lxb_css_at_rule__undef_prelude_failed(parser, token, ctx); +} + +lxb_status_t +lxb_css_at_rule_media_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_status_t status; + lxb_css_rule_at_t *at = ctx; + lxb_css_rule_list_t *list = lxb_css_syntax_returned(parser); + + if (list != NULL && !failed) { + at->u.media->block = list; + } + else { + status = lxb_css_at_rule_convert_to_undef(parser, at); + if (status != LXB_STATUS_OK) { + return status; + } + + at->u.undef->block = list; + } + + lxb_css_syntax_set_return(parser, at); + + return LXB_STATUS_OK; +} + +/* Font-face */ + +bool +lxb_css_at_rule_font_face_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_begin = token->offset; + + if (token->type != LXB_CSS_SYNTAX_TOKEN__END) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} + +lxb_status_t +lxb_css_at_rule_font_face_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_end = token->offset; + + return LXB_STATUS_OK; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_at_rule_font_face_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return lxb_css_state_at_rule_block_begin(parser, token, ctx, out_rule); +} + +bool +lxb_css_at_rule_font_face_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + return lxb_css_at_rule__undef_prelude_failed(parser, token, ctx); +} + +lxb_status_t +lxb_css_at_rule_font_face_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_status_t status; + lxb_css_rule_at_t *at = ctx; + lxb_css_rule_list_t *block = lxb_css_syntax_returned(parser); + + if (!failed) { + at->u.font_face->block = block; + } + else { + status = lxb_css_at_rule_convert_to_undef(parser, at); + if (status != LXB_STATUS_OK) { + return status; + } + + at->u.undef->block = block; + } + + lxb_css_syntax_set_return(parser, at); + + return LXB_STATUS_OK; +} diff --git a/ext/lexbor/lexbor/css/at_rule/state.h b/ext/lexbor/lexbor/css/at_rule/state.h index 65e17e40d0ff..337a23c86714 100644 --- a/ext/lexbor/lexbor/css/at_rule/state.h +++ b/ext/lexbor/lexbor/css/at_rule/state.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -15,18 +15,110 @@ extern "C" { LXB_API bool -lxb_css_at_rule_state__undef(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx); +lxb_css_at_rule__undef_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule__undef_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_at_rule__undef_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); LXB_API bool -lxb_css_at_rule_state__custom(lxb_css_parser_t *parser, +lxb_css_at_rule__undef_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule__undef_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API bool +lxb_css_at_rule__custom_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule__custom_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_at_rule__custom_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +LXB_API bool +lxb_css_at_rule__custom_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule__custom_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API bool +lxb_css_at_rule_namespace_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule_namespace_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_at_rule_namespace_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +LXB_API bool +lxb_css_at_rule_namespace_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule_namespace_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API bool +lxb_css_at_rule_media_prelude(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule_media_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_at_rule_media_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); LXB_API bool -lxb_css_at_rule_state_media(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx); +lxb_css_at_rule_media_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule_media_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + LXB_API bool -lxb_css_at_rule_state_namespace(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx); +lxb_css_at_rule_font_face_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule_font_face_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_at_rule_font_face_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +LXB_API bool +lxb_css_at_rule_font_face_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +LXB_API lxb_status_t +lxb_css_at_rule_font_face_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); #ifdef __cplusplus diff --git a/ext/lexbor/lexbor/css/at_rule/types.h b/ext/lexbor/lexbor/css/at_rule/types.h new file mode 100644 index 000000000000..1079bb632230 --- /dev/null +++ b/ext/lexbor/lexbor/css/at_rule/types.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +/* + * Caution! + * This file generated by the script "utils/lexbor/css/names.py"! + * Do not change this file! + */ + + +#ifndef LXB_CSS_AT_RULE_TYPES_H +#define LXB_CSS_AT_RULE_TYPES_H + + +static const lxb_css_syntax_cb_at_rule_t lxb_css_at_rule__undef_cb = { + .prelude = lxb_css_at_rule__undef_prelude, + .prelude_end = lxb_css_at_rule__undef_prelude_end, + .block = lxb_css_at_rule__undef_block, + .cb.failed = lxb_css_at_rule__undef_prelude_failed, + .cb.end = lxb_css_at_rule__undef_end +}; + +static const lxb_css_syntax_cb_at_rule_t lxb_css_at_rule__custom_cb = { + .prelude = lxb_css_at_rule__custom_prelude, + .prelude_end = lxb_css_at_rule__custom_prelude_end, + .block = lxb_css_at_rule__custom_block, + .cb.failed = lxb_css_at_rule__custom_prelude_failed, + .cb.end = lxb_css_at_rule__custom_end +}; + +static const lxb_css_syntax_cb_at_rule_t lxb_css_at_rule_font_face_cb = { + .prelude = lxb_css_at_rule_font_face_prelude, + .prelude_end = lxb_css_at_rule_font_face_prelude_end, + .block = lxb_css_at_rule_font_face_block, + .cb.failed = lxb_css_at_rule_font_face_prelude_failed, + .cb.end = lxb_css_at_rule_font_face_end +}; + +static const lxb_css_syntax_cb_at_rule_t lxb_css_at_rule_media_cb = { + .prelude = lxb_css_at_rule_media_prelude, + .prelude_end = lxb_css_at_rule_media_prelude_end, + .block = lxb_css_at_rule_media_block, + .cb.failed = lxb_css_at_rule_media_prelude_failed, + .cb.end = lxb_css_at_rule_media_end +}; + +static const lxb_css_syntax_cb_at_rule_t lxb_css_at_rule_namespace_cb = { + .prelude = lxb_css_at_rule_namespace_prelude, + .prelude_end = lxb_css_at_rule_namespace_prelude_end, + .block = lxb_css_at_rule_namespace_block, + .cb.failed = lxb_css_at_rule_namespace_prelude_failed, + .cb.end = lxb_css_at_rule_namespace_end +}; + + + +#endif /* LXB_CSS_AT_RULE_TYPES_H */ diff --git a/ext/lexbor/lexbor/css/base.h b/ext/lexbor/lexbor/css/base.h index 3d3cdc6a7f28..26712ce7048f 100644 --- a/ext/lexbor/lexbor/css/base.h +++ b/ext/lexbor/lexbor/css/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2025 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -18,7 +18,7 @@ extern "C" { #define LXB_CSS_VERSION_MAJOR 1 -#define LXB_CSS_VERSION_MINOR 3 +#define LXB_CSS_VERSION_MINOR 4 #define LXB_CSS_VERSION_PATCH 0 #define LXB_CSS_VERSION_STRING \ @@ -45,6 +45,8 @@ typedef struct lxb_css_parser_error lxb_css_parser_error_t; typedef struct lxb_css_syntax_tokenizer lxb_css_syntax_tokenizer_t; typedef struct lxb_css_syntax_token lxb_css_syntax_token_t; +/* Callbacks. */ + typedef bool (*lxb_css_parser_state_f)(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx); @@ -82,6 +84,21 @@ typedef struct { } lxb_css_entry_data_t; +typedef struct { + lxb_char_t *name; + size_t length; + uintptr_t unique; + + /* const lxb_css_syntax_cb_at_rule_t */ + const void *cbs; + + lxb_css_style_create_f create; + lxb_css_style_destroy_f destroy; + lxb_css_style_serialize_f serialize; + void *initial; +} +lxb_css_entry_at_rule_data_t; + typedef struct { lxb_char_t *name; size_t length; diff --git a/ext/lexbor/lexbor/css/blank.c b/ext/lexbor/lexbor/css/blank.c new file mode 100644 index 000000000000..80e60f76e198 --- /dev/null +++ b/ext/lexbor/lexbor/css/blank.c @@ -0,0 +1,389 @@ +/* + * Copyright (C) 2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/blank.h" +#include "lexbor/css/state.h" +#include "lexbor/css/css.h" +#include "lexbor/css/at_rule/state.h" + + +static bool +lxb_css_blank_list_rules_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + +static lxb_status_t +lxb_css_blank_list_rules_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_at_rule_t * +lxb_css_blank_at_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx, + void **out_rule); + +static bool +lxb_css_blank_at_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); + +static lxb_status_t +lxb_css_blank_at_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_block_t * +lxb_css_blank_at_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +static bool +lxb_css_blank_at_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +static lxb_status_t +lxb_css_blank_at_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_blank_qualified_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static bool +lxb_css_blank_qualified_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); + +static lxb_status_t +lxb_css_blank_qualified_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_block_t * +lxb_css_blank_qualified_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static bool +lxb_css_blank_qualified_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +static lxb_status_t +lxb_css_blank_qualified_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); +static bool +lxb_css_blank_block_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + +static lxb_status_t +lxb_css_blank_block_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_declarations_t * +lxb_css_blank_declarations_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static lxb_css_parser_state_f +lxb_css_blank_declaration_name(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +static bool +lxb_css_blank_declaration_value(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + +static lxb_status_t +lxb_css_blank_declaration_end(lxb_css_parser_t *parser, + void *declarations, void *ctx, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_declaration_offset_t *offset, + bool important, bool failed); + +static lxb_status_t +lxb_css_blank_declarations_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static bool +lxb_css_blank_declarations_bad(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + + +static const lxb_css_syntax_cb_list_rules_t lxb_css_blank_list_rules = { + .at_rule = lxb_css_blank_at_rule_begin, + .qualified_rule = lxb_css_blank_qualified_rule_begin, + .next = lxb_css_blank_list_rules_next, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_blank_list_rules_end +}; + +static const lxb_css_syntax_cb_at_rule_t lxb_css_blank_at_rule = { + .prelude = lxb_css_blank_at_rule_prelude, + .prelude_end = lxb_css_blank_at_rule_prelude_end, + .block = lxb_css_blank_at_rule_block_begin, + .cb.failed = lxb_css_blank_at_rule_prelude_failed, + .cb.end = lxb_css_blank_at_rule_end +}; + +static const lxb_css_syntax_cb_qualified_rule_t lxb_css_blank_qualified_rule = { + .prelude = lxb_css_blank_qualified_rule_prelude, + .prelude_end = lxb_css_blank_qualified_rule_prelude_end, + .block = lxb_css_blank_qualified_rule_block_begin, + .cb.failed = lxb_css_blank_qualified_rule_prelude_failed, + .cb.end = lxb_css_blank_qualified_rule_end +}; + +static const lxb_css_syntax_cb_block_t lxb_css_blank_block = { + .at_rule = lxb_css_blank_at_rule_begin, + .declarations = lxb_css_blank_declarations_begin, + .qualified_rule = lxb_css_blank_qualified_rule_begin, + .next = lxb_css_blank_block_next, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_blank_block_end, +}; + +static const lxb_css_syntax_cb_declarations_t lxb_css_blank_declaration = { + .name = lxb_css_blank_declaration_name, + .end = lxb_css_blank_declaration_end, + .cb.failed = lxb_css_blank_declarations_bad, + .cb.end = lxb_css_blank_declarations_end +}; + + +const lxb_css_syntax_cb_list_rules_t * +lxb_css_blank_cb_list_rules(void) +{ + return &lxb_css_blank_list_rules; +} + +const lxb_css_syntax_cb_at_rule_t * +lxb_css_blank_cb_at_rule(void) +{ + return &lxb_css_blank_at_rule; +} + +const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_blank_cb_qualified_rule(void) +{ + return &lxb_css_blank_qualified_rule; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_blank_cb_block(void) +{ + return &lxb_css_blank_block; +} + +const lxb_css_syntax_cb_declarations_t * +lxb_css_blank_cb_declarations(void) +{ + return &lxb_css_blank_declaration; +} + +static bool +lxb_css_blank_list_rules_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_list_rules_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_at_rule_t * +lxb_css_blank_at_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx, + void **out_rule) +{ + return &lxb_css_blank_at_rule; +} + +static bool +lxb_css_blank_at_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_at_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_block_t * +lxb_css_blank_at_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return &lxb_css_blank_block; +} + +static bool +lxb_css_blank_at_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_at_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_blank_qualified_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return &lxb_css_blank_qualified_rule; +} + +static bool +lxb_css_blank_qualified_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_qualified_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_block_t * +lxb_css_blank_qualified_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return &lxb_css_blank_block; +} + +static bool +lxb_css_blank_qualified_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_qualified_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static bool +lxb_css_blank_block_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_block_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_declarations_t * +lxb_css_blank_declarations_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return &lxb_css_blank_declaration; +} + +static lxb_css_parser_state_f +lxb_css_blank_declaration_name(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + return lxb_css_blank_declaration_value; +} + +static bool +lxb_css_blank_declaration_value(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_blank_declaration_end(lxb_css_parser_t *parser, + void *declarations, void *ctx, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_declaration_offset_t *offset, + bool important, bool failed) +{ + return LXB_STATUS_OK; +} + +static lxb_status_t +lxb_css_blank_declarations_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + return LXB_STATUS_OK; +} + +static bool +lxb_css_blank_declarations_bad(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} diff --git a/ext/lexbor/lexbor/css/blank.h b/ext/lexbor/lexbor/css/blank.h new file mode 100644 index 000000000000..05a13bfa1207 --- /dev/null +++ b/ext/lexbor/lexbor/css/blank.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#ifndef LXB_CSS_BLANK_H +#define LXB_CSS_BLANK_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lexbor/css/base.h" +#include "lexbor/css/syntax/syntax.h" + + +LXB_API const lxb_css_syntax_cb_list_rules_t * +lxb_css_blank_cb_list_rules(void); + +LXB_API const lxb_css_syntax_cb_at_rule_t * +lxb_css_blank_cb_at_rule(void); + +LXB_API const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_blank_cb_qualified_rule(void); + +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_blank_cb_block(void); + +LXB_API const lxb_css_syntax_cb_declarations_t * +lxb_css_blank_cb_declarations(void); + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* LXB_CSS_BLANK_H */ diff --git a/ext/lexbor/lexbor/css/css.c b/ext/lexbor/lexbor/css/css.c index 3b6f0cb0f2f4..68c6c977e834 100644 --- a/ext/lexbor/lexbor/css/css.c +++ b/ext/lexbor/lexbor/css/css.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -155,15 +155,12 @@ lxb_css_memory_ref_dec_destroy(lxb_css_memory_t *memory) lxb_status_t lxb_css_make_data(lxb_css_parser_t *parser, lexbor_str_t *str, - uintptr_t begin, uintptr_t end) + size_t begin, size_t end) { - size_t length, offlen, len; - const lxb_char_t *pos; - const lexbor_str_t *tmp; + size_t length; + const lxb_char_t *p; - tmp = &parser->str; - - offlen = begin - parser->offset; + p = parser->tkz->in_begin; length = end - begin; if (str->data == NULL) { @@ -173,31 +170,9 @@ lxb_css_make_data(lxb_css_parser_t *parser, lexbor_str_t *str, } } - if (tmp->length > offlen) { - len = tmp->length - offlen; - - if (len >= length) { - memcpy(str->data + str->length, tmp->data + offlen, length); - goto done; - } - else { - memcpy(str->data + str->length, tmp->data + offlen, len); - } - - str->length += len; - - pos = parser->pos; - length -= len; - } - else { - pos = parser->pos + (offlen - tmp->length); - } - - memcpy(str->data + str->length, pos, length); - -done: + memcpy(str->data, p + begin, length); - str->length += length; + str->length = length; str->data[str->length] = '\0'; return LXB_STATUS_OK; diff --git a/ext/lexbor/lexbor/css/css.h b/ext/lexbor/lexbor/css/css.h index bb12978e3ee2..4ba7152334ba 100644 --- a/ext/lexbor/lexbor/css/css.h +++ b/ext/lexbor/lexbor/css/css.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -35,7 +35,7 @@ extern "C" { LXB_API lxb_status_t lxb_css_make_data(lxb_css_parser_t *parser, lexbor_str_t *str, - uintptr_t begin, uintptr_t end); + size_t begin, size_t end); LXB_API lxb_char_t * lxb_css_serialize_char_handler(const void *style, lxb_css_style_serialize_f cb, diff --git a/ext/lexbor/lexbor/css/declaration.c b/ext/lexbor/lexbor/css/declaration.c new file mode 100644 index 000000000000..e27571486f1f --- /dev/null +++ b/ext/lexbor/lexbor/css/declaration.c @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2022-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/declaration.h" + + +lxb_css_rule_declaration_t * +lxb_css_declaration_create(lxb_css_parser_t *parser, + const lxb_char_t *name, size_t length, + const lxb_css_entry_data_t **out_entry) +{ + void *prop; + const lxb_css_entry_data_t *entry; + lxb_css_property__custom_t *custom; + lxb_css_rule_declaration_t *declar; + + declar = lxb_css_rule_declaration_create(parser->memory); + if (declar == NULL) { + return NULL; + } + + entry = lxb_css_property_by_name(name, length); + if (entry == NULL) { + entry = lxb_css_property_by_id(LXB_CSS_PROPERTY__CUSTOM); + + prop = entry->create(parser->memory); + if (prop == NULL) { + goto failed; + } + + custom = prop; + + (void) lexbor_str_init(&custom->name, parser->memory->mraw, length); + if (custom->name.data == NULL) { + goto failed; + } + + memcpy(custom->name.data, name, length); + + custom->name.length = length; + custom->name.data[custom->name.length] = 0x00; + } + else { + prop = entry->create(parser->memory); + if (prop == NULL) { + goto failed; + } + } + + declar->type = entry->unique; + declar->u.user = prop; + + if (out_entry != NULL) { + *out_entry = entry; + } + + return declar; + +failed: + + if (prop != NULL) { + (void) entry->destroy(parser->memory, prop, true); + } + + if (declar != NULL) { + (void) lxb_css_rule_declaration_destroy(declar, true); + } + + if (out_entry != NULL) { + *out_entry = NULL; + } + + return NULL; +} + +lxb_css_rule_declaration_list_t * +lxb_css_declaration_list_parse(lxb_css_parser_t *parser, + const lxb_char_t *data, size_t length) +{ + return lxb_css_syntax_parse_declarations(parser, + lxb_css_state_cb_declarations(), + data, length); +} diff --git a/ext/lexbor/lexbor/css/declaration.h b/ext/lexbor/lexbor/css/declaration.h index 1ea414e10bc7..53ab061aaa4c 100644 --- a/ext/lexbor/lexbor/css/declaration.h +++ b/ext/lexbor/lexbor/css/declaration.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Alexander Borisov + * Copyright (C) 2022-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -15,19 +15,14 @@ extern "C" { #include "lexbor/core/mraw.h" -LXB_API lxb_status_t -lxb_css_declaration_list_prepare(lxb_css_parser_t *parser, - lxb_css_memory_t *mem); +LXB_API lxb_css_rule_declaration_t * +lxb_css_declaration_create(lxb_css_parser_t *parser, + const lxb_char_t *name, size_t length, + const lxb_css_entry_data_t **out_entry); -LXB_API lxb_css_rule_declaration_list_t * -lxb_css_declaration_list_process(lxb_css_parser_t *parser, - const lxb_char_t *data, size_t length); - -LXB_API void -lxb_css_declaration_list_finish(lxb_css_parser_t *parser); LXB_API lxb_css_rule_declaration_list_t * -lxb_css_declaration_list_parse(lxb_css_parser_t *parser, lxb_css_memory_t *mem, +lxb_css_declaration_list_parse(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length); diff --git a/ext/lexbor/lexbor/css/log.c b/ext/lexbor/lexbor/css/log.c index 08f6fc4fc5a1..d993e4715c62 100644 --- a/ext/lexbor/lexbor/css/log.c +++ b/ext/lexbor/lexbor/css/log.c @@ -152,7 +152,7 @@ lxb_css_log_format(lxb_css_log_t *log, lxb_css_log_type_t type, return NULL; } - msg = lxb_css_log_push(log, LXB_CSS_LOG_SYNTAX_ERROR, psize); + msg = lxb_css_log_push(log, type, psize); if (msg == NULL) { return NULL; } diff --git a/ext/lexbor/lexbor/css/parser.c b/ext/lexbor/lexbor/css/parser.c index 5ceffed0f970..625143864888 100644 --- a/ext/lexbor/lexbor/css/parser.c +++ b/ext/lexbor/lexbor/css/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -73,7 +73,6 @@ lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz) parser->rules->context = NULL; /* Temp */ - parser->pos = NULL; parser->str.length = 0; parser->str_size = 4096; @@ -93,13 +92,35 @@ lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz) parser->types_pos = NULL; parser->types_end = NULL; parser->stage = LXB_CSS_PARSER_CLEAN; - parser->receive_endings = false; parser->status = LXB_STATUS_OK; parser->fake_null = false; + parser->token_end.type = LXB_CSS_SYNTAX_TOKEN__END; return LXB_STATUS_OK; } +lxb_status_t +lxb_css_parser_selectors_init(lxb_css_parser_t *parser) +{ + lxb_status_t status; + + parser->selectors = lxb_css_selectors_create(); + status = lxb_css_selectors_init(parser->selectors); + if (status != LXB_STATUS_OK) { + parser->selectors = lxb_css_selectors_destroy(parser->selectors, true); + } + + return status; +} + +void +lxb_css_parser_selectors_destroy(lxb_css_parser_t *parser) +{ + if (parser->selectors != NULL) { + parser->selectors = lxb_css_selectors_destroy(parser->selectors, true); + } +} + void lxb_css_parser_clean(lxb_css_parser_t *parser) { @@ -111,7 +132,6 @@ lxb_css_parser_clean(lxb_css_parser_t *parser) parser->types_pos = parser->types_begin; parser->stage = LXB_CSS_PARSER_CLEAN; parser->status = LXB_STATUS_OK; - parser->pos = NULL; parser->str.length = 0; parser->fake_null = false; } @@ -331,6 +351,14 @@ lxb_css_parser_unexpected_data_status(lxb_css_parser_t *parser, return LXB_STATUS_ERROR_UNEXPECTED_DATA; } +void * +lxb_css_parser_memory_fail_null(lxb_css_parser_t *parser) +{ + parser->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; + parser->loop = false; + return NULL; +} + bool lxb_css_parser_memory_fail(lxb_css_parser_t *parser) { @@ -347,3 +375,189 @@ lxb_css_parser_memory_fail_status(lxb_css_parser_t *parser) return LXB_STATUS_ERROR_MEMORY_ALLOCATION; } + +/* + * No-inline functions for ABI. + */ +lxb_status_t +lxb_css_parser_status_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_status(parser); +} + +lxb_css_memory_t * +lxb_css_parser_memory_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_memory(parser); +} + +void +lxb_css_parser_memory_set_noi(lxb_css_parser_t *parser, lxb_css_memory_t *memory) +{ + lxb_css_parser_memory_set(parser, memory); +} + +lxb_css_selectors_t * +lxb_css_parser_selectors_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_selectors(parser); +} + +void +lxb_css_parser_selectors_set_noi(lxb_css_parser_t *parser, + lxb_css_selectors_t *selectors) +{ + lxb_css_parser_selectors_set(parser, selectors); +} + +bool +lxb_css_parser_is_running_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_is_running(parser); +} + +bool +lxb_css_parser_status_is_unexpected_data_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_status_is_unexpected_data(parser); +} + +void +lxb_css_parser_failed_set_noi(lxb_css_parser_t *parser, bool is) +{ + lxb_css_parser_failed_set(parser, is); +} + +void +lxb_css_parser_failed_set_by_id_noi(lxb_css_parser_t *parser, int idx, bool is) +{ + lxb_css_parser_failed_set_by_id(parser, idx, is); +} + +bool +lxb_css_parser_is_failed_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_is_failed(parser); +} + +void +lxb_css_parser_set_ok_noi(lxb_css_parser_t *parser) +{ + lxb_css_parser_set_ok(parser); +} + +const lxb_char_t * +lxb_css_parser_buffer_noi(lxb_css_parser_t *parser, size_t *length) +{ + return lxb_css_parser_buffer(parser, length); +} + +void +lxb_css_parser_buffer_set_noi(lxb_css_parser_t *parser, + const lxb_char_t *data, size_t length) +{ + lxb_css_parser_buffer_set(parser, data, length); +} + +lxb_css_parser_state_f +lxb_css_parser_state_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_state(parser); +} + +void +lxb_css_parser_state_set_noi(lxb_css_parser_t *parser, lxb_css_parser_state_f state) +{ + lxb_css_parser_state_set(parser, state); +} + +lxb_css_syntax_rule_t * +lxb_css_parser_current_rule_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_current_rule(parser); +} + +size_t +lxb_css_parser_rule_deep_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_rule_deep(parser); +} + +lxb_css_parser_state_t * +lxb_css_parser_states_pop_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_states_pop(parser); +} + +lxb_css_parser_state_t * +lxb_css_parser_states_to_root_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_states_to_root(parser); +} + +bool +lxb_css_parser_states_set_back_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_states_set_back(parser); +} + +void +lxb_css_parser_states_clean_noi(lxb_css_parser_t *parser) +{ + lxb_css_parser_states_clean(parser); +} + +lxb_css_parser_state_t * +lxb_css_parser_states_current_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_states_current(parser); +} + +void +lxb_css_parser_states_set_noi(lxb_css_parser_state_t *states, + lxb_css_parser_state_f state, void *context) +{ + lxb_css_parser_states_set(states, state, context); +} + +void +lxb_css_parser_states_up_noi(lxb_css_parser_t *parser) +{ + lxb_css_parser_states_up(parser); +} + +void +lxb_css_parser_states_down_noi(lxb_css_parser_t *parser) +{ + lxb_css_parser_states_down(parser); +} + +lxb_css_log_t * +lxb_css_parser_log_noi(lxb_css_parser_t *parser) +{ + return lxb_css_parser_log(parser); +} + +const lxb_css_syntax_token_t * +lxb_css_parser_token_end_noi(lxb_css_parser_t *parser, size_t offset) +{ + return lxb_css_parser_token_end(parser, offset); +} + +void +lxb_css_parser_set_context_noi(lxb_css_parser_t *parser, void *ctx) +{ + lxb_css_parser_set_context(parser, ctx); +} + +void +lxb_css_syntax_set_return_noi(lxb_css_parser_t *parser, void *value) +{ + lxb_css_syntax_set_return(parser, value); +} + +void * +lxb_css_syntax_returned_noi(lxb_css_parser_t *parser) +{ + return lxb_css_syntax_returned(parser); +} diff --git a/ext/lexbor/lexbor/css/parser.h b/ext/lexbor/lexbor/css/parser.h index 9a4dfae0b702..d703dcc2f13d 100644 --- a/ext/lexbor/lexbor/css/parser.h +++ b/ext/lexbor/lexbor/css/parser.h @@ -1,6 +1,5 @@ /* - - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -70,7 +69,6 @@ extern "C" { } \ while (false) - #define lxb_css_parser_token_status_wo_ws_m(parser, token) \ do { \ if ((token = lxb_css_syntax_parser_token(parser)) == NULL) { \ @@ -129,49 +127,44 @@ typedef enum { lxb_css_parser_stage_t; struct lxb_css_parser { - lxb_css_parser_state_f block; - void *context; - /* Modules */ - lxb_css_syntax_tokenizer_t *tkz; - lxb_css_selectors_t *selectors; - lxb_css_selectors_t *old_selectors; + lxb_css_syntax_tokenizer_t *tkz; + lxb_css_selectors_t *selectors; /* Memory for all structures. */ - lxb_css_memory_t *memory; - lxb_css_memory_t *old_memory; + lxb_css_memory_t *memory; /* Syntax parse rules. */ - lxb_css_syntax_rule_t *rules_begin; - lxb_css_syntax_rule_t *rules_end; - lxb_css_syntax_rule_t *rules; + lxb_css_syntax_rule_t *rules_begin; + lxb_css_syntax_rule_t *rules_end; + lxb_css_syntax_rule_t *rules; /* States */ - lxb_css_parser_state_t *states_begin; - lxb_css_parser_state_t *states_end; - lxb_css_parser_state_t *states; + lxb_css_parser_state_t *states_begin; + lxb_css_parser_state_t *states_end; + lxb_css_parser_state_t *states; /* Types */ - lxb_css_syntax_token_type_t *types_begin; - lxb_css_syntax_token_type_t *types_end; - lxb_css_syntax_token_type_t *types_pos; + lxb_css_syntax_token_type_t *types_begin; + lxb_css_syntax_token_type_t *types_end; + lxb_css_syntax_token_type_t *types_pos; - const lxb_char_t *pos; - uintptr_t offset; + lxb_css_syntax_token_t token_end; - lexbor_str_t str; - size_t str_size; + lexbor_str_t str; + size_t str_size; - lxb_css_log_t *log; + lxb_css_log_t *log; - lxb_css_parser_stage_t stage; + lxb_css_parser_stage_t stage; - bool loop; - bool fake_null; - bool my_tkz; - bool receive_endings; + lxb_css_syntax_declaration_offset_t offset; - lxb_status_t status; + bool loop; + bool fake_null; + bool my_tkz; + + lxb_status_t status; }; struct lxb_css_parser_state { @@ -185,47 +178,197 @@ struct lxb_css_parser_error { }; +/* + * Create a new CSS parser object. + * + * @return lxb_css_parser_t* if successful, otherwise NULL. + */ LXB_API lxb_css_parser_t * lxb_css_parser_create(void); +/* + * Initialize the CSS parser with a tokenizer. + * + * @param[in] parser Required. The CSS parser object. + * If NULL, the function returns + * LXB_STATUS_ERROR_OBJECT_IS_NULL. + * @param[in] tkz Optional. The tokenizer object. + * If NULL, a new tokenizer will be created and used. + * (In that case the parser manages the tokenizer lifetime.) + * + * @return LXB_STATUS_OK if successful, otherwise an error status value. + */ LXB_API lxb_status_t lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz); +/* + * Initialize the Selectors module in the parser. + * + * Note: + * Be sure to destroy the Selectors object you created yourself using + * the lxb_css_parser_selectors_destroy() function. + * + * @param[in] parser Required. The CSS parser object. + * + * @return LXB_STATUS_OK if successful, otherwise an error status value. + */ +LXB_API lxb_status_t +lxb_css_parser_selectors_init(lxb_css_parser_t *parser); + +/* + * Destroy the selectors module in the parser. + * + * @param[in] parser Required. The CSS parser object. + */ +LXB_API void +lxb_css_parser_selectors_destroy(lxb_css_parser_t *parser); + +/* + * Clean the parser object. + * + * This resets internal parser state, but keeps allocated memory so the parser + * can be reused. + * + * @param[in] parser Required. The CSS parser object. + */ LXB_API void lxb_css_parser_clean(lxb_css_parser_t *parser); +/* + * Erase the parser object. + * + * This resets internal parser state and releases internal allocations owned by + * the parser so it can be re-initialized. + * + * @param[in] parser Required. The CSS parser object. + */ LXB_API void lxb_css_parser_erase(lxb_css_parser_t *parser); +/* + * Destroy the parser object. + * + * @param[in] parser Optional. The CSS parser object. + * If NULL, the function returns NULL. + * @param[in] self_destroy Optional flag. + * If true, also frees the parser object itself. + * If false, only inner resources are freed and the + * parser object remains valid. + * + * @return parser if self_destroy is false, otherwise NULL. + */ LXB_API lxb_css_parser_t * lxb_css_parser_destroy(lxb_css_parser_t *parser, bool self_destroy); -LXB_API lxb_css_parser_state_t * -lxb_css_parser_states_push(lxb_css_parser_t *parser, - lxb_css_parser_state_f state, - void *context, bool stop); - -LXB_API lxb_css_parser_state_t * -lxb_css_parser_states_next(lxb_css_parser_t *parser, - lxb_css_parser_state_f next, - lxb_css_parser_state_f back, void *ctx, bool root); - -LXB_API lxb_status_t -lxb_css_parser_types_push(lxb_css_parser_t *parser, - lxb_css_syntax_token_type_t type); - +/* + * Stop the parser main loop. + * + * This is a helper for state callbacks that want to immediately stop parsing + * without marking the current rule as failed. + * + * @param[in] parser Required. The CSS parser object. + * + * @return true (convenience return value, useful for state callbacks). + */ LXB_API bool lxb_css_parser_stop(lxb_css_parser_t *parser); +/* + * Fail the parser with a status and stop the main loop. + * + * This is used for hard errors (OOM, overflow, etc.). It sets parser->status + * and stops the parser loop. + * + * @param[in] parser Required. The CSS parser object. + * @param[in] status Required. Status code describing the failure. + * + * @return true (convenience return value, useful for state callbacks). + */ LXB_API bool lxb_css_parser_fail(lxb_css_parser_t *parser, lxb_status_t status); +/* + * Mark the current token as unexpected. + * + * This is a specialized helper for the common "unexpected data" parse error. + * It sets parser->status to LXB_STATUS_ERROR_UNEXPECTED_DATA and marks the + * current rule as failed. + * + * @param[in] parser Required. The CSS parser object. + * + * @return true (convenience return value, useful for state callbacks). + */ LXB_API bool lxb_css_parser_unexpected(lxb_css_parser_t *parser); +/* + * Mark parsing of the current grammar/rule as successful. + * + * Why this function exists: + * - Most callbacks in the CSS parser work as a state machine: each callback + * receives the current token and returns bool to decide what to do next. + * - "Success" is not just a bool. The parser must switch to a special + * lxb_css_state_success state to properly handle trailing whitespace and + * the end-of-input token. + * - If you don't consume all tokens up to LXB_CSS_SYNTAX_TOKEN__END in the + * current rule and call this function, the parser will switch to "failed" + * mode. This is the same as calling the lxb_css_parser_failed() function. + * The exception is the LXB_CSS_SYNTAX_TOKEN_WHITESPACE token. If you are + * sure that only this token remains, the parser will simply exclude it. + * + * What it does: + * - Sets the current rule state to lxb_css_state_success. + * - Does not stop the parser loop by itself. + * + * Typical usage: + * - In css/property/state.c, after you have parsed and consumed the last token + * of a property value, you do: + * return lxb_css_parser_success(parser); + * - That transfers control to lxb_css_state_success, which consumes any + * whitespace and completes on LXB_CSS_SYNTAX_TOKEN__END. + * + * @param[in] parser Required. The CSS parser object. + * + * @return true (convenience return value, useful for state callbacks). + */ LXB_API bool lxb_css_parser_success(lxb_css_parser_t *parser); +/* + * Mark parsing of the current grammar/rule as failed. + * + * Why this function exists: + * - In the state machine, failure is also not "just return false". The parser + * needs to switch to a rule-specific recovery state so it can safely skip + * input until it is allowed to stop (usually until end-of-input or a known + * synchronisation point). + * + * What it does: + * - Sets the current rule state to the rule-specific "failed" handler + * (rule->cbx.cb->failed). + * - Sets rule->failed = true. + * - Does not directly change parser->status. Use lxb_css_parser_fail() or + * lxb_css_parser_unexpected() when you need a concrete status code. + * + * Typical usage: + * - In css/property/state.c, if a token doesn't match the expected grammar, + * you do: + * return lxb_css_parser_failed(parser); + * - That switches the parser into the failed handler. For properties this lets + * the parser consume/skip tokens until it reaches LXB_CSS_SYNTAX_TOKEN__END. + * (See lxb_css_state_failed(): it consumes tokens until end, then calls + * lxb_css_parser_success() to finish.) + * + * Important! + * The user sets the callback to "failed" and must decide what to do in this + * situation. If the user does not consume all tokens before + * LXB_CSS_SYNTAX_TOKEN__END, there will be an infinite loop. + * + * @param[in] parser Required. The CSS parser object. + * + * @return true (convenience return value, useful for state callbacks). + */ + LXB_API bool lxb_css_parser_failed(lxb_css_parser_t *parser); @@ -240,12 +383,64 @@ LXB_API lxb_status_t lxb_css_parser_unexpected_data_status(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token); +LXB_API void * +lxb_css_parser_memory_fail_null(lxb_css_parser_t *parser); + LXB_API bool lxb_css_parser_memory_fail(lxb_css_parser_t *parser); -lxb_status_t +LXB_API lxb_status_t lxb_css_parser_memory_fail_status(lxb_css_parser_t *parser); +/* + * Push a new state to the parser. + * + * @param[in] parser Required. The CSS parser object. + * @param[in] state Required. State callback to execute. + * @param[in] context Optional user pointer associated with this state. + * Stored as-is; the parser doesn't own it. + * @param[in] stop If true, the pushed state is marked as a "stop point". + * This is used by the parser to stop/return control when + * this state is reached. + * + * @return lxb_css_parser_state_t* if successful, otherwise NULL. + */ +LXB_API lxb_css_parser_state_t * +lxb_css_parser_states_push(lxb_css_parser_t *parser, + lxb_css_parser_state_f state, + void *context, bool stop); + +/* + * Go to the next state in the parser. + * + * @param[in] parser Required. The CSS parser object. + * @param[in] next Required. Next state callback. + * @param[in] back Required. State callback to return to. + * @param[in] ctx Optional user pointer for the next state. + * Stored as-is; the parser doesn't own it. + * @param[in] root If true, marks this state as a "root" state. Root states + * are used by helper functions (e.g. to rewind to root). + * + * @return lxb_css_parser_state_t* if successful, otherwise NULL. + */ +LXB_API lxb_css_parser_state_t * +lxb_css_parser_states_next(lxb_css_parser_t *parser, + lxb_css_parser_state_f next, + lxb_css_parser_state_f back, void *ctx, bool root); + +/* + * Push a token type to the parser. + * + * @param[in] parser Required. The CSS parser object. + * @param[in] type Required. Token type to push. + * + * @return LXB_STATUS_OK if successful, otherwise an error status value. + */ +LXB_API lxb_status_t +lxb_css_parser_types_push(lxb_css_parser_t *parser, + lxb_css_syntax_token_type_t type); + + /* * Inline functions */ @@ -350,32 +545,6 @@ lxb_css_parser_state_set(lxb_css_parser_t *parser, lxb_css_parser_state_f state) parser->rules->state = state; } -lxb_inline void -lxb_css_parser_state_block_set(lxb_css_parser_t *parser, - lxb_css_parser_state_f state) -{ - parser->block = state; -} - -lxb_inline void -lxb_css_parser_state_value_set(lxb_css_parser_t *parser, - lxb_css_parser_state_f state) -{ - lxb_css_parser_state_block_set(parser, state); -} - -lxb_inline void * -lxb_css_parser_context(lxb_css_parser_t *parser) -{ - return parser->context; -} - -lxb_inline void -lxb_css_parser_context_set(lxb_css_parser_t *parser, void *context) -{ - parser->context = context; -} - lxb_inline lxb_css_syntax_rule_t * lxb_css_parser_current_rule(lxb_css_parser_t *parser) { @@ -420,13 +589,6 @@ lxb_css_parser_states_set_back(lxb_css_parser_t *parser) return true; } -lxb_inline void -lxb_css_parser_states_change_back(lxb_css_parser_t *parser, - lxb_css_parser_state_f state) -{ - parser->rules->state_back = state; -} - lxb_inline void lxb_css_parser_states_clean(lxb_css_parser_t *parser) { @@ -465,47 +627,127 @@ lxb_css_parser_log(lxb_css_parser_t *parser) return parser->log; } -lxb_inline void -lxb_css_parser_offset_set(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token) +lxb_inline const lxb_css_syntax_token_t * +lxb_css_parser_token_end(lxb_css_parser_t *parser, size_t offset) { - if (parser->pos == NULL) { - if (token == NULL) { - parser->pos = parser->tkz->in_begin; - parser->offset = 0; - } - else { - parser->pos = lxb_css_syntax_token_base(token)->begin - + lxb_css_syntax_token_base(token)->length; - parser->offset = token->offset + lxb_css_syntax_token_base(token)->length; - } - } + parser->token_end.offset = offset; + return &parser->token_end; } -lxb_inline const lxb_css_syntax_list_rules_offset_t * -lxb_css_parser_list_rules_offset(lxb_css_parser_t *parser) +lxb_inline void +lxb_css_parser_set_context(lxb_css_parser_t *parser, void *ctx) { - return &parser->rules->u.list_rules; + parser->rules->context = ctx; } -lxb_inline const lxb_css_syntax_at_rule_offset_t * -lxb_css_parser_at_rule_offset(lxb_css_parser_t *parser) +lxb_inline void +lxb_css_syntax_set_return(lxb_css_parser_t *parser, void *value) { - return &parser->rules->u.at_rule; + parser->rules[-1].returned = value; } -lxb_inline const lxb_css_syntax_qualified_offset_t * -lxb_css_parser_qualified_rule_offset(lxb_css_parser_t *parser) +lxb_inline void * +lxb_css_syntax_returned(lxb_css_parser_t *parser) { - return &parser->rules->u.qualified; + return parser->rules->returned; } -lxb_inline const lxb_css_syntax_declarations_offset_t * -lxb_css_parser_declarations_offset(lxb_css_parser_t *parser) -{ - return &parser->rules->u.declarations; -} +/* + * No-inline functions for ABI. + */ +LXB_API lxb_status_t +lxb_css_parser_status_noi(lxb_css_parser_t *parser); + +LXB_API lxb_css_memory_t * +lxb_css_parser_memory_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_memory_set_noi(lxb_css_parser_t *parser, lxb_css_memory_t *memory); + +LXB_API lxb_css_selectors_t * +lxb_css_parser_selectors_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_selectors_set_noi(lxb_css_parser_t *parser, + lxb_css_selectors_t *selectors); + +LXB_API bool +lxb_css_parser_is_running_noi(lxb_css_parser_t *parser); + +LXB_API bool +lxb_css_parser_status_is_unexpected_data_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_failed_set_noi(lxb_css_parser_t *parser, bool is); + +LXB_API void +lxb_css_parser_failed_set_by_id_noi(lxb_css_parser_t *parser, int idx, bool is); + +LXB_API bool +lxb_css_parser_is_failed_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_set_ok_noi(lxb_css_parser_t *parser); + +LXB_API const lxb_char_t * +lxb_css_parser_buffer_noi(lxb_css_parser_t *parser, size_t *length); + +LXB_API void +lxb_css_parser_buffer_set_noi(lxb_css_parser_t *parser, + const lxb_char_t *data, size_t length); + +LXB_API lxb_css_parser_state_f +lxb_css_parser_state_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_state_set_noi(lxb_css_parser_t *parser, + lxb_css_parser_state_f state); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_parser_current_rule_noi(lxb_css_parser_t *parser); + +LXB_API size_t +lxb_css_parser_rule_deep_noi(lxb_css_parser_t *parser); + +LXB_API lxb_css_parser_state_t * +lxb_css_parser_states_pop_noi(lxb_css_parser_t *parser); + +LXB_API lxb_css_parser_state_t * +lxb_css_parser_states_to_root_noi(lxb_css_parser_t *parser); + +LXB_API bool +lxb_css_parser_states_set_back_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_states_clean_noi(lxb_css_parser_t *parser); + +LXB_API lxb_css_parser_state_t * +lxb_css_parser_states_current_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_states_set_noi(lxb_css_parser_state_t *states, + lxb_css_parser_state_f state, void *context); + +LXB_API void +lxb_css_parser_states_up_noi(lxb_css_parser_t *parser); + +LXB_API void +lxb_css_parser_states_down_noi(lxb_css_parser_t *parser); + +LXB_API lxb_css_log_t * +lxb_css_parser_log_noi(lxb_css_parser_t *parser); + +LXB_API const lxb_css_syntax_token_t * +lxb_css_parser_token_end_noi(lxb_css_parser_t *parser, size_t offset); + +LXB_API void +lxb_css_parser_set_context_noi(lxb_css_parser_t *parser, void *ctx); + +LXB_API void +lxb_css_syntax_set_return_noi(lxb_css_parser_t *parser, void *value); +LXB_API void * +lxb_css_syntax_returned_noi(lxb_css_parser_t *parser); #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/css/property.c b/ext/lexbor/lexbor/css/property.c new file mode 100644 index 000000000000..6e460c3492f8 --- /dev/null +++ b/ext/lexbor/lexbor/css/property.c @@ -0,0 +1,3171 @@ +/* + * Copyright (C) 2021-2023 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/css.h" +#include "lexbor/css/property.h" +#include "lexbor/css/parser.h" +#include "lexbor/css/stylesheet.h" +#include "lexbor/css/property/state.h" +#include "lexbor/css/property/res.h" +#include "lexbor/core/serialize.h" +#include "lexbor/core/conv.h" + + +const lxb_css_entry_data_t * +lxb_css_property_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_property_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_entry_data_t * +lxb_css_property_by_id(uintptr_t id) +{ + return &lxb_css_property_data[id]; +} + +const void * +lxb_css_property_initial_by_id(uintptr_t id) +{ + if (id >= LXB_CSS_PROPERTY__LAST_ENTRY) { + return NULL; + } + + return lxb_css_property_data[id].initial; +} + +void * +lxb_css_property_destroy(lxb_css_memory_t *memory, void *style, + lxb_css_property_type_t type, bool self_destroy) +{ + const lxb_css_entry_data_t *data; + + data = lxb_css_property_by_id(type); + if (data == NULL) { + return style; + } + + return data->destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_serialize(const void *style, lxb_css_property_type_t type, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_entry_data_t *data; + + data = lxb_css_property_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + return data->serialize(style, cb, ctx); +} + +lxb_status_t +lxb_css_property_serialize_str(const void *style, lxb_css_property_type_t type, + lexbor_mraw_t *mraw, lexbor_str_t *str) +{ + const lxb_css_entry_data_t *data; + + data = lxb_css_property_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + return lxb_css_serialize_str_handler(style, str, mraw, data->serialize); +} + +lxb_status_t +lxb_css_property_serialize_name(const void *style, lxb_css_property_type_t type, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_entry_data_t *data; + + switch (type) { + case LXB_CSS_PROPERTY__UNDEF: + return lxb_css_property__undef_serialize_name(style, cb, ctx); + + case LXB_CSS_PROPERTY__CUSTOM: + return lxb_css_property__custom_serialize_name(style, cb, ctx); + + default: + break; + } + + data = lxb_css_property_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + return cb(data->name, data->length, ctx); +} + +lxb_status_t +lxb_css_property_serialize_name_str(const void *style, lxb_css_property_type_t type, + lexbor_mraw_t *mraw, lexbor_str_t *str) +{ + const lxb_css_entry_data_t *data; + + switch (type) { + case LXB_CSS_PROPERTY__UNDEF: + return lxb_css_serialize_str_handler(style, str, mraw, + lxb_css_property__undef_serialize_name); + + case LXB_CSS_PROPERTY__CUSTOM: + return lxb_css_serialize_str_handler(style, str, mraw, + lxb_css_property__custom_serialize_name); + + default: + break; + } + + data = lxb_css_property_by_id(type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + if (str->data == NULL) { + lexbor_str_init(str, mraw, data->length); + if (str->data == NULL) { + return LXB_STATUS_ERROR_MEMORY_ALLOCATION; + } + } + + (void) lexbor_str_append(str, mraw, data->name, data->length); + + return LXB_STATUS_OK; +} + +/* _undef. */ + +void * +lxb_css_property__undef_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property__undef_t)); +} + +void * +lxb_css_property__undef_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + if (style == NULL) { + return NULL; + } + + if (self_destroy) { + return lexbor_mraw_free(memory->mraw, style); + } + + return style; +} + +lxb_status_t +lxb_css_property__undef_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property__undef_t *undef = style; + + return cb(undef->value.data, undef->value.length, ctx); +} + +lxb_status_t +lxb_css_property__undef_serialize_name(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property__undef_t *undef = style; + const lxb_css_entry_data_t *data; + + if (undef->type == LXB_CSS_PROPERTY__UNDEF) { + return LXB_STATUS_OK; + } + + data = lxb_css_property_by_id(undef->type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + return cb(data->name, data->length, ctx); +} + +lxb_status_t +lxb_css_property__undef_serialize_value(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property__undef_t *undef = style; + + if (undef->type == LXB_CSS_PROPERTY__UNDEF) { + return cb(undef->value.data, undef->value.length, ctx); + } + + return LXB_STATUS_OK; +} + +/* _custom. */ + +void * +lxb_css_property__custom_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property__custom_t)); +} + +void * +lxb_css_property__custom_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + if (style == NULL) { + return NULL; + } + + if (self_destroy) { + return lexbor_mraw_free(memory->mraw, style); + } + + return style; +} + +lxb_status_t +lxb_css_property__custom_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property__custom_t *custom = style; + + if (custom->value.data == NULL) { + return LXB_STATUS_OK; + } + + return cb(custom->value.data, custom->value.length, ctx); +} + +lxb_status_t +lxb_css_property__custom_serialize_name(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property__custom_t *custom = style; + + return cb(custom->name.data, custom->name.length, ctx); +} + +lxb_status_t +lxb_css_property__custom_serialize_value(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property__custom_t *custom = style; + + if (custom->value.data == NULL) { + return LXB_STATUS_OK; + } + + return cb(custom->value.data, custom->value.length, ctx); +} + +/* Display. */ + +void * +lxb_css_property_display_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_display_t)); +} + +void * +lxb_css_property_display_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_display_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_data_t *data; + const lxb_css_property_display_t *display = property; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + data = lxb_css_value_by_id(display->a); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + lexbor_serialize_write(cb, data->name, data->length, ctx, status); + + if (display->b == LXB_CSS_PROPERTY__UNDEF) { + return LXB_STATUS_OK; + } + + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + data = lxb_css_value_by_id(display->b); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + lexbor_serialize_write(cb, data->name, data->length, ctx, status); + + if (display->c == LXB_CSS_PROPERTY__UNDEF) { + return LXB_STATUS_OK; + } + + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + data = lxb_css_value_by_id(display->c); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + lexbor_serialize_write(cb, data->name, data->length, ctx, status); + + return LXB_STATUS_OK; +} + +/* Order. */ + +void * +lxb_css_property_order_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_order_t)); +} + +void * +lxb_css_property_order_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_order_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_integer_type_sr(style, cb, ctx); +} + +/* Visibility. */ + +void * +lxb_css_property_visibility_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_visibility_t)); +} + +void * +lxb_css_property_visibility_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_visibility_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_visibility_t *vb = style; + + return lxb_css_value_serialize(vb->type, cb, ctx); +} + +/* Width. */ + +void * +lxb_css_property_width_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_width_t)); +} + +void * +lxb_css_property_width_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_width_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_width_t *width = property; + + switch (width->type) { + case LXB_CSS_VALUE__LENGTH: + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_length_sr(&width->u.length, cb, ctx); + + case LXB_CSS_VALUE__PERCENTAGE: + return lxb_css_value_percentage_sr(&width->u.percentage, cb, ctx); + + case LXB_CSS_VALUE__UNDEF: + /* FIXME: ???? */ + break; + + default: + return lxb_css_value_serialize(width->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +/* Height. */ + +void * +lxb_css_property_height_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_height_t)); +} + +void * +lxb_css_property_height_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_height_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_width_serialize(property, cb, ctx); +} + +/* Box-sizing. */ + +void * +lxb_css_property_box_sizing_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_box_sizing_t)); +} + +void * +lxb_css_property_box_sizing_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_box_sizing_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_box_sizing_t *bsize = property; + + return lxb_css_value_serialize(bsize->type, cb, ctx); +} + +/* Min-width. */ + +void * +lxb_css_property_min_width_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_min_width_t)); +} + +void * +lxb_css_property_min_width_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_min_width_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_width_serialize(property, cb, ctx); +} + +/* Min-height. */ + +void * +lxb_css_property_min_height_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_min_height_t)); +} + +void * +lxb_css_property_min_height_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_min_height_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_width_serialize(property, cb, ctx); +} + +/* Max-width. */ + +void * +lxb_css_property_max_width_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_max_width_t)); +} + +void * +lxb_css_property_max_width_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_max_width_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_width_serialize(property, cb, ctx); +} + +/* Max-height. */ + +void * +lxb_css_property_max_height_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_max_height_t)); +} + +void * +lxb_css_property_max_height_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_max_height_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_width_serialize(property, cb, ctx); +} + +/* Margin. */ + +void * +lxb_css_property_margin_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_margin_t)); +} + +void * +lxb_css_property_margin_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_margin_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_margin_t *margin = property; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + /* Top. */ + + status = lxb_css_value_length_percentage_sr(&margin->top, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (margin->right.type == LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_OK; + } + + /* Right. */ + + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + status = lxb_css_value_length_percentage_sr(&margin->right, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (margin->bottom.type == LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_OK; + } + + /* Bottom. */ + + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + status = lxb_css_value_length_percentage_sr(&margin->bottom, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (margin->left.type == LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_OK; + } + + /* Left. */ + + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + return lxb_css_value_length_percentage_sr(&margin->left, cb, ctx); +} + +/* Margin-top. */ + +void * +lxb_css_property_margin_top_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_margin_top_t)); +} + +void * +lxb_css_property_margin_top_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_margin_top_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Margin-right. */ + +void * +lxb_css_property_margin_right_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_margin_right_t)); +} + +void * +lxb_css_property_margin_right_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_margin_right_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Margin-bottom. */ + +void * +lxb_css_property_margin_bottom_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_margin_bottom_t)); +} + +void * +lxb_css_property_margin_bottom_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_margin_bottom_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Margin-left. */ + +void * +lxb_css_property_margin_left_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_margin_left_t)); +} + +void * +lxb_css_property_margin_left_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_margin_left_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Padding. */ + +void * +lxb_css_property_padding_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_padding_t)); +} + +void * +lxb_css_property_padding_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_padding_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_margin_serialize(property, cb, ctx); +} + +/* Padding-top. */ + +void * +lxb_css_property_padding_top_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_padding_top_t)); +} + +void * +lxb_css_property_padding_top_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_padding_top_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Padding-right. */ + +void * +lxb_css_property_padding_right_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_padding_right_t)); +} + +void * +lxb_css_property_padding_right_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_padding_right_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Padding-bottom. */ + +void * +lxb_css_property_padding_bottom_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_padding_bottom_t)); +} + +void * +lxb_css_property_padding_bottom_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_padding_bottom_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Padding-left. */ + +void * +lxb_css_property_padding_left_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_padding_left_t)); +} + +void * +lxb_css_property_padding_left_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_padding_left_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(property, cb, ctx); +} + +/* Border. */ + +void * +lxb_css_property_border_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_border_t)); +} + +void * +lxb_css_property_border_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_border_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + bool ws_print; + lxb_status_t status; + const lxb_css_property_border_t *border = property; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + ws_print = false; + + if (border->width.type != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_length_type_sr(&border->width, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + ws_print = true; + } + + if (border->style != LXB_CSS_VALUE__UNDEF) { + if (ws_print) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_serialize(border->style, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + ws_print = true; + } + + if (border->color.type != LXB_CSS_VALUE__UNDEF) { + if (ws_print) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_value_color_serialize(&border->color, cb, ctx); + } + + return LXB_STATUS_OK; +} + +/* Border-top. */ + +void * +lxb_css_property_border_top_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_border_top_t)); +} + +void * +lxb_css_property_border_top_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_border_top_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_border_serialize(property, cb, ctx); +} + +/* Border-right. */ + +void * +lxb_css_property_border_right_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_border_right_t)); +} + +void * +lxb_css_property_border_right_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_border_right_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_border_serialize(property, cb, ctx); +} + +/* Border-bottom. */ + +void * +lxb_css_property_border_bottom_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_border_bottom_t)); +} + +void * +lxb_css_property_border_bottom_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_border_bottom_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_border_serialize(property, cb, ctx); +} + +/* Border-left. */ + +void * +lxb_css_property_border_left_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_border_left_t)); +} + +void * +lxb_css_property_border_left_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_border_left_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_border_serialize(property, cb, ctx); +} + +void * +lxb_css_property_border_top_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_border_top_color_t)); +} + +void * +lxb_css_property_border_top_color_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_border_top_color_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_color_serialize(style, cb, ctx); +} + +void * +lxb_css_property_border_right_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_border_right_color_t)); +} + +void * +lxb_css_property_border_right_color_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_border_right_color_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_color_serialize(style, cb, ctx); +} + +void * +lxb_css_property_border_bottom_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_border_bottom_color_t)); +} + +void * +lxb_css_property_border_bottom_color_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_border_bottom_color_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_color_serialize(style, cb, ctx); +} + +void * +lxb_css_property_border_left_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_border_left_color_t)); +} + +void * +lxb_css_property_border_left_color_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_border_left_color_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_color_serialize(style, cb, ctx); +} + +void * +lxb_css_property_background_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_background_color_t)); +} + +void * +lxb_css_property_background_color_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_background_color_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_color_serialize(style, cb, ctx); +} + +/* Color. */ + +void * +lxb_css_property_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_color_t)); +} + +void * +lxb_css_property_color_destroy(lxb_css_memory_t *memory, + void *property, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, property, self_destroy); +} + +lxb_status_t +lxb_css_property_color_serialize(const void *property, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_color_serialize(property, cb, ctx); +} + +void * +lxb_css_property_opacity_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_opacity_t)); +} + +void * +lxb_css_property_opacity_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_opacity_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_number_percentage_sr(style, cb, ctx); +} + +void * +lxb_css_property_position_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_position_t)); +} + +void * +lxb_css_property_position_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_position_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_position_t *position = style; + + return lxb_css_value_serialize(position->type, cb, ctx); +} + +void * +lxb_css_property_top_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_top_t)); +} + +void * +lxb_css_property_top_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_top_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(style, cb, ctx); +} + +void * +lxb_css_property_right_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_right_t)); +} + +void * +lxb_css_property_right_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_right_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +void * +lxb_css_property_bottom_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_bottom_t)); +} + +void * +lxb_css_property_bottom_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_bottom_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +void * +lxb_css_property_left_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_left_t)); +} + +void * +lxb_css_property_left_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_left_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +void * +lxb_css_property_inset_block_start_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_inset_block_start_t)); +} + +void * +lxb_css_property_inset_block_start_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_inset_block_start_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +void * +lxb_css_property_inset_inline_start_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_inset_inline_start_t)); +} + +void * +lxb_css_property_inset_inline_start_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_inset_inline_start_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +void * +lxb_css_property_inset_block_end_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_inset_block_end_t)); +} + +void * +lxb_css_property_inset_block_end_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_inset_block_end_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +void * +lxb_css_property_inset_inline_end_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_inset_inline_end_t)); +} + +void * +lxb_css_property_inset_inline_end_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_inset_inline_end_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_top_serialize(style, cb, ctx); +} + +/* Text-transform. */ + +LXB_API void * +lxb_css_property_text_transform_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_transform_t)); +} + +LXB_API void * +lxb_css_property_text_transform_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_transform_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + bool ws_print; + lxb_status_t status; + const lxb_css_property_text_transform_t *tt = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + ws_print = false; + + if (tt->type_case != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_serialize(tt->type_case, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + ws_print = true; + } + + if (tt->full_width != LXB_CSS_VALUE__UNDEF) { + if (ws_print) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_serialize(tt->full_width, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + ws_print = true; + } + + if (tt->full_size_kana != LXB_CSS_VALUE__UNDEF) { + if (ws_print) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_value_serialize(tt->full_size_kana, cb, ctx); + } + + return LXB_STATUS_OK; +} + +/* Text-align. */ + +LXB_API void * +lxb_css_property_text_align_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_align_t)); +} + +LXB_API void * +lxb_css_property_text_align_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_align_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_align_t *ta = style; + + return lxb_css_value_serialize(ta->type, cb, ctx); +} + +/* Text-align-all. */ + +LXB_API void * +lxb_css_property_text_align_all_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_align_all_t)); +} + +LXB_API void * +lxb_css_property_text_align_all_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_align_all_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_align_all_t *taa = style; + + return lxb_css_value_serialize(taa->type, cb, ctx); +} + +/* Text-align-last. */ + +LXB_API void * +lxb_css_property_text_align_last_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_align_last_t)); +} + +LXB_API void * +lxb_css_property_text_align_last_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_align_last_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_align_last_t *tal = style; + + return lxb_css_value_serialize(tal->type, cb, ctx); +} + +/* Text-justify. */ + +LXB_API void * +lxb_css_property_text_justify_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_justify_t)); +} + +LXB_API void * +lxb_css_property_text_justify_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_justify_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_justify_t *tj = style; + + return lxb_css_value_serialize(tj->type, cb, ctx); +} + +/* Text-indent. */ + +LXB_API void * +lxb_css_property_text_indent_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_indent_t)); +} + +LXB_API void * +lxb_css_property_text_indent_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_indent_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_text_indent_t *ti = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + if (ti->type == LXB_CSS_VALUE__LENGTH) { + status = lxb_css_value_length_percentage_sr(&ti->length, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + else if (ti->type != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_serialize(ti->type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + + if (ti->hanging != LXB_CSS_VALUE__UNDEF) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + status = lxb_css_value_serialize(ti->hanging, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + + if (ti->each_line != LXB_CSS_VALUE__UNDEF) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + return lxb_css_value_serialize(ti->each_line, cb, ctx); + } + + return LXB_STATUS_OK; +} + +/* White-space. */ + +LXB_API void * +lxb_css_property_white_space_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_white_space_t)); +} + +LXB_API void * +lxb_css_property_white_space_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_white_space_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_white_space_t *ws = style; + + return lxb_css_value_serialize(ws->type, cb, ctx); +} + +/* Tab-size. */ + +LXB_API void * +lxb_css_property_tab_size_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_tab_size_t)); +} + +LXB_API void * +lxb_css_property_tab_size_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_tab_size_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_number_length_sr(style, cb, ctx); +} + +/* Word-break. */ + +LXB_API void * +lxb_css_property_word_break_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_word_break_t)); +} + +LXB_API void * +lxb_css_property_word_break_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_word_break_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_word_break_t *wb = style; + + return lxb_css_value_serialize(wb->type, cb, ctx); +} + +/* Line-break. */ + +LXB_API void * +lxb_css_property_line_break_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_line_break_t)); +} + +LXB_API void * +lxb_css_property_line_break_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_line_break_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_line_break_t *lb = style; + + return lxb_css_value_serialize(lb->type, cb, ctx); +} + +/* Hyphens. */ + +LXB_API void * +lxb_css_property_hyphens_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_hyphens_t)); +} + +LXB_API void * +lxb_css_property_hyphens_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_hyphens_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_hyphens_t *hpns = style; + + return lxb_css_value_serialize(hpns->type, cb, ctx); +} + +/* Overflow-wrap. */ + +LXB_API void * +lxb_css_property_overflow_wrap_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_overflow_wrap_t)); +} + +LXB_API void * +lxb_css_property_overflow_wrap_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_overflow_wrap_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_overflow_wrap_t *ow = style; + + return lxb_css_value_serialize(ow->type, cb, ctx); +} + +/* Word-wrap. */ + +LXB_API void * +lxb_css_property_word_wrap_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_word_wrap_t)); +} + +LXB_API void * +lxb_css_property_word_wrap_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_word_wrap_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_word_wrap_t *ww = style; + + return lxb_css_value_serialize(ww->type, cb, ctx); +} + +/* Word-spacing. */ + +LXB_API void * +lxb_css_property_word_spacing_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_word_spacing_t)); +} + +LXB_API void * +lxb_css_property_word_spacing_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_word_spacing_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_type_sr(style, cb, ctx); +} + +/* Letter-spacing. */ + +LXB_API void * +lxb_css_property_letter_spacing_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_letter_spacing_t)); +} + +LXB_API void * +lxb_css_property_letter_spacing_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_letter_spacing_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_type_sr(style, cb, ctx); +} + +/* Hanging-punctuation. */ + +LXB_API void * +lxb_css_property_hanging_punctuation_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_hanging_punctuation_t)); +} + +LXB_API void * +lxb_css_property_hanging_punctuation_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_hanging_punctuation_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + bool ws_print; + lxb_status_t status; + const lxb_css_property_hanging_punctuation_t *hp = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + ws_print = false; + + if (hp->type_first != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_serialize(hp->type_first, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + ws_print = true; + } + + if (hp->force_allow != LXB_CSS_VALUE__UNDEF) { + if (ws_print) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_serialize(hp->force_allow, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + ws_print = true; + } + + if (hp->last != LXB_CSS_VALUE__UNDEF) { + if (ws_print) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_value_serialize(hp->last, cb, ctx); + } + + return LXB_STATUS_OK; +} + +/* Font-family. */ + +void * +lxb_css_property_font_family_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_font_family_t)); +} + +void * +lxb_css_property_font_family_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + lxb_css_property_font_family_t *ff = style; + lxb_css_property_family_name_t *name, *next; + + name = ff->first; + + while (name != NULL) { + next = name->next; + + if (!name->generic) { + (void) lexbor_str_destroy(&name->u.str, memory->mraw, false); + } + + lexbor_mraw_free(memory->mraw, name); + + name = next; + } + + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_font_family_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_font_family_t *ff = style; + const lxb_css_property_family_name_t *name; + + static const lexbor_str_t str_comma = lexbor_str(", "); + + name = ff->first; + + while (name != NULL) { + if (name->generic) { + status = lxb_css_value_serialize(name->u.type, cb, ctx); + } + else { + status = lxb_css_syntax_ident_or_string_serialize(name->u.str.data, + name->u.str.length, + cb, ctx); + } + + if (status != LXB_STATUS_OK) { + return status; + } + + name = name->next; + + if (name != NULL) { + lexbor_serialize_write(cb, str_comma.data, str_comma.length, + ctx, status); + } + } + + return LXB_STATUS_OK; +} + +/* Font-weight. */ + +void * +lxb_css_property_font_weight_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_font_weight_t)); +} + +void * +lxb_css_property_font_weight_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_font_weight_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_number_type_sr(style, cb, ctx); +} + +/* Font-stretch. */ + +void * +lxb_css_property_font_stretch_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_font_stretch_t)); +} + +void * +lxb_css_property_font_stretch_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_font_stretch_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_percentage_type_sr(style, cb, ctx); +} + +/* Font-style. */ + +void * +lxb_css_property_font_style_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_font_style_t)); +} + +void * +lxb_css_property_font_style_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +lxb_status_t +lxb_css_property_font_style_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_font_style_t *fs = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + status = lxb_css_value_serialize(fs->type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (fs->angle.unit != (lxb_css_unit_angle_t) LXB_CSS_UNIT__UNDEF) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + status = lxb_css_value_angle_sr(&fs->angle, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + + return LXB_STATUS_OK; +} + +/* Font-size. */ + +LXB_API void * +lxb_css_property_font_size_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_font_size_t)); +} + +LXB_API void * +lxb_css_property_font_size_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_font_size_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_type_sr(style, cb, ctx); +} + +/* Float-reference. */ + +LXB_API void * +lxb_css_property_float_reference_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_float_reference_t)); +} + +LXB_API void * +lxb_css_property_float_reference_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_float_reference_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_float_reference_t *fr = style; + + return lxb_css_value_serialize(fr->type, cb, ctx); +} + +/* Float. */ + +LXB_API void * +lxb_css_property_float_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_float_t)); +} + +LXB_API void * +lxb_css_property_float_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_float_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_float_t *flt = style; + + static const lexbor_str_t str_o = lexbor_str("("); + static const lexbor_str_t str_cm = lexbor_str(", "); + static const lexbor_str_t str_c = lexbor_str(")"); + + status = lxb_css_value_serialize(flt->type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (flt->length.type != LXB_CSS_VALUE__LENGTH) { + return LXB_STATUS_OK; + } + + lexbor_serialize_write(cb, str_o.data, str_o.length, ctx, status); + + status = lxb_css_value_length_sr(&flt->length.length, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (flt->snap_type == LXB_CSS_VALUE__UNDEF) { + return cb(str_c.data, str_c.length, ctx); + } + + lexbor_serialize_write(cb, str_cm.data, str_cm.length, ctx, status); + + status = lxb_css_value_serialize(flt->snap_type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + return cb(str_c.data, str_c.length, ctx); +} + +/* Clear. */ + +LXB_API void * +lxb_css_property_clear_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_clear_t)); +} + +LXB_API void * +lxb_css_property_clear_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_clear_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_clear_t *cls = style; + + return lxb_css_value_serialize(cls->type, cb, ctx); +} + +/* Float-defer. */ + +LXB_API void * +lxb_css_property_float_defer_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_float_defer_t)); +} + +LXB_API void * +lxb_css_property_float_defer_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_float_defer_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_float_defer_t *def = style; + + if (def->type == LXB_CSS_FLOAT_DEFER__INTEGER) { + return lxb_css_value_integer_sr(&def->integer, cb, ctx); + } + + return lxb_css_value_serialize(def->type, cb, ctx); +} + +/* Float-offset. */ + +LXB_API void * +lxb_css_property_float_offset_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_float_offset_t)); +} + +LXB_API void * +lxb_css_property_float_offset_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_float_offset_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(style, cb, ctx); +} + +/* Wrap-flow. */ + +LXB_API void * +lxb_css_property_wrap_flow_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_wrap_flow_t)); +} + +LXB_API void * +lxb_css_property_wrap_flow_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_wrap_flow_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_wrap_flow_t *wf = style; + + return lxb_css_value_serialize(wf->type, cb, ctx); +} + +/* Wrap-through. */ + +LXB_API void * +lxb_css_property_wrap_through_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_wrap_through_t)); +} + +LXB_API void * +lxb_css_property_wrap_through_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_wrap_through_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_wrap_through_t *wt = style; + + return lxb_css_value_serialize(wt->type, cb, ctx); +} + +/* Flex-direction. */ + +LXB_API void * +lxb_css_property_flex_direction_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_flex_direction_t)); +} + +LXB_API void * +lxb_css_property_flex_direction_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_direction_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_flex_direction_t *fd = style; + + return lxb_css_value_serialize(fd->type, cb, ctx); +} + +/* Flex-wrap. */ + +LXB_API void * +lxb_css_property_flex_wrap_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_flex_wrap_t)); +} + +LXB_API void * +lxb_css_property_flex_wrap_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_wrap_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_flex_wrap_t *fw = style; + + return lxb_css_value_serialize(fw->type, cb, ctx); +} + +/* Flex-flow. */ + +LXB_API void * +lxb_css_property_flex_flow_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_flex_flow_t)); +} + +LXB_API void * +lxb_css_property_flex_flow_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_flow_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_flex_flow_t *ff = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + if (ff->type_direction != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_serialize(ff->type_direction, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + + if (ff->wrap != LXB_CSS_VALUE__UNDEF) { + if (ff->type_direction != LXB_CSS_VALUE__UNDEF) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_value_serialize(ff->wrap, cb, ctx); + } + + return LXB_STATUS_OK; +} + +/* Flex. */ + +LXB_API void * +lxb_css_property_flex_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_flex_t)); +} + +LXB_API void * +lxb_css_property_flex_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_flex_t *flex = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + if (flex->type != LXB_CSS_VALUE__UNDEF) { + return lxb_css_value_serialize(flex->type, cb, ctx); + } + + if (flex->grow.type != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_number_sr(&flex->grow.number, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (flex->shrink.type != LXB_CSS_VALUE__UNDEF) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + status = lxb_css_value_number_sr(&flex->shrink.number, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + } + + if (flex->basis.type == LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_OK; + } + + if (flex->grow.type != LXB_CSS_VALUE__UNDEF) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_property_flex_basis_serialize(&flex->basis, cb, ctx); +} + +/* Flex-grow. */ + +LXB_API void * +lxb_css_property_flex_grow_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_flex_grow_t)); +} + +LXB_API void * +lxb_css_property_flex_grow_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_grow_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_number_type_sr(style, cb, ctx); +} + +/* Flex-shrink. */ + +LXB_API void * +lxb_css_property_flex_shrink_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_flex_shrink_t)); +} + +LXB_API void * +lxb_css_property_flex_shrink_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_shrink_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_number_type_sr(style, cb, ctx); +} + +/* Flex-basis. */ + +LXB_API void * +lxb_css_property_flex_basis_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_flex_basis_t)); +} + +LXB_API void * +lxb_css_property_flex_basis_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_flex_basis_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_width_serialize(style, cb, ctx); +} + +/* Justify-content. */ + +LXB_API void * +lxb_css_property_justify_content_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_justify_content_t)); +} + +LXB_API void * +lxb_css_property_justify_content_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_justify_content_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_justify_content_t *jc = style; + + return lxb_css_value_serialize(jc->type, cb, ctx); +} + +/* Align-items. */ + +LXB_API void * +lxb_css_property_align_items_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_align_items_t)); +} + +LXB_API void * +lxb_css_property_align_items_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_align_items_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_align_items_t *ai = style; + + return lxb_css_value_serialize(ai->type, cb, ctx); +} + +/* Align-self. */ + +LXB_API void * +lxb_css_property_align_self_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_align_self_t)); +} + +LXB_API void * +lxb_css_property_align_self_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_align_self_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_align_self_t *as = style; + + return lxb_css_value_serialize(as->type, cb, ctx); +} + +/* Align-content. */ + +LXB_API void * +lxb_css_property_align_content_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_align_content_t)); +} + +LXB_API void * +lxb_css_property_align_content_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_align_content_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_align_content_t *ac = style; + + return lxb_css_value_serialize(ac->type, cb, ctx); +} + +/* Dominant-baseline. */ + +LXB_API void * +lxb_css_property_dominant_baseline_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_dominant_baseline_t)); +} + +LXB_API void * +lxb_css_property_dominant_baseline_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_dominant_baseline_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_dominant_baseline_t *db = style; + + return lxb_css_value_serialize(db->type, cb, ctx); +} + +/* Vertical-align. */ + +LXB_API void * +lxb_css_property_vertical_align_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_vertical_align_t)); +} + +LXB_API void * +lxb_css_property_vertical_align_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_vertical_align_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + bool is; + lxb_status_t status; + const lxb_css_property_vertical_align_t *va = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + is = false; + + if (va->type != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_serialize(va->type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + is = true; + } + + if (va->alignment.type != LXB_CSS_VALUE__UNDEF) { + if (is) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_serialize(va->alignment.type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + is = true; + } + + if (va->shift.type != LXB_CSS_VALUE__UNDEF) { + if (is) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_length_percentage_sr(&va->shift, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + + return LXB_STATUS_OK; +} + +/* Baseline-source. */ + +LXB_API void * +lxb_css_property_baseline_source_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_baseline_source_t)); +} + +LXB_API void * +lxb_css_property_baseline_source_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_baseline_source_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_baseline_source_t *bs = style; + + return lxb_css_value_serialize(bs->type, cb, ctx); +} + +/* Alignment-baseline. */ + +LXB_API void * +lxb_css_property_alignment_baseline_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_alignment_baseline_t)); +} + +LXB_API void * +lxb_css_property_alignment_baseline_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_alignment_baseline_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_alignment_baseline_t *ab = style; + + return lxb_css_value_serialize(ab->type, cb, ctx); +} + +/* Baseline-shift. */ + +LXB_API void * +lxb_css_property_baseline_shift_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_baseline_shift_t)); +} + +LXB_API void * +lxb_css_property_baseline_shift_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_baseline_shift_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_length_percentage_sr(style, cb, ctx); +} + +/* Line-height. */ + +LXB_API void * +lxb_css_property_line_height_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_line_height_t)); +} + +LXB_API void * +lxb_css_property_line_height_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_line_height_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_number_length_percentage_type_sr(style, cb, ctx); +} + +/* Z-index. */ + +LXB_API void * +lxb_css_property_z_index_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_property_z_index_t)); +} + +LXB_API void * +lxb_css_property_z_index_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_z_index_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_value_integer_type_sr(style, cb, ctx); +} + +/* Direction. */ + +LXB_API void * +lxb_css_property_direction_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_direction_t)); +} + +LXB_API void * +lxb_css_property_direction_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_direction_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_direction_t *dr = style; + + return lxb_css_value_serialize(dr->type, cb, ctx); +} + +/* Unicode-bidi. */ + +LXB_API void * +lxb_css_property_unicode_bidi_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_unicode_bidi_t)); +} + +LXB_API void * +lxb_css_property_unicode_bidi_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_unicode_bidi_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_unicode_bidi_t *ub = style; + + return lxb_css_value_serialize(ub->type, cb, ctx); +} + +/* Writing-mode. */ + +LXB_API void * +lxb_css_property_writing_mode_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_writing_mode_t)); +} + +LXB_API void * +lxb_css_property_writing_mode_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_writing_mode_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_writing_mode_t *wm = style; + + return lxb_css_value_serialize(wm->type, cb, ctx); +} + +/* Text-orientation. */ + +LXB_API void * +lxb_css_property_text_orientation_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_orientation_t)); +} + +LXB_API void * +lxb_css_property_text_orientation_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_orientation_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_orientation_t *to = style; + + return lxb_css_value_serialize(to->type, cb, ctx); +} + +/* Text-combine-upright. */ + +LXB_API void * +lxb_css_property_text_combine_upright_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_combine_upright_t)); +} + +LXB_API void * +lxb_css_property_text_combine_upright_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_combine_upright_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_property_text_combine_upright_t *tcu = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + if (tcu->type == LXB_CSS_TEXT_COMBINE_UPRIGHT_DIGITS) { + status = lxb_css_value_serialize(tcu->type, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (tcu->digits.num != 0) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + + return lxb_css_value_integer_sr(&tcu->digits, cb, ctx); + } + + return LXB_STATUS_OK; + } + + return lxb_css_value_serialize(tcu->type, cb, ctx); +} + +/* Overflow-x. */ + +LXB_API void * +lxb_css_property_overflow_x_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_overflow_x_t)); +} + +LXB_API void * +lxb_css_property_overflow_x_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_overflow_x_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_overflow_x_t *ox = style; + + return lxb_css_value_serialize(ox->type, cb, ctx); +} + +/* Overflow-y. */ + +LXB_API void * +lxb_css_property_overflow_y_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_overflow_y_t)); +} + +LXB_API void * +lxb_css_property_overflow_y_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_overflow_y_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_overflow_y_t *oy = style; + + return lxb_css_value_serialize(oy->type, cb, ctx); +} + +/* Overflow-block. */ + +LXB_API void * +lxb_css_property_overflow_block_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_overflow_block_t)); +} + +LXB_API void * +lxb_css_property_overflow_block_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_overflow_block_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_overflow_block_t *ob = style; + + return lxb_css_value_serialize(ob->type, cb, ctx); +} + +/* Overflow-inline. */ + +LXB_API void * +lxb_css_property_overflow_inline_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_overflow_inline_t)); +} + +LXB_API void * +lxb_css_property_overflow_inline_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_overflow_inline_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_overflow_inline_t *oi = style; + + return lxb_css_value_serialize(oi->type, cb, ctx); +} + +/* Text-overflow. */ + +LXB_API void * +lxb_css_property_text_overflow_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_overflow_t)); +} + +LXB_API void * +lxb_css_property_text_overflow_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_overflow_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_overflow_t *to = style; + + return lxb_css_value_serialize(to->type, cb, ctx); +} + +/* Text-decoration-line. */ + +LXB_API void * +lxb_css_property_text_decoration_line_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_decoration_line_t)); +} + +LXB_API void * +lxb_css_property_text_decoration_line_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_decoration_line_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + bool itis; + lxb_status_t status; + const lxb_css_property_text_decoration_line_t *tdl = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + itis = false; + + if (tdl->underline != LXB_CSS_VALUE__UNDEF) { + status = lxb_css_value_serialize(tdl->underline, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + itis = true; + } + + if (tdl->overline != LXB_CSS_VALUE__UNDEF) { + if (itis) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_serialize(tdl->overline, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + itis = true; + } + + if (tdl->line_through != LXB_CSS_VALUE__UNDEF) { + if (itis) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_value_serialize(tdl->line_through, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + itis = true; + } + + if (tdl->blink != LXB_CSS_VALUE__UNDEF) { + if (itis) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_value_serialize(tdl->blink, cb, ctx); + } + + if (itis) { + return LXB_STATUS_OK; + } + + return lxb_css_value_serialize(tdl->type, cb, ctx); +} + +/* Text-decoration-style. */ + +LXB_API void * +lxb_css_property_text_decoration_style_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_decoration_style_t)); +} + +LXB_API void * +lxb_css_property_text_decoration_style_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_decoration_style_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_property_text_decoration_style_t *tds = style; + + return lxb_css_value_serialize(tds->type, cb, ctx); +} + +/* Text-decoration-color. */ + +LXB_API void * +lxb_css_property_text_decoration_color_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_decoration_color_t)); +} + +LXB_API void * +lxb_css_property_text_decoration_color_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_decoration_color_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_color_serialize(style, cb, ctx); +} + +/* Text-decoration. */ + +LXB_API void * +lxb_css_property_text_decoration_create(lxb_css_memory_t *memory) +{ + return lexbor_mraw_calloc(memory->mraw, + sizeof(lxb_css_property_text_decoration_t)); +} + +LXB_API void * +lxb_css_property_text_decoration_destroy(lxb_css_memory_t *memory, + void *style, bool self_destroy) +{ + return lxb_css_property__undef_destroy(memory, style, self_destroy); +} + +LXB_API lxb_status_t +lxb_css_property_text_decoration_serialize(const void *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + bool itis; + lxb_status_t status; + const lxb_css_property_text_decoration_t *td = style; + + static const lexbor_str_t str_ws = lexbor_str(" "); + + itis = false; + + if (td->line.type != LXB_CSS_VALUE__UNDEF + || td->line.underline != LXB_CSS_VALUE__UNDEF + || td->line.overline != LXB_CSS_VALUE__UNDEF + || td->line.line_through != LXB_CSS_VALUE__UNDEF + || td->line.blink != LXB_CSS_VALUE__UNDEF) + { + status = lxb_css_property_text_decoration_line_serialize(&td->line, + cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + itis = true; + } + + if (td->style.type != LXB_CSS_VALUE__UNDEF) { + if (itis) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + status = lxb_css_property_text_decoration_style_serialize(&td->style, + cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + itis = true; + } + + if (td->color.type != LXB_CSS_VALUE__UNDEF) { + if (itis) { + lexbor_serialize_write(cb, str_ws.data, str_ws.length, ctx, status); + } + + return lxb_css_property_text_decoration_color_serialize(&td->color, + cb, ctx); + } + + return LXB_STATUS_OK; +} diff --git a/ext/lexbor/lexbor/css/property/const.h b/ext/lexbor/lexbor/css/property/const.h index 8ee24481c6a3..4f90bc1c107b 100644 --- a/ext/lexbor/lexbor/css/property/const.h +++ b/ext/lexbor/lexbor/css/property/const.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/css/property/res.h b/ext/lexbor/lexbor/css/property/res.h index 35cce1959013..eb5b90304a09 100644 --- a/ext/lexbor/lexbor/css/property/res.h +++ b/ext/lexbor/lexbor/css/property/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/css/property/state.c b/ext/lexbor/lexbor/css/property/state.c new file mode 100644 index 000000000000..198ef145615d --- /dev/null +++ b/ext/lexbor/lexbor/css/property/state.c @@ -0,0 +1,5343 @@ +/* + * Copyright (C) 2021-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/property.h" +#include "lexbor/css/parser.h" +#include "lexbor/css/rule.h" +#include "lexbor/css/value.h" +#include "lexbor/css/unit.h" +#include "lexbor/css/property/state.h" +#include "lexbor/css/property/res.h" + + +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; +#endif + +#include "lexbor/core/conv.h" + + +#define lxb_css_property_state_check_token(parser, token) \ + if ((token) == NULL) { \ + return lxb_css_parser_memory_fail(parser); \ + } + +#define lxb_css_property_state_get_type(parser, token, type) \ + do { \ + lxb_css_syntax_parser_consume(parser); \ + \ + token = lxb_css_syntax_parser_token_wo_ws(parser); \ + lxb_css_property_state_check_token(parser, token); \ + \ + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { \ + return lxb_css_parser_success(parser); \ + } \ + \ + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, \ + lxb_css_syntax_token_ident(token)->length); \ + } \ + while (false) + +#define LXB_CSS_PROPERTY_STATE_HEX_MASK(n) \ + ((((uint32_t) 1 << (32 - (n))) - 1) << (n)) + + +static bool +lxb_css_property_state_color_rgba_old(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_color_t *color); +static bool +lxb_css_property_state_color_hsla_old(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_color_hsla_t *hsl); + +static bool +lxb_css_property_state_length(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_length_t *length) +{ + const lxb_css_data_t *unit; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_DIMENSION: + unit = lxb_css_unit_absolute_relative_by_name(lxb_css_syntax_token_dimension(token)->str.data, + lxb_css_syntax_token_dimension(token)->str.length); + if (unit == NULL) { + return false; + } + + length->num = lxb_css_syntax_token_dimension(token)->num.num; + length->is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + length->unit = (lxb_css_unit_t) unit->unique; + break; + + case LXB_CSS_SYNTAX_TOKEN_NUMBER: + if (lxb_css_syntax_token_number(token)->num != 0) { + return false; + } + + length->num = lxb_css_syntax_token_number(token)->num; + length->is_float = lxb_css_syntax_token_number(token)->is_float; + length->unit = LXB_CSS_UNIT__UNDEF; + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_length_percentage(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_length_percentage_t *lp) +{ + const lxb_css_data_t *unit; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_DIMENSION: + unit = lxb_css_unit_absolute_relative_by_name(lxb_css_syntax_token_dimension(token)->str.data, + lxb_css_syntax_token_dimension(token)->str.length); + if (unit == NULL) { + return false; + } + + lp->type = LXB_CSS_VALUE__LENGTH; + lp->u.length.num = lxb_css_syntax_token_dimension(token)->num.num; + lp->u.length.is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + lp->u.length.unit = (lxb_css_unit_t) unit->unique; + break; + + case LXB_CSS_SYNTAX_TOKEN_NUMBER: + if (lxb_css_syntax_token_number(token)->num != 0) { + return false; + } + + lp->type = LXB_CSS_VALUE__NUMBER; + lp->u.length.num = lxb_css_syntax_token_number(token)->num; + lp->u.length.is_float = lxb_css_syntax_token_number(token)->is_float; + lp->u.length.unit = LXB_CSS_UNIT__UNDEF; + break; + + case LXB_CSS_SYNTAX_TOKEN_PERCENTAGE: + lp->type = LXB_CSS_VALUE__PERCENTAGE; + lp->u.percentage.num = lxb_css_syntax_token_percentage(token)->num; + lp->u.percentage.is_float = lxb_css_syntax_token_percentage(token)->is_float; + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_number_length_percentage(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_number_length_percentage_t *nlp) +{ + const lxb_css_data_t *unit; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_DIMENSION: + unit = lxb_css_unit_absolute_relative_by_name(lxb_css_syntax_token_dimension(token)->str.data, + lxb_css_syntax_token_dimension(token)->str.length); + if (unit == NULL) { + return false; + } + + nlp->type = LXB_CSS_VALUE__LENGTH; + nlp->u.length.num = lxb_css_syntax_token_dimension(token)->num.num; + nlp->u.length.is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + nlp->u.length.unit = (lxb_css_unit_t) unit->unique; + break; + + case LXB_CSS_SYNTAX_TOKEN_NUMBER: + nlp->type = LXB_CSS_VALUE__NUMBER; + nlp->u.number.num = lxb_css_syntax_token_number(token)->num; + nlp->u.number.is_float = lxb_css_syntax_token_number(token)->is_float; + break; + + case LXB_CSS_SYNTAX_TOKEN_PERCENTAGE: + nlp->type = LXB_CSS_VALUE__PERCENTAGE; + nlp->u.percentage.num = lxb_css_syntax_token_percentage(token)->num; + nlp->u.percentage.is_float = lxb_css_syntax_token_percentage(token)->is_float; + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_number_length(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_number_length_t *nl) +{ + const lxb_css_data_t *unit; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_DIMENSION: + unit = lxb_css_unit_absolute_relative_by_name(lxb_css_syntax_token_dimension(token)->str.data, + lxb_css_syntax_token_dimension(token)->str.length); + if (unit == NULL) { + return false; + } + + nl->type = LXB_CSS_VALUE__LENGTH; + nl->u.length.num = lxb_css_syntax_token_dimension(token)->num.num; + nl->u.length.is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + nl->u.length.unit = (lxb_css_unit_t) unit->unique; + break; + + case LXB_CSS_SYNTAX_TOKEN_NUMBER: + nl->type = LXB_CSS_VALUE__NUMBER; + nl->u.number.num = lxb_css_syntax_token_number(token)->num; + nl->u.number.is_float = lxb_css_syntax_token_number(token)->is_float; + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_number(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_number_t *number) +{ + if (token->type != LXB_CSS_SYNTAX_TOKEN_NUMBER) { + return false; + } + + number->num = lxb_css_syntax_token_number(token)->num; + number->is_float = lxb_css_syntax_token_number(token)->is_float; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_integer(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_integer_t *intg) +{ + long ln; + double num; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_NUMBER) { + return false; + } + + num = lxb_css_syntax_token_number(token)->num; + ln = lexbor_conv_double_to_long(num); + + num = num - (double) ln; + + if (num < 0.0 || num > 0.0) { + return false; + } + + intg->num = ln; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_percentage(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_percentage_t *perc) +{ + if (token->type != LXB_CSS_SYNTAX_TOKEN_PERCENTAGE) { + return false; + } + + perc->num = lxb_css_syntax_token_percentage(token)->num; + perc->is_float = lxb_css_syntax_token_percentage(token)->is_float; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_number_percentage_none(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_number_percentage_t *np) +{ + double num; + lxb_css_value_type_t type; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_NUMBER) { + np->type = LXB_CSS_VALUE__NUMBER; + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_PERCENTAGE) { + np->type = LXB_CSS_VALUE__PERCENTAGE; + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + if (type != LXB_CSS_VALUE_NONE) { + return false; + } + + np->type = LXB_CSS_VALUE_NONE; + + lxb_css_syntax_parser_consume(parser); + + return true; + } + else { + return false; + } + + num = lxb_css_syntax_token_number(token)->num; + + np->u.number.num = num; + np->u.number.is_float = lxb_css_syntax_token_number(token)->is_float; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_percentage_none(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_percentage_type_t *np) +{ + double num; + lxb_css_value_type_t type; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_PERCENTAGE) { + np->type = LXB_CSS_VALUE__PERCENTAGE; + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + if (type != LXB_CSS_VALUE_NONE) { + return false; + } + + np->type = LXB_CSS_VALUE_NONE; + + lxb_css_syntax_parser_consume(parser); + + return true; + } + else { + return false; + } + + num = lxb_css_syntax_token_number(token)->num; + + np->percentage.num = num; + np->percentage.is_float = lxb_css_syntax_token_number(token)->is_float; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_number_percentage(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_number_percentage_t *np) +{ + double num; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_NUMBER) { + np->type = LXB_CSS_VALUE__NUMBER; + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_PERCENTAGE) { + np->type = LXB_CSS_VALUE__PERCENTAGE; + } + else { + return false; + } + + num = lxb_css_syntax_token_number(token)->num; + + np->u.number.num = num; + np->u.number.is_float = lxb_css_syntax_token_number(token)->is_float; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_angle(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_angle_t *angle) +{ + const lxb_css_data_t *unit; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_DIMENSION) { + return false; + } + + unit = lxb_css_unit_angle_by_name(lxb_css_syntax_token_dimension(token)->str.data, + lxb_css_syntax_token_dimension(token)->str.length); + if (unit == NULL) { + return false; + } + + angle->num = lxb_css_syntax_token_dimension(token)->num.num; + angle->is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + angle->unit = (lxb_css_unit_angle_t) unit->unique; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +bool +lxb_css_property_state_width_handler(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_width_t *width) +{ + lxb_css_value_type_t type; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_AUTO: + case LXB_CSS_VALUE_MIN_CONTENT: + case LXB_CSS_VALUE_MAX_CONTENT: + width->type = type; + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; + } + + return lxb_css_property_state_length_percentage(parser, token, + (lxb_css_value_length_percentage_t *)width); +} + +static bool +lxb_css_property_state_hue(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_hue_t *hue) +{ + const lxb_css_data_t *unit; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_DIMENSION: + unit = lxb_css_unit_angle_by_name(lxb_css_syntax_token_dimension(token)->str.data, + lxb_css_syntax_token_dimension(token)->str.length); + if (unit == NULL) { + return false; + } + + hue->type = LXB_CSS_VALUE__ANGLE; + hue->u.angle.num = lxb_css_syntax_token_dimension(token)->num.num; + hue->u.angle.is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + hue->u.angle.unit = (lxb_css_unit_angle_t) unit->unique; + break; + + case LXB_CSS_SYNTAX_TOKEN_NUMBER: + hue->type = LXB_CSS_VALUE__NUMBER; + hue->u.number.num = lxb_css_syntax_token_number(token)->num; + hue->u.number.is_float = lxb_css_syntax_token_number(token)->is_float; + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +lxb_inline bool +lxb_css_property_state_hue_none(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_hue_t *hue) +{ + lxb_css_value_type_t type; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_property_state_hue(parser, token, hue); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + if (type != LXB_CSS_VALUE_NONE) { + return false; + } + + hue->type = LXB_CSS_VALUE_NONE; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_color_hex(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_color_t *color) +{ + size_t length; + uint32_t chex; + lxb_char_t ch; + const lxb_char_t *end, *p; + lxb_css_value_color_hex_rgba_t *rgba; + + length = token->types.hash.length; + + if (length > 8) { + return false; + } + + p = token->types.hash.data; + end = p + length; + + chex = 0; + + while (p < end) { + ch = lexbor_str_res_map_lowercase[lexbor_str_res_map_hex[*p]]; + + if (ch == 0xff) { + return false; + } + + chex = chex << 4 | ch; + + p++; + } + + rgba = &color->u.hex.rgba; + + switch (length) { + case 3: + rgba->r = chex >> 8; + rgba->g = chex >> 4 & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(4); + rgba->b = chex & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(4); + rgba->a = 0xff; + + color->u.hex.type = LXB_CSS_PROPERTY_COLOR_HEX_TYPE_3; + break; + + case 4: + rgba->r = chex >> 12; + rgba->g = chex >> 8 & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(4); + rgba->b = chex >> 4 & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(4); + rgba->a = chex & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(4); + + color->u.hex.type = LXB_CSS_PROPERTY_COLOR_HEX_TYPE_4; + break; + + case 6: + rgba->r = chex >> 16; + rgba->g = chex >> 8 & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(8); + rgba->b = chex & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(8); + rgba->a = 0xff; + + color->u.hex.type = LXB_CSS_PROPERTY_COLOR_HEX_TYPE_6; + break; + + case 8: + rgba->r = chex >> 24; + rgba->g = chex >> 16 & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(8); + rgba->b = chex >> 8 & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(8); + rgba->a = chex & ~LXB_CSS_PROPERTY_STATE_HEX_MASK(8); + + color->u.hex.type = LXB_CSS_PROPERTY_COLOR_HEX_TYPE_8; + break; + + default: + return false; + } + + color->type = LXB_CSS_COLOR_HEX; + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_color_rgba(lxb_css_parser_t *parser, + lxb_css_value_color_t *color) +{ + bool res; + lxb_css_color_type_t type; + lxb_css_value_color_rgba_t *rgb; + const lxb_css_syntax_token_t *token; + + rgb = &color->u.rgb; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &rgb->r); + if (res == false) { + return false; + } + + type = rgb->r.type; + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_COMMA) { + /* Deprecated format. */ + + if (type == LXB_CSS_VALUE_NONE) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + rgb->old = true; + + return lxb_css_property_state_color_rgba_old(parser, token, color); + } + + res = lxb_css_property_state_number_percentage_none(parser, token, &rgb->g); + if (res == false) { + return false; + } + + if (type != rgb->g.type) { + if (type == LXB_CSS_VALUE_NONE) { + type = rgb->g.type; + } + else if (rgb->g.type != LXB_CSS_VALUE_NONE) { + return false; + } + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &rgb->b); + if (res == false) { + return false; + } + + if (type != rgb->b.type && type != LXB_CSS_VALUE_NONE + && rgb->b.type != LXB_CSS_VALUE_NONE) + { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_DELIM) { + if (lxb_css_syntax_token_delim(token)->character != '/') { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + lxb_css_syntax_parser_consume(parser); + return true; + } + else { + return false; + } + + res = lxb_css_property_state_number_percentage_none(parser, token, &rgb->a); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_color_rgba_old(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_color_t *color) +{ + bool res; + lxb_css_value_color_rgba_t *rgb; + + rgb = &color->u.rgb; + + res = lxb_css_property_state_number_percentage(parser, token, &rgb->g); + if (res == false) { + return false; + } + + if (rgb->r.type != rgb->g.type) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_COMMA) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage(parser, token, &rgb->b); + if (res == false) { + return false; + } + + if (rgb->r.type != rgb->b.type) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + lxb_css_syntax_parser_consume(parser); + return true; + } + else if (token->type != LXB_CSS_SYNTAX_TOKEN_COMMA) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage(parser, token, &rgb->a); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_color_hsla(lxb_css_parser_t *parser, + lxb_css_value_color_t *color) +{ + bool res; + lxb_css_value_color_hsla_t *hsl; + const lxb_css_syntax_token_t *token; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + hsl = &color->u.hsl; + + res = lxb_css_property_state_hue_none(parser, token, &hsl->h); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_COMMA) { + /* Deprecated format. */ + + if (hsl->h.type == LXB_CSS_VALUE_NONE) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + hsl->old = true; + + return lxb_css_property_state_color_hsla_old(parser, token, hsl); + } + + res = lxb_css_property_state_percentage_none(parser, token, &hsl->s); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_percentage_none(parser, token, &hsl->l); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_DELIM) { + if (lxb_css_syntax_token_delim(token)->character != '/') { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + lxb_css_syntax_parser_consume(parser); + return true; + } + + res = lxb_css_property_state_number_percentage_none(parser, token, &hsl->a); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_color_hsla_old(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_color_hsla_t *hsl) +{ + bool res; + + res = lxb_css_property_state_percentage(parser, token, &hsl->s.percentage); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_COMMA) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_percentage(parser, token, &hsl->l.percentage); + if (res == false) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + goto done; + } + else if (token->type != LXB_CSS_SYNTAX_TOKEN_COMMA) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage(parser, token, &hsl->a); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + return false; + } + +done: + + lxb_css_syntax_parser_consume(parser); + + hsl->s.type = LXB_CSS_VALUE__PERCENTAGE; + hsl->l.type = LXB_CSS_VALUE__PERCENTAGE; + + return true; +} + +static bool +lxb_css_property_state_color_lab(lxb_css_parser_t *parser, + lxb_css_value_color_t *color) +{ + bool res; + lxb_css_value_color_lab_t *lab; + const lxb_css_syntax_token_t *token; + + lab = &color->u.lab; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &lab->l); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &lab->a); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &lab->b); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_DELIM) { + if (lxb_css_syntax_token_delim(token)->character != '/') { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + lxb_css_syntax_parser_consume(parser); + return true; + } + else { + return false; + } + + res = lxb_css_property_state_number_percentage_none(parser, token, + &lab->alpha); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +static bool +lxb_css_property_state_color_lch(lxb_css_parser_t *parser, + lxb_css_value_color_t *color) +{ + bool res; + lxb_css_value_color_lch_t *lch; + const lxb_css_syntax_token_t *token; + + lch = &color->u.lch; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &lch->l); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number_percentage_none(parser, token, &lch->c); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_hue_none(parser, token, &lch->h); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_DELIM) { + if (lxb_css_syntax_token_delim(token)->character != '/') { + return false; + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + lxb_css_syntax_parser_consume(parser); + return true; + } + else { + return false; + } + + res = lxb_css_property_state_number_percentage_none(parser, token, &lch->a); + if (res == false) { + return false; + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +/* + * Return: + * true and status always LXB_STATUS_OK — token consumed, ok. + * false and status != LXB_STATUS_OK — token consumed, not ok. + * false and status == LXB_STATUS_OK — token not consumed, not ok. + */ +static bool +lxb_css_property_state_color_handler(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_value_color_t *color, + lxb_status_t *status) +{ + bool res; + lxb_css_value_type_t type; + + *status = LXB_STATUS_OK; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_HASH: + color->type = LXB_CSS_VALUE_HEX; + + return lxb_css_property_state_color_hex(parser, token, color); + + case LXB_CSS_SYNTAX_TOKEN_FUNCTION: + type = lxb_css_value_by_name(lxb_css_syntax_token_function(token)->data, + lxb_css_syntax_token_function(token)->length); + color->type = type; + + switch (type) { + /* */ + case LXB_CSS_VALUE_RGB: + case LXB_CSS_VALUE_RGBA: + res = lxb_css_property_state_color_rgba(parser, color); + break; + + case LXB_CSS_VALUE_HSL: + case LXB_CSS_VALUE_HSLA: + case LXB_CSS_VALUE_HWB: + res = lxb_css_property_state_color_hsla(parser, color); + break; + + case LXB_CSS_VALUE_LAB: + case LXB_CSS_VALUE_OKLAB: + res = lxb_css_property_state_color_lab(parser, color); + break; + + case LXB_CSS_VALUE_LCH: + case LXB_CSS_VALUE_OKLCH: + res = lxb_css_property_state_color_lch(parser, color); + break; + + case LXB_CSS_VALUE_COLOR: + default: + *status = LXB_STATUS_OK; + return false; + } + + if (!res) { + *status = LXB_STATUS_ERROR_UNEXPECTED_DATA; + } + + return res; + + case LXB_CSS_SYNTAX_TOKEN_IDENT: + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* */ + case LXB_CSS_VALUE_CURRENTCOLOR: + /* */ + case LXB_CSS_VALUE_CANVAS: + case LXB_CSS_VALUE_CANVASTEXT: + case LXB_CSS_VALUE_LINKTEXT: + case LXB_CSS_VALUE_VISITEDTEXT: + case LXB_CSS_VALUE_ACTIVETEXT: + case LXB_CSS_VALUE_BUTTONFACE: + case LXB_CSS_VALUE_BUTTONTEXT: + case LXB_CSS_VALUE_BUTTONBORDER: + case LXB_CSS_VALUE_FIELD: + case LXB_CSS_VALUE_FIELDTEXT: + case LXB_CSS_VALUE_HIGHLIGHT: + case LXB_CSS_VALUE_HIGHLIGHTTEXT: + case LXB_CSS_VALUE_SELECTEDITEM: + case LXB_CSS_VALUE_SELECTEDITEMTEXT: + case LXB_CSS_VALUE_MARK: + case LXB_CSS_VALUE_MARKTEXT: + case LXB_CSS_VALUE_GRAYTEXT: + case LXB_CSS_VALUE_ACCENTCOLOR: + case LXB_CSS_VALUE_ACCENTCOLORTEXT: + /* */ + case LXB_CSS_VALUE_TRANSPARENT: + /* */ + case LXB_CSS_VALUE_ALICEBLUE: + case LXB_CSS_VALUE_ANTIQUEWHITE: + case LXB_CSS_VALUE_AQUA: + case LXB_CSS_VALUE_AQUAMARINE: + case LXB_CSS_VALUE_AZURE: + case LXB_CSS_VALUE_BEIGE: + case LXB_CSS_VALUE_BISQUE: + case LXB_CSS_VALUE_BLACK: + case LXB_CSS_VALUE_BLANCHEDALMOND: + case LXB_CSS_VALUE_BLUE: + case LXB_CSS_VALUE_BLUEVIOLET: + case LXB_CSS_VALUE_BROWN: + case LXB_CSS_VALUE_BURLYWOOD: + case LXB_CSS_VALUE_CADETBLUE: + case LXB_CSS_VALUE_CHARTREUSE: + case LXB_CSS_VALUE_CHOCOLATE: + case LXB_CSS_VALUE_CORAL: + case LXB_CSS_VALUE_CORNFLOWERBLUE: + case LXB_CSS_VALUE_CORNSILK: + case LXB_CSS_VALUE_CRIMSON: + case LXB_CSS_VALUE_CYAN: + case LXB_CSS_VALUE_DARKBLUE: + case LXB_CSS_VALUE_DARKCYAN: + case LXB_CSS_VALUE_DARKGOLDENROD: + case LXB_CSS_VALUE_DARKGRAY: + case LXB_CSS_VALUE_DARKGREEN: + case LXB_CSS_VALUE_DARKGREY: + case LXB_CSS_VALUE_DARKKHAKI: + case LXB_CSS_VALUE_DARKMAGENTA: + case LXB_CSS_VALUE_DARKOLIVEGREEN: + case LXB_CSS_VALUE_DARKORANGE: + case LXB_CSS_VALUE_DARKORCHID: + case LXB_CSS_VALUE_DARKRED: + case LXB_CSS_VALUE_DARKSALMON: + case LXB_CSS_VALUE_DARKSEAGREEN: + case LXB_CSS_VALUE_DARKSLATEBLUE: + case LXB_CSS_VALUE_DARKSLATEGRAY: + case LXB_CSS_VALUE_DARKSLATEGREY: + case LXB_CSS_VALUE_DARKTURQUOISE: + case LXB_CSS_VALUE_DARKVIOLET: + case LXB_CSS_VALUE_DEEPPINK: + case LXB_CSS_VALUE_DEEPSKYBLUE: + case LXB_CSS_VALUE_DIMGRAY: + case LXB_CSS_VALUE_DIMGREY: + case LXB_CSS_VALUE_DODGERBLUE: + case LXB_CSS_VALUE_FIREBRICK: + case LXB_CSS_VALUE_FLORALWHITE: + case LXB_CSS_VALUE_FORESTGREEN: + case LXB_CSS_VALUE_FUCHSIA: + case LXB_CSS_VALUE_GAINSBORO: + case LXB_CSS_VALUE_GHOSTWHITE: + case LXB_CSS_VALUE_GOLD: + case LXB_CSS_VALUE_GOLDENROD: + case LXB_CSS_VALUE_GRAY: + case LXB_CSS_VALUE_GREEN: + case LXB_CSS_VALUE_GREENYELLOW: + case LXB_CSS_VALUE_GREY: + case LXB_CSS_VALUE_HONEYDEW: + case LXB_CSS_VALUE_HOTPINK: + case LXB_CSS_VALUE_INDIANRED: + case LXB_CSS_VALUE_INDIGO: + case LXB_CSS_VALUE_IVORY: + case LXB_CSS_VALUE_KHAKI: + case LXB_CSS_VALUE_LAVENDER: + case LXB_CSS_VALUE_LAVENDERBLUSH: + case LXB_CSS_VALUE_LAWNGREEN: + case LXB_CSS_VALUE_LEMONCHIFFON: + case LXB_CSS_VALUE_LIGHTBLUE: + case LXB_CSS_VALUE_LIGHTCORAL: + case LXB_CSS_VALUE_LIGHTCYAN: + case LXB_CSS_VALUE_LIGHTGOLDENRODYELLOW: + case LXB_CSS_VALUE_LIGHTGRAY: + case LXB_CSS_VALUE_LIGHTGREEN: + case LXB_CSS_VALUE_LIGHTGREY: + case LXB_CSS_VALUE_LIGHTPINK: + case LXB_CSS_VALUE_LIGHTSALMON: + case LXB_CSS_VALUE_LIGHTSEAGREEN: + case LXB_CSS_VALUE_LIGHTSKYBLUE: + case LXB_CSS_VALUE_LIGHTSLATEGRAY: + case LXB_CSS_VALUE_LIGHTSLATEGREY: + case LXB_CSS_VALUE_LIGHTSTEELBLUE: + case LXB_CSS_VALUE_LIGHTYELLOW: + case LXB_CSS_VALUE_LIME: + case LXB_CSS_VALUE_LIMEGREEN: + case LXB_CSS_VALUE_LINEN: + case LXB_CSS_VALUE_MAGENTA: + case LXB_CSS_VALUE_MAROON: + case LXB_CSS_VALUE_MEDIUMAQUAMARINE: + case LXB_CSS_VALUE_MEDIUMBLUE: + case LXB_CSS_VALUE_MEDIUMORCHID: + case LXB_CSS_VALUE_MEDIUMPURPLE: + case LXB_CSS_VALUE_MEDIUMSEAGREEN: + case LXB_CSS_VALUE_MEDIUMSLATEBLUE: + case LXB_CSS_VALUE_MEDIUMSPRINGGREEN: + case LXB_CSS_VALUE_MEDIUMTURQUOISE: + case LXB_CSS_VALUE_MEDIUMVIOLETRED: + case LXB_CSS_VALUE_MIDNIGHTBLUE: + case LXB_CSS_VALUE_MINTCREAM: + case LXB_CSS_VALUE_MISTYROSE: + case LXB_CSS_VALUE_MOCCASIN: + case LXB_CSS_VALUE_NAVAJOWHITE: + case LXB_CSS_VALUE_NAVY: + case LXB_CSS_VALUE_OLDLACE: + case LXB_CSS_VALUE_OLIVE: + case LXB_CSS_VALUE_OLIVEDRAB: + case LXB_CSS_VALUE_ORANGE: + case LXB_CSS_VALUE_ORANGERED: + case LXB_CSS_VALUE_ORCHID: + case LXB_CSS_VALUE_PALEGOLDENROD: + case LXB_CSS_VALUE_PALEGREEN: + case LXB_CSS_VALUE_PALETURQUOISE: + case LXB_CSS_VALUE_PALEVIOLETRED: + case LXB_CSS_VALUE_PAPAYAWHIP: + case LXB_CSS_VALUE_PEACHPUFF: + case LXB_CSS_VALUE_PERU: + case LXB_CSS_VALUE_PINK: + case LXB_CSS_VALUE_PLUM: + case LXB_CSS_VALUE_POWDERBLUE: + case LXB_CSS_VALUE_PURPLE: + case LXB_CSS_VALUE_REBECCAPURPLE: + case LXB_CSS_VALUE_RED: + case LXB_CSS_VALUE_ROSYBROWN: + case LXB_CSS_VALUE_ROYALBLUE: + case LXB_CSS_VALUE_SADDLEBROWN: + case LXB_CSS_VALUE_SALMON: + case LXB_CSS_VALUE_SANDYBROWN: + case LXB_CSS_VALUE_SEAGREEN: + case LXB_CSS_VALUE_SEASHELL: + case LXB_CSS_VALUE_SIENNA: + case LXB_CSS_VALUE_SILVER: + case LXB_CSS_VALUE_SKYBLUE: + case LXB_CSS_VALUE_SLATEBLUE: + case LXB_CSS_VALUE_SLATEGRAY: + case LXB_CSS_VALUE_SLATEGREY: + case LXB_CSS_VALUE_SNOW: + case LXB_CSS_VALUE_SPRINGGREEN: + case LXB_CSS_VALUE_STEELBLUE: + case LXB_CSS_VALUE_TAN: + case LXB_CSS_VALUE_TEAL: + case LXB_CSS_VALUE_THISTLE: + case LXB_CSS_VALUE_TOMATO: + case LXB_CSS_VALUE_TURQUOISE: + case LXB_CSS_VALUE_VIOLET: + case LXB_CSS_VALUE_WHEAT: + case LXB_CSS_VALUE_WHITE: + case LXB_CSS_VALUE_WHITESMOKE: + case LXB_CSS_VALUE_YELLOW: + case LXB_CSS_VALUE_YELLOWGREEN: + color->type = type; + break; + + default: + return false; + } + + break; + + default: + return false; + } + + lxb_css_syntax_parser_consume(parser); + + return true; +} + +bool +lxb_css_property_state__undef(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_parser_failed(parser); +} + +bool +lxb_css_property_state__custom(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_status_t status; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property__custom_t *custom = declar->u.custom; + + (void) lexbor_str_init(&custom->value, parser->memory->mraw, 0); + if (custom->value.data == NULL) { + return lxb_css_parser_memory_fail(parser); + } + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + status = lxb_css_syntax_token_serialize_str(token, &custom->value, + parser->memory->mraw); + if (status != LXB_STATUS_OK) { + return lxb_css_parser_memory_fail(parser); + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_display(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_property_display_t *display; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + display = declar->u.display; + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + + switch (type) { + /* */ + case LXB_CSS_DISPLAY_BLOCK: + case LXB_CSS_DISPLAY_INLINE: + case LXB_CSS_DISPLAY_RUN_IN: + display->a = type; + goto inside_listitem; + + /* */ + case LXB_CSS_DISPLAY_FLOW: + case LXB_CSS_DISPLAY_FLOW_ROOT: + display->a = type; + goto outside_listitem; + + case LXB_CSS_DISPLAY_TABLE: + case LXB_CSS_DISPLAY_FLEX: + case LXB_CSS_DISPLAY_GRID: + case LXB_CSS_DISPLAY_RUBY: + display->a = type; + goto outside; + + /* */ + case LXB_CSS_DISPLAY_LIST_ITEM: + display->a = type; + goto listitem_only; + + /* */ + case LXB_CSS_DISPLAY_TABLE_ROW_GROUP: + case LXB_CSS_DISPLAY_TABLE_HEADER_GROUP: + case LXB_CSS_DISPLAY_TABLE_FOOTER_GROUP: + case LXB_CSS_DISPLAY_TABLE_ROW: + case LXB_CSS_DISPLAY_TABLE_CELL: + case LXB_CSS_DISPLAY_TABLE_COLUMN_GROUP: + case LXB_CSS_DISPLAY_TABLE_COLUMN: + case LXB_CSS_DISPLAY_TABLE_CAPTION: + case LXB_CSS_DISPLAY_RUBY_BASE: + case LXB_CSS_DISPLAY_RUBY_TEXT: + case LXB_CSS_DISPLAY_RUBY_BASE_CONTAINER: + case LXB_CSS_DISPLAY_RUBY_TEXT_CONTAINER: + /* */ + case LXB_CSS_DISPLAY_CONTENTS: + case LXB_CSS_DISPLAY_NONE: + /* */ + case LXB_CSS_DISPLAY_INLINE_BLOCK: + case LXB_CSS_DISPLAY_INLINE_TABLE: + case LXB_CSS_DISPLAY_INLINE_FLEX: + case LXB_CSS_DISPLAY_INLINE_GRID: + display->a = type; + goto done; + + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + display->a = type; + goto done; + + default: + return lxb_css_parser_failed(parser); + } + +inside_listitem: + + lxb_css_property_state_get_type(parser, token, type); + + switch (type) { + /* */ + case LXB_CSS_DISPLAY_FLOW: + case LXB_CSS_DISPLAY_FLOW_ROOT: + display->b = type; + break; + + case LXB_CSS_DISPLAY_TABLE: + case LXB_CSS_DISPLAY_FLEX: + case LXB_CSS_DISPLAY_GRID: + case LXB_CSS_DISPLAY_RUBY: + display->b = type; + goto done; + + case LXB_CSS_DISPLAY_LIST_ITEM: + display->b = type; + goto flow_only; + + default: + return lxb_css_parser_failed(parser); + } + +listitem: + + lxb_css_property_state_get_type(parser, token, type); + + if (type == LXB_CSS_DISPLAY_LIST_ITEM) { + display->c = type; + goto done; + } + + return lxb_css_parser_failed(parser); + +outside: + + lxb_css_property_state_get_type(parser, token, type); + + switch (type) { + /* */ + case LXB_CSS_DISPLAY_BLOCK: + case LXB_CSS_DISPLAY_INLINE: + case LXB_CSS_DISPLAY_RUN_IN: + if (display->b == LXB_CSS_PROPERTY__UNDEF) { + display->b = type; + } + else { + display->c = type; + } + + goto done; + + default: + return lxb_css_parser_failed(parser); + } + +outside_listitem: + + lxb_css_property_state_get_type(parser, token, type); + + switch (type) { + /* */ + case LXB_CSS_DISPLAY_BLOCK: + case LXB_CSS_DISPLAY_INLINE: + case LXB_CSS_DISPLAY_RUN_IN: + display->b = type; + goto listitem; + + case LXB_CSS_DISPLAY_LIST_ITEM: + display->b = type; + goto outside; + + default: + return lxb_css_parser_failed(parser); + } + +listitem_only: + + lxb_css_property_state_get_type(parser, token, type); + + switch (type) { + /* */ + case LXB_CSS_DISPLAY_BLOCK: + case LXB_CSS_DISPLAY_INLINE: + case LXB_CSS_DISPLAY_RUN_IN: + display->b = type; + break; + + /* */ + case LXB_CSS_DISPLAY_FLOW: + case LXB_CSS_DISPLAY_FLOW_ROOT: + display->b = type; + goto outside; + + default: + return lxb_css_parser_failed(parser); + } + +flow_only: + + lxb_css_property_state_get_type(parser, token, type); + + switch (type) { + /* */ + case LXB_CSS_DISPLAY_FLOW: + case LXB_CSS_DISPLAY_FLOW_ROOT: + display->c = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + +done: + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_order(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + res = lxb_css_property_state_integer(parser, token, + &declar->u.order->integer); + if (res) { + declar->u.order->type = LXB_CSS_ORDER__INTEGER; + + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + declar->u.order->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_visibility(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_VISIBILITY_VISIBLE: + case LXB_CSS_VISIBILITY_HIDDEN: + case LXB_CSS_VISIBILITY_COLLAPSE: + declar->u.visibility->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_width(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + case LXB_CSS_VALUE_AUTO: + case LXB_CSS_VALUE_MIN_CONTENT: + case LXB_CSS_VALUE_MAX_CONTENT: + declar->u.width->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + } + + if (!lxb_css_property_state_length_percentage(parser, token, + declar->u.user)) + { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_height(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_width(parser, token, ctx); +} + +bool +lxb_css_property_state_box_sizing(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + case LXB_CSS_VALUE_CONTENT_BOX: + case LXB_CSS_VALUE_BORDER_BOX: + declar->u.box_sizing->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_min_width(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_width(parser, token, ctx); +} + +bool +lxb_css_property_state_min_height(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_width(parser, token, ctx); +} + +bool +lxb_css_property_state_max_width(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + case LXB_CSS_VALUE_NONE: + case LXB_CSS_VALUE_MIN_CONTENT: + case LXB_CSS_VALUE_MAX_CONTENT: + declar->u.width->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + } + + if (!lxb_css_property_state_length_percentage(parser, token, + declar->u.user)) + { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_max_height(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_max_width(parser, token, ctx); +} + +static bool +lxb_css_property_state_mp(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_rule_declaration_t *declar, bool with_auto) +{ + unsigned int state; + lxb_css_value_type_t type; + lxb_css_property_margin_top_t *top; + + state = 1; + +next: + + switch (state) { + case 1: + top = &declar->u.margin->top; + break; + + case 2: + top = &declar->u.margin->right; + break; + + case 3: + top = &declar->u.margin->bottom; + break; + + case 4: + top = &declar->u.margin->left; + break; + + default: + return lxb_css_parser_failed(parser); + } + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + top->type = type; + break; + + case LXB_CSS_VALUE_AUTO: + if (with_auto) { + top->type = type; + break; + } + + /* Fall through. */ + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + } + else if (!lxb_css_property_state_length_percentage(parser, token, + (lxb_css_value_length_percentage_t *) top)) + { + return lxb_css_parser_failed(parser); + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN__END) { + return lxb_css_parser_success(parser); + } + + state++; + + goto next; +} + +static bool +lxb_css_property_state_mp_top(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_rule_declaration_t *declar, bool with_auto) +{ + lxb_css_value_type_t type; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + declar->u.margin_top->type = type; + break; + + case LXB_CSS_VALUE_AUTO: + if (with_auto) { + declar->u.margin_top->type = type; + break; + } + + /* Fall through. */ + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + } + + if (!lxb_css_property_state_length_percentage(parser, token, + declar->u.user)) + { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_margin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp(parser, token, ctx, true); +} + +bool +lxb_css_property_state_margin_top(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, true); +} + +bool +lxb_css_property_state_margin_right(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, true); +} + +bool +lxb_css_property_state_margin_bottom(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, true); +} + +bool +lxb_css_property_state_margin_left(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, true); +} + +bool +lxb_css_property_state_padding(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp(parser, token, ctx, false); +} + +bool +lxb_css_property_state_padding_top(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, false); +} + +bool +lxb_css_property_state_padding_right(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, false); +} + +bool +lxb_css_property_state_padding_bottom(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, false); +} + +bool +lxb_css_property_state_padding_left(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, false); +} + +static bool +lxb_css_property_state_line_width_style_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_border_t *border) +{ + lxb_status_t status; + lxb_css_value_type_t type; + const lxb_css_data_t *unit; + lxb_css_value_length_t *length; + lxb_css_syntax_token_string_t *str; + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_DIMENSION: + if (border->width.type != LXB_CSS_VALUE__UNDEF) { + return false; + } + + str = &lxb_css_syntax_token_dimension(token)->str; + + unit = lxb_css_unit_absolute_relative_by_name(str->data, + str->length); + if (unit == NULL) { + return false; + } + + length = &border->width.length; + + border->width.type = LXB_CSS_VALUE__LENGTH; + length->num = lxb_css_syntax_token_dimension(token)->num.num; + length->is_float = lxb_css_syntax_token_dimension(token)->num.is_float; + length->unit = (lxb_css_unit_t) unit->unique; + break; + + case LXB_CSS_SYNTAX_TOKEN_NUMBER: + if (border->width.type != LXB_CSS_VALUE__UNDEF) { + return false; + } + + length = &border->width.length; + + border->width.type = LXB_CSS_VALUE__NUMBER; + length->num = lxb_css_syntax_token_number(token)->num; + length->is_float = lxb_css_syntax_token_number(token)->is_float; + break; + + case LXB_CSS_SYNTAX_TOKEN_IDENT: + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_THIN: + case LXB_CSS_VALUE_MEDIUM: + case LXB_CSS_VALUE_THICK: + if (border->width.type != LXB_CSS_VALUE__UNDEF) { + return false; + } + + border->width.type = type; + break; + + case LXB_CSS_VALUE_NONE: + case LXB_CSS_VALUE_HIDDEN: + case LXB_CSS_VALUE_DOTTED: + case LXB_CSS_VALUE_DASHED: + case LXB_CSS_VALUE_SOLID: + case LXB_CSS_VALUE_DOUBLE: + case LXB_CSS_VALUE_GROOVE: + case LXB_CSS_VALUE_RIDGE: + case LXB_CSS_VALUE_INSET: + case LXB_CSS_VALUE_OUTSET: + if (border->style != LXB_CSS_VALUE__UNDEF) { + return false; + } + + border->style = type; + break; + + default: + goto color; + } + + break; + + default: + goto color; + } + + lxb_css_syntax_parser_consume(parser); + + return true; + +color: + + if (border->color.type != LXB_CSS_VALUE__UNDEF) { + return false; + } + + return lxb_css_property_state_color_handler(parser, token, &border->color, + &status); +} + +bool +lxb_css_property_state_border(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + declar->u.border->style = type; + + lxb_css_syntax_parser_consume(parser); + return lxb_css_parser_success(parser); + + default: + break; + } + } + + res = lxb_css_property_state_line_width_style_color(parser, token, + declar->u.border); + if (!res) { + return lxb_css_parser_failed(parser); + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN__END) { + return lxb_css_parser_success(parser); + } + + res = lxb_css_property_state_line_width_style_color(parser, token, + declar->u.border); + if (!res) { + return lxb_css_parser_failed(parser); + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN__END) { + return lxb_css_parser_success(parser); + } + + res = lxb_css_property_state_line_width_style_color(parser, token, + declar->u.border); + if (!res) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_border_top(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_border(parser, token, ctx); +} + +bool +lxb_css_property_state_border_right(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_border(parser, token, ctx); +} + +bool +lxb_css_property_state_border_bottom(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_border(parser, token, ctx); +} + +bool +lxb_css_property_state_border_left(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_border(parser, token, ctx); +} + +bool +lxb_css_property_state_border_top_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_color(parser, token, ctx); +} + +bool +lxb_css_property_state_border_right_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_color(parser, token, ctx); +} + +bool +lxb_css_property_state_border_bottom_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_color(parser, token, ctx); +} + +bool +lxb_css_property_state_border_left_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_color(parser, token, ctx); +} + +bool +lxb_css_property_state_background_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_color(parser, token, ctx); +} + +bool +lxb_css_property_state_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_status_t status; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + declar->u.color->type = type; + + lxb_css_syntax_parser_consume(parser); + return lxb_css_parser_success(parser); + + default: + break; + } + } + + res = lxb_css_property_state_color_handler(parser, token, + (lxb_css_value_color_t *) declar->u.color, + &status); + if (!res) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_opacity(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_opacity_t *opacity = declar->u.opacity; + + res = lxb_css_property_state_number_percentage(parser, token, + (lxb_css_value_number_percentage_t *) opacity); + if (res) { + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + opacity->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_position(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_POSITION_STATIC: + case LXB_CSS_POSITION_RELATIVE: + case LXB_CSS_POSITION_ABSOLUTE: + case LXB_CSS_POSITION_STICKY: + case LXB_CSS_POSITION_FIXED: + declar->u.position->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_top(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_mp_top(parser, token, ctx, true); +} + +bool +lxb_css_property_state_right(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_bottom(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_left(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_inset_block_start(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_inset_inline_start(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_inset_block_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_inset_inline_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_top(parser, token, ctx); +} + +bool +lxb_css_property_state_text_transform(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_text_transform_t *tt; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + tt = declar->u.text_transform; + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_TRANSFORM_NONE: + tt->type_case = type; + break; + + case LXB_CSS_TEXT_TRANSFORM_CAPITALIZE: + case LXB_CSS_TEXT_TRANSFORM_UPPERCASE: + case LXB_CSS_TEXT_TRANSFORM_LOWERCASE: + tt->type_case = type; + goto next; + + case LXB_CSS_TEXT_TRANSFORM_FULL_WIDTH: + tt->full_width = type; + goto next; + + case LXB_CSS_TEXT_TRANSFORM_FULL_SIZE_KANA: + tt->full_size_kana = type; + goto next; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + +next: + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_success(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + + switch (type) { + case LXB_CSS_TEXT_TRANSFORM_CAPITALIZE: + case LXB_CSS_TEXT_TRANSFORM_UPPERCASE: + case LXB_CSS_TEXT_TRANSFORM_LOWERCASE: + if (tt->type_case != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + tt->type_case = type; + goto next; + + case LXB_CSS_TEXT_TRANSFORM_FULL_WIDTH: + if (tt->full_width != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + tt->full_width = type; + goto next; + + case LXB_CSS_TEXT_TRANSFORM_FULL_SIZE_KANA: + if (tt->full_size_kana != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + tt->full_size_kana = type; + goto next; + + default: + return lxb_css_parser_failed(parser); + } +} + +bool +lxb_css_property_state_text_align(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_ALIGN_START: + case LXB_CSS_TEXT_ALIGN_END: + case LXB_CSS_TEXT_ALIGN_LEFT: + case LXB_CSS_TEXT_ALIGN_RIGHT: + case LXB_CSS_TEXT_ALIGN_CENTER: + case LXB_CSS_TEXT_ALIGN_JUSTIFY: + case LXB_CSS_TEXT_ALIGN_MATCH_PARENT: + case LXB_CSS_TEXT_ALIGN_JUSTIFY_ALL: + declar->u.text_align->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_align_all(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_ALIGN_ALL_START: + case LXB_CSS_TEXT_ALIGN_ALL_END: + case LXB_CSS_TEXT_ALIGN_ALL_LEFT: + case LXB_CSS_TEXT_ALIGN_ALL_RIGHT: + case LXB_CSS_TEXT_ALIGN_ALL_CENTER: + case LXB_CSS_TEXT_ALIGN_ALL_JUSTIFY: + case LXB_CSS_TEXT_ALIGN_ALL_MATCH_PARENT: + declar->u.text_align_all->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_align_last(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_ALIGN_LAST_AUTO: + case LXB_CSS_TEXT_ALIGN_LAST_START: + case LXB_CSS_TEXT_ALIGN_LAST_END: + case LXB_CSS_TEXT_ALIGN_LAST_LEFT: + case LXB_CSS_TEXT_ALIGN_LAST_RIGHT: + case LXB_CSS_TEXT_ALIGN_LAST_CENTER: + case LXB_CSS_TEXT_ALIGN_LAST_JUSTIFY: + case LXB_CSS_TEXT_ALIGN_LAST_MATCH_PARENT: + declar->u.text_align_last->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_justify(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_JUSTIFY_AUTO: + case LXB_CSS_TEXT_JUSTIFY_NONE: + case LXB_CSS_TEXT_JUSTIFY_INTER_WORD: + case LXB_CSS_TEXT_JUSTIFY_INTER_CHARACTER: + declar->u.text_justify->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_indent(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_text_indent_t *text_indent; + + text_indent = declar->u.text_indent; + + res = lxb_css_property_state_length_percentage(parser, token, + &text_indent->length); + if (res) { + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + text_indent->type = LXB_CSS_VALUE__LENGTH; + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + if (!res) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + if (res) { + return lxb_css_parser_failed(parser); + } + + text_indent->type = type; + break; + + /* Local. */ + case LXB_CSS_TEXT_INDENT_HANGING: + text_indent->hanging = type; + goto next; + + case LXB_CSS_TEXT_INDENT_EACH_LINE: + text_indent->each_line = type; + goto next; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + +next: + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_length_percentage(parser, token, + &text_indent->length); + if (res) { + if (text_indent->type != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + text_indent->type = LXB_CSS_VALUE__LENGTH; + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + if (text_indent->type == LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + + switch (type) { + case LXB_CSS_TEXT_INDENT_HANGING: + if (text_indent->hanging != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + text_indent->hanging = type; + goto next; + + case LXB_CSS_TEXT_INDENT_EACH_LINE: + if (text_indent->each_line != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + text_indent->each_line = type; + goto next; + + default: + return lxb_css_parser_failed(parser); + } +} + +bool +lxb_css_property_state_white_space(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_WHITE_SPACE_NORMAL: + case LXB_CSS_WHITE_SPACE_PRE: + case LXB_CSS_WHITE_SPACE_NOWRAP: + case LXB_CSS_WHITE_SPACE_PRE_WRAP: + case LXB_CSS_WHITE_SPACE_BREAK_SPACES: + case LXB_CSS_WHITE_SPACE_PRE_LINE: + declar->u.white_space->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_tab_size(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + res = lxb_css_property_state_number_length(parser, token, + (lxb_css_value_number_length_t *) declar->u.tab_size); + if (res) { + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + declar->u.tab_size->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_word_break(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_WORD_BREAK_NORMAL: + case LXB_CSS_WORD_BREAK_KEEP_ALL: + case LXB_CSS_WORD_BREAK_BREAK_ALL: + case LXB_CSS_WORD_BREAK_BREAK_WORD: + declar->u.word_break->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_line_break(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_LINE_BREAK_AUTO: + case LXB_CSS_LINE_BREAK_LOOSE: + case LXB_CSS_LINE_BREAK_NORMAL: + case LXB_CSS_LINE_BREAK_STRICT: + case LXB_CSS_LINE_BREAK_ANYWHERE: + declar->u.line_break->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_hyphens(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_HYPHENS_NONE: + case LXB_CSS_HYPHENS_MANUAL: + case LXB_CSS_HYPHENS_AUTO: + declar->u.hyphens->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_overflow_wrap(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_OVERFLOW_WRAP_NORMAL: + case LXB_CSS_OVERFLOW_WRAP_BREAK_WORD: + case LXB_CSS_OVERFLOW_WRAP_ANYWHERE: + declar->u.overflow_wrap->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_word_wrap(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_overflow_wrap(parser, token, ctx); +} + +bool +lxb_css_property_state_word_spacing(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + res = lxb_css_property_state_length(parser, token, + &declar->u.word_spacing->length); + if (res) { + declar->u.word_spacing->type = LXB_CSS_VALUE__LENGTH; + + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_WORD_SPACING_NORMAL: + declar->u.word_spacing->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_letter_spacing(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_word_spacing(parser, token, ctx); +} + +bool +lxb_css_property_state_hanging_punctuation(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_hanging_punctuation_t *hp; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + hp = declar->u.hanging_punctuation; + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_HANGING_PUNCTUATION_NONE: + hp->type_first = type; + break; + + case LXB_CSS_HANGING_PUNCTUATION_FIRST: + hp->type_first = type; + goto next; + + case LXB_CSS_HANGING_PUNCTUATION_FORCE_END: + case LXB_CSS_HANGING_PUNCTUATION_ALLOW_END: + hp->force_allow = type; + goto next; + + case LXB_CSS_HANGING_PUNCTUATION_LAST: + hp->last = type; + goto next; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + +next: + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_success(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + + switch (type) { + case LXB_CSS_HANGING_PUNCTUATION_FIRST: + if (hp->type_first != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + hp->type_first = type; + goto next; + + case LXB_CSS_HANGING_PUNCTUATION_FORCE_END: + case LXB_CSS_HANGING_PUNCTUATION_ALLOW_END: + if (hp->force_allow != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + hp->force_allow = type; + goto next; + + case LXB_CSS_HANGING_PUNCTUATION_LAST: + if (hp->last != LXB_CSS_VALUE__UNDEF) { + return lxb_css_parser_failed(parser); + } + + hp->last = type; + goto next; + + default: + return lxb_css_parser_failed(parser); + } +} + +bool +lxb_css_property_state_font_family(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + size_t length; + const lxb_char_t *data; + lexbor_str_t *str; + lexbor_mraw_t *mraw; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_font_family_t *ff; + lxb_css_property_family_name_t *name; + + mraw = parser->memory->mraw; + ff = declar->u.font_family; + + while (token != NULL) { + name = lexbor_mraw_alloc(mraw, sizeof(lxb_css_property_family_name_t)); + if (name == NULL) { + return lxb_css_parser_memory_fail(parser); + } + + if (token->type == LXB_CSS_SYNTAX_TOKEN_IDENT) { + data = lxb_css_syntax_token_ident(token)->data; + length = lxb_css_syntax_token_ident(token)->length; + + type = lxb_css_value_by_name(data, length); + if (type != LXB_CSS_VALUE__UNDEF) { + name->generic = true; + name->u.type = type; + + goto next; + } + } + else if (token->type == LXB_CSS_SYNTAX_TOKEN_STRING) { + data = lxb_css_syntax_token_string(token)->data; + length = lxb_css_syntax_token_string(token)->length; + } + else { + return lxb_css_parser_failed(parser); + } + + name->generic = false; + + str = &name->u.str; + + (void) lexbor_str_init(str, mraw, length); + if (name->u.str.data == NULL) { + return lxb_css_parser_memory_fail(parser); + } + + memcpy(str->data, data, length); + + str->data[length] = '\0'; + str->length = length; + + next: + + if (ff->first == NULL) { + ff->first = name; + } + else { + ff->last->next = name; + } + + name->next = NULL; + name->prev = ff->last; + ff->last = name; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_COMMA) { + if (token->type == LXB_CSS_SYNTAX_TOKEN__END) { + return lxb_css_parser_success(parser); + } + + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + } + + lxb_css_property_state_check_token(parser, token); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_font_weight(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx)\ +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_font_weight_t *fw = declar->u.font_weight; + + res = lxb_css_property_state_number(parser, token, &fw->number); + + if (res) { + if (fw->number.num < 1 || fw->number.num > 1000) { + return lxb_css_parser_failed(parser); + } + + fw->type = LXB_CSS_FONT_WEIGHT__NUMBER; + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FONT_WEIGHT_NORMAL: + case LXB_CSS_FONT_WEIGHT_BOLD: + case LXB_CSS_FONT_WEIGHT_BOLDER: + case LXB_CSS_FONT_WEIGHT_LIGHTER: + fw->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_font_stretch(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_font_stretch_t *fs = declar->u.font_stretch; + + res = lxb_css_property_state_percentage(parser, token, &fs->percentage); + + if (res) { + if (fs->percentage.num < 0) { + return lxb_css_parser_failed(parser); + } + + fs->type = LXB_CSS_FONT_STRETCH__PERCENTAGE; + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FONT_STRETCH_NORMAL: + case LXB_CSS_FONT_STRETCH_ULTRA_CONDENSED: + case LXB_CSS_FONT_STRETCH_EXTRA_CONDENSED: + case LXB_CSS_FONT_STRETCH_CONDENSED: + case LXB_CSS_FONT_STRETCH_SEMI_CONDENSED: + case LXB_CSS_FONT_STRETCH_SEMI_EXPANDED: + case LXB_CSS_FONT_STRETCH_EXPANDED: + case LXB_CSS_FONT_STRETCH_EXTRA_EXPANDED: + case LXB_CSS_FONT_STRETCH_ULTRA_EXPANDED: + fs->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_font_style(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_font_style_t *fs = declar->u.font_style; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FONT_STYLE_NORMAL: + case LXB_CSS_FONT_STYLE_ITALIC: + fs->type = type; + break; + + case LXB_CSS_FONT_STYLE_OBLIQUE: + fs->type = type; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_angle(parser, token, &fs->angle); + + if (res) { + if (fs->angle.num < -90 || fs->angle.num > 90) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); + } + else { + fs->angle.unit = (lxb_css_unit_angle_t) LXB_CSS_UNIT__UNDEF; + } + + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_font_size(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_font_size_t *fs = declar->u.font_size; + + res = lxb_css_property_state_length_percentage(parser, token, &fs->length); + + if (res) { + if (fs->length.u.length.num < 0) { + return lxb_css_parser_failed(parser); + } + + fs->type = LXB_CSS_FONT_SIZE__LENGTH; + + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FONT_SIZE_XX_SMALL: + case LXB_CSS_FONT_SIZE_X_SMALL: + case LXB_CSS_FONT_SIZE_SMALL: + case LXB_CSS_FONT_SIZE_MEDIUM: + case LXB_CSS_FONT_SIZE_LARGE: + case LXB_CSS_FONT_SIZE_X_LARGE: + case LXB_CSS_FONT_SIZE_XX_LARGE: + case LXB_CSS_FONT_SIZE_XXX_LARGE: + case LXB_CSS_FONT_SIZE_MATH: + case LXB_CSS_FONT_SIZE_LARGER: + case LXB_CSS_FONT_SIZE_SMALLER: + fs->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_float_reference(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLOAT_REFERENCE_INLINE: + case LXB_CSS_FLOAT_REFERENCE_COLUMN: + case LXB_CSS_FLOAT_REFERENCE_REGION: + case LXB_CSS_FLOAT_REFERENCE_PAGE: + declar->u.float_reference->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_float(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_float_t *fp = declar->u.floatp; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + if (token->type == LXB_CSS_SYNTAX_TOKEN_FUNCTION) { + goto snap; + } + + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLOAT_BLOCK_START: + case LXB_CSS_FLOAT_BLOCK_END: + case LXB_CSS_FLOAT_INLINE_START: + case LXB_CSS_FLOAT_INLINE_END: + case LXB_CSS_FLOAT_SNAP_BLOCK: + case LXB_CSS_FLOAT_SNAP_INLINE: + case LXB_CSS_FLOAT_LEFT: + case LXB_CSS_FLOAT_RIGHT: + case LXB_CSS_FLOAT_TOP: + case LXB_CSS_FLOAT_BOTTOM: + case LXB_CSS_FLOAT_NONE: + fp->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + +snap: + + type = lxb_css_value_by_name(lxb_css_syntax_token_function(token)->data, + lxb_css_syntax_token_function(token)->length); + + if (type != LXB_CSS_FLOAT_SNAP_BLOCK + && type != LXB_CSS_FLOAT_SNAP_INLINE) + { + return lxb_css_parser_failed(parser); + } + + fp->type = type; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_length(parser, token, &fp->length.length); + if (!res) { + return lxb_css_parser_failed(parser); + } + + fp->length.type = LXB_CSS_VALUE__LENGTH; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_COMMA) { + if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + fp->snap_type = LXB_CSS_VALUE__UNDEF; + + lxb_css_syntax_parser_consume(parser); + return lxb_css_parser_success(parser); + } + + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_FLOAT_START: + case LXB_CSS_FLOAT_END: + if (fp->type != LXB_CSS_FLOAT_SNAP_BLOCK) { + return lxb_css_parser_failed(parser); + } + + fp->snap_type = type; + break; + + case LXB_CSS_FLOAT_LEFT: + case LXB_CSS_FLOAT_RIGHT: + if (fp->type != LXB_CSS_FLOAT_SNAP_INLINE) { + return lxb_css_parser_failed(parser); + } + + fp->snap_type = type; + break; + + case LXB_CSS_FLOAT_NEAR: + fp->snap_type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) { + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + } + + return lxb_css_parser_failed(parser); +} + +bool +lxb_css_property_state_clear(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_CLEAR_INLINE_START: + case LXB_CSS_CLEAR_INLINE_END: + case LXB_CSS_CLEAR_BLOCK_START: + case LXB_CSS_CLEAR_BLOCK_END: + case LXB_CSS_CLEAR_LEFT: + case LXB_CSS_CLEAR_RIGHT: + case LXB_CSS_CLEAR_TOP: + case LXB_CSS_CLEAR_BOTTOM: + case LXB_CSS_CLEAR_NONE: + declar->u.clear->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_float_defer(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_float_defer_t *fd = declar->u.float_defer; + + res = lxb_css_property_state_integer(parser, token, &fd->integer); + if (res) { + fd->type = LXB_CSS_FLOAT_DEFER__INTEGER; + + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLOAT_DEFER_LAST: + case LXB_CSS_FLOAT_DEFER_NONE: + fd->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_float_offset(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_float_offset_t *fo = declar->u.float_offset; + + res = lxb_css_property_state_length_percentage(parser, token, + (lxb_css_value_length_percentage_t *) fo); + if (res) { + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + fo->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_wrap_flow(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_WRAP_FLOW_AUTO: + case LXB_CSS_WRAP_FLOW_BOTH: + case LXB_CSS_WRAP_FLOW_START: + case LXB_CSS_WRAP_FLOW_END: + case LXB_CSS_WRAP_FLOW_MINIMUM: + case LXB_CSS_WRAP_FLOW_MAXIMUM: + case LXB_CSS_WRAP_FLOW_CLEAR: + declar->u.wrap_flow->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_wrap_through(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_WRAP_THROUGH_WRAP: + case LXB_CSS_WRAP_THROUGH_NONE: + declar->u.wrap_through->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_flex_direction(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLEX_DIRECTION_ROW: + case LXB_CSS_FLEX_DIRECTION_ROW_REVERSE: + case LXB_CSS_FLEX_DIRECTION_COLUMN: + case LXB_CSS_FLEX_DIRECTION_COLUMN_REVERSE: + declar->u.flex_direction->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_flex_wrap(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLEX_WRAP_NOWRAP: + case LXB_CSS_FLEX_WRAP_WRAP: + case LXB_CSS_FLEX_WRAP_WRAP_REVERSE: + declar->u.flex_wrap->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_flex_flow(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_flex_flow_t *ff = declar->u.flex_flow; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLEX_DIRECTION_ROW: + case LXB_CSS_FLEX_DIRECTION_ROW_REVERSE: + case LXB_CSS_FLEX_DIRECTION_COLUMN: + case LXB_CSS_FLEX_DIRECTION_COLUMN_REVERSE: + ff->type_direction = type; + goto direction; + + case LXB_CSS_FLEX_WRAP_NOWRAP: + case LXB_CSS_FLEX_WRAP_WRAP: + case LXB_CSS_FLEX_WRAP_WRAP_REVERSE: + ff->wrap = type; + goto wrap; + + default: + return lxb_css_parser_failed(parser); + } + +direction: + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_success(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_FLEX_WRAP_NOWRAP: + case LXB_CSS_FLEX_WRAP_WRAP: + case LXB_CSS_FLEX_WRAP_WRAP_REVERSE: + ff->wrap = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + goto done; + +wrap: + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_success(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_FLEX_DIRECTION_ROW: + case LXB_CSS_FLEX_DIRECTION_ROW_REVERSE: + case LXB_CSS_FLEX_DIRECTION_COLUMN: + case LXB_CSS_FLEX_DIRECTION_COLUMN_REVERSE: + ff->type_direction = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + +done: + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +lxb_inline bool +lxb_css_property_state_flex_grow_shrink(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_flex_t *flex) +{ + bool res; + + res = lxb_css_property_state_number(parser, token, &flex->grow.number); + if (!res) { + return false; + } + + flex->grow.type = LXB_CSS_FLEX_GROW__NUMBER; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_number(parser, token, &flex->shrink.number); + if (res) { + flex->shrink.type = LXB_CSS_FLEX_SHRINK__NUMBER; + } + + return true; +} + +lxb_inline bool +lxb_css_property_state_flex_grow_basis(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_flex_t *flex) +{ + bool res; + lxb_css_value_type_t type; + + res = lxb_css_property_state_width_handler(parser, token, + (lxb_css_property_flex_basis_t *) &flex->basis); + if (res) { + return true; + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return false; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + + if (type == LXB_CSS_FLEX_BASIS_CONTENT) { + flex->basis.type = type; + + lxb_css_syntax_parser_consume(parser); + return true; + } + + return false; +} + +bool +lxb_css_property_state_flex(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_flex_t *flex = declar->u.flex; + + res = lxb_css_property_state_flex_grow_shrink(parser, token, flex); + + if (res) { + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_flex_grow_basis(parser, token, flex); + + if (!res && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + flex->basis.type = LXB_CSS_VALUE__NUMBER; + flex->basis.u.length.num = flex->grow.number.num; + flex->basis.u.length.unit = LXB_CSS_UNIT__UNDEF; + flex->basis.u.length.is_float = flex->grow.number.is_float; + + flex->grow.type = LXB_CSS_VALUE__UNDEF; + + if (flex->shrink.type != LXB_CSS_VALUE__UNDEF) { + flex->grow = flex->shrink; + flex->shrink.type = LXB_CSS_VALUE__UNDEF; + + goto try_shrink_last; + } + + res = lxb_css_property_state_flex_grow_shrink(parser, token, flex); + if (!res) { + return lxb_css_parser_failed(parser); + } + } + + return lxb_css_parser_success(parser); + } + else { + res = lxb_css_property_state_flex_grow_basis(parser, token, flex); + + if (res) { + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + (void) lxb_css_property_state_flex_grow_shrink(parser, token, flex); + + return lxb_css_parser_success(parser); + } + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_FLEX_NONE: + flex->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); + +try_shrink_last: + + res = lxb_css_property_state_number(parser, token, &flex->shrink.number); + if (res) { + flex->shrink.type = LXB_CSS_FLEX_SHRINK__NUMBER; + } + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_flex_grow(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_flex_grow_t *fg = declar->u.flex_grow; + + res = lxb_css_property_state_number(parser, token, &fg->number); + if (res) { + if (fg->number.num < 0) { + return lxb_css_parser_failed(parser); + } + + fg->type = LXB_CSS_FLEX_GROW__NUMBER; + + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + fg->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_flex_shrink(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_flex_grow_t *fs = declar->u.flex_shrink; + + res = lxb_css_property_state_number(parser, token, &fs->number); + if (res) { + if (fs->number.num < 0) { + return lxb_css_parser_failed(parser); + } + + fs->type = LXB_CSS_FLEX_SHRINK__NUMBER; + + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + fs->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_flex_basis(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_flex_basis_t *fb = declar->u.flex_basis; + + res = lxb_css_property_state_width_handler(parser, token, + (lxb_css_property_width_t *) fb); + if (res) { + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + case LXB_CSS_FLEX_BASIS_CONTENT: + fb->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_justify_content(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_JUSTIFY_CONTENT_FLEX_START: + case LXB_CSS_JUSTIFY_CONTENT_FLEX_END: + case LXB_CSS_JUSTIFY_CONTENT_CENTER: + case LXB_CSS_JUSTIFY_CONTENT_SPACE_BETWEEN: + case LXB_CSS_JUSTIFY_CONTENT_SPACE_AROUND: + declar->u.justify_content->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_align_items(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_ALIGN_ITEMS_FLEX_START: + case LXB_CSS_ALIGN_ITEMS_FLEX_END: + case LXB_CSS_ALIGN_ITEMS_CENTER: + case LXB_CSS_ALIGN_ITEMS_BASELINE: + case LXB_CSS_ALIGN_ITEMS_STRETCH: + declar->u.align_items->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_align_self(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_ALIGN_SELF_AUTO: + case LXB_CSS_ALIGN_SELF_FLEX_START: + case LXB_CSS_ALIGN_SELF_FLEX_END: + case LXB_CSS_ALIGN_SELF_CENTER: + case LXB_CSS_ALIGN_SELF_BASELINE: + case LXB_CSS_ALIGN_SELF_STRETCH: + declar->u.align_self->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_align_content(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_ALIGN_CONTENT_FLEX_START: + case LXB_CSS_ALIGN_CONTENT_FLEX_END: + case LXB_CSS_ALIGN_CONTENT_CENTER: + case LXB_CSS_ALIGN_CONTENT_SPACE_BETWEEN: + case LXB_CSS_ALIGN_CONTENT_SPACE_AROUND: + case LXB_CSS_ALIGN_CONTENT_STRETCH: + declar->u.align_content->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_dominant_baseline(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_DOMINANT_BASELINE_AUTO: + case LXB_CSS_DOMINANT_BASELINE_TEXT_BOTTOM: + case LXB_CSS_DOMINANT_BASELINE_ALPHABETIC: + case LXB_CSS_DOMINANT_BASELINE_IDEOGRAPHIC: + case LXB_CSS_DOMINANT_BASELINE_MIDDLE: + case LXB_CSS_DOMINANT_BASELINE_CENTRAL: + case LXB_CSS_DOMINANT_BASELINE_MATHEMATICAL: + case LXB_CSS_DOMINANT_BASELINE_HANGING: + case LXB_CSS_DOMINANT_BASELINE_TEXT_TOP: + declar->u.dominant_baseline->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_alignment_baseline_h(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_alignment_baseline_t *ab) +{ + lxb_css_value_type_t type; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return false; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_ALIGNMENT_BASELINE_BASELINE: + case LXB_CSS_ALIGNMENT_BASELINE_TEXT_BOTTOM: + case LXB_CSS_ALIGNMENT_BASELINE_ALPHABETIC: + case LXB_CSS_ALIGNMENT_BASELINE_IDEOGRAPHIC: + case LXB_CSS_ALIGNMENT_BASELINE_MIDDLE: + case LXB_CSS_ALIGNMENT_BASELINE_CENTRAL: + case LXB_CSS_ALIGNMENT_BASELINE_MATHEMATICAL: + case LXB_CSS_ALIGNMENT_BASELINE_TEXT_TOP: + ab->type = type; + + lxb_css_syntax_parser_consume(parser); + return true; + + default: + return false; + } +} + +bool +lxb_css_property_state_baseline_shift_h(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_baseline_shift_t *bs) +{ + bool res; + lxb_css_value_type_t type; + + res = lxb_css_property_state_length_percentage(parser, token, bs); + + if (res) { + return true; + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return false; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_BASELINE_SHIFT_SUB: + case LXB_CSS_BASELINE_SHIFT_SUPER: + case LXB_CSS_BASELINE_SHIFT_TOP: + case LXB_CSS_BASELINE_SHIFT_CENTER: + case LXB_CSS_BASELINE_SHIFT_BOTTOM: + bs->type = type; + + lxb_css_syntax_parser_consume(parser); + return true; + + default: + return false; + } +} + +bool +lxb_css_property_state_vertical_align(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + uint8_t maps; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_vertical_align_t *va = declar->u.vertical_align; + + maps = 0; + +again: + + res = lxb_css_property_state_alignment_baseline_h(parser, token, + &va->alignment); + if (res) { + if (maps & 1 << 1) { + return lxb_css_parser_failed(parser); + } + + maps |= 1 << 1; + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_baseline_shift_h(parser, token, + &va->shift); + if (res) { + if (maps & 1 << 2) { + return lxb_css_parser_failed(parser); + } + + maps |= 1 << 2; + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + } + } + else { + res = lxb_css_property_state_baseline_shift_h(parser, token, + &va->shift); + if (res) { + if (maps & 1 << 2) { + return lxb_css_parser_failed(parser); + } + + maps |= 1 << 2; + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_alignment_baseline_h(parser, token, + &va->alignment); + if (res) { + if (maps & 1 << 1) { + return lxb_css_parser_failed(parser); + } + + maps |= 1 << 1; + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + } + } + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + if (maps != 0) { + return lxb_css_parser_success(parser); + } + + return lxb_css_parser_failed(parser); + } + + if (maps & 1 << 3) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_VERTICAL_ALIGN_FIRST: + case LXB_CSS_VERTICAL_ALIGN_LAST: + va->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + maps = 1 << 3; + + goto again; +} + +bool +lxb_css_property_state_baseline_source(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_BASELINE_SOURCE_AUTO: + case LXB_CSS_BASELINE_SOURCE_FIRST: + case LXB_CSS_BASELINE_SOURCE_LAST: + declar->u.baseline_source->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_alignment_baseline(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_ALIGNMENT_BASELINE_BASELINE: + case LXB_CSS_ALIGNMENT_BASELINE_TEXT_BOTTOM: + case LXB_CSS_ALIGNMENT_BASELINE_ALPHABETIC: + case LXB_CSS_ALIGNMENT_BASELINE_IDEOGRAPHIC: + case LXB_CSS_ALIGNMENT_BASELINE_MIDDLE: + case LXB_CSS_ALIGNMENT_BASELINE_CENTRAL: + case LXB_CSS_ALIGNMENT_BASELINE_MATHEMATICAL: + case LXB_CSS_ALIGNMENT_BASELINE_TEXT_TOP: + declar->u.alignment_baseline->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_baseline_shift(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + res = lxb_css_property_state_length_percentage(parser, token, + declar->u.baseline_shift); + if (res) { + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_BASELINE_SHIFT_SUB: + case LXB_CSS_BASELINE_SHIFT_SUPER: + case LXB_CSS_BASELINE_SHIFT_TOP: + case LXB_CSS_BASELINE_SHIFT_CENTER: + case LXB_CSS_BASELINE_SHIFT_BOTTOM: + declar->u.baseline_shift->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_line_height(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + res = lxb_css_property_state_number_length_percentage(parser, token, + declar->u.line_height); + if (res) { + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_LINE_HEIGHT_NORMAL: + declar->u.line_height->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_z_index(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + res = lxb_css_property_state_integer(parser, token, + &declar->u.z_index->integer); + if (res) { + declar->u.z_index->type = LXB_CSS_VALUE__INTEGER; + return lxb_css_parser_success(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_Z_INDEX_AUTO: + declar->u.line_height->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_direction(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_DIRECTION_LTR: + case LXB_CSS_DIRECTION_RTL: + declar->u.direction->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_unicode_bidi(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_UNICODE_BIDI_NORMAL: + case LXB_CSS_UNICODE_BIDI_EMBED: + case LXB_CSS_UNICODE_BIDI_ISOLATE: + case LXB_CSS_UNICODE_BIDI_BIDI_OVERRIDE: + case LXB_CSS_UNICODE_BIDI_ISOLATE_OVERRIDE: + case LXB_CSS_UNICODE_BIDI_PLAINTEXT: + declar->u.unicode_bidi->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_writing_mode(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_WRITING_MODE_HORIZONTAL_TB: + case LXB_CSS_WRITING_MODE_VERTICAL_RL: + case LXB_CSS_WRITING_MODE_VERTICAL_LR: + case LXB_CSS_WRITING_MODE_SIDEWAYS_RL: + case LXB_CSS_WRITING_MODE_SIDEWAYS_LR: + declar->u.writing_mode->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_orientation(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_ORIENTATION_MIXED: + case LXB_CSS_TEXT_ORIENTATION_UPRIGHT: + case LXB_CSS_TEXT_ORIENTATION_SIDEWAYS: + declar->u.text_orientation->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_combine_upright(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_text_combine_upright_t *tcu = declar->u.text_combine_upright; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_COMBINE_UPRIGHT_NONE: + case LXB_CSS_TEXT_COMBINE_UPRIGHT_ALL: + tcu->type = type; + break; + + case LXB_CSS_TEXT_COMBINE_UPRIGHT_DIGITS: + tcu->type = type; + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + res = lxb_css_property_state_integer(parser, token, + &tcu->digits); + if (res) { + if (tcu->digits.num != 2 && tcu->digits.num != 4) { + return lxb_css_parser_failed(parser); + } + } + + return lxb_css_parser_success(parser); + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_overflow_x(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_OVERFLOW_X_VISIBLE: + case LXB_CSS_OVERFLOW_X_HIDDEN: + case LXB_CSS_OVERFLOW_X_CLIP: + case LXB_CSS_OVERFLOW_X_SCROLL: + case LXB_CSS_OVERFLOW_X_AUTO: + declar->u.overflow_x->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_overflow_y(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_overflow_x(parser, token, ctx); +} + +bool +lxb_css_property_state_overflow_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_overflow_x(parser, token, ctx); +} + +bool +lxb_css_property_state_overflow_inline(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_overflow_x(parser, token, ctx); +} + +bool +lxb_css_property_state_text_overflow(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_OVERFLOW_CLIP: + case LXB_CSS_TEXT_OVERFLOW_ELLIPSIS: + declar->u.text_overflow->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +lxb_status_t +lxb_css_property_state_text_decoration_line_h(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_text_decoration_line_t *tdl) +{ + lxb_css_value_type_t type; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return LXB_STATUS_NEXT; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_TEXT_DECORATION_LINE_NONE: + tdl->type = type; + + lxb_css_syntax_parser_consume(parser); + return LXB_STATUS_OK; + + default: + goto first; + } + +next: + + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token_wo_ws(parser); + if (token == NULL) { + return LXB_STATUS_ERROR_MEMORY_ALLOCATION; + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return LXB_STATUS_OK; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + +first: + + switch (type) { + case LXB_CSS_TEXT_DECORATION_LINE_UNDERLINE: + if (tdl->underline != LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_STOP; + } + + tdl->underline = type; + goto next; + + case LXB_CSS_TEXT_DECORATION_LINE_OVERLINE: + if (tdl->overline != LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_STOP; + } + + tdl->overline = type; + goto next; + + case LXB_CSS_TEXT_DECORATION_LINE_LINE_THROUGH: + if (tdl->line_through != LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_STOP; + } + + tdl->line_through = type; + goto next; + + case LXB_CSS_TEXT_DECORATION_LINE_BLINK: + if (tdl->blink != LXB_CSS_VALUE__UNDEF) { + return LXB_STATUS_STOP; + } + + tdl->blink = type; + goto next; + + default: + if (tdl->underline != LXB_CSS_VALUE__UNDEF + || tdl->overline != LXB_CSS_VALUE__UNDEF + || tdl->line_through != LXB_CSS_VALUE__UNDEF + || tdl->blink != LXB_CSS_VALUE__UNDEF) + { + return LXB_STATUS_OK; + } + + return LXB_STATUS_NEXT; + } +} + +bool +lxb_css_property_state_text_decoration_line(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_status_t status; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_text_decoration_line_t *tdl = declar->u.text_decoration_line; + + status = lxb_css_property_state_text_decoration_line_h(parser, token, tdl); + + if (status == LXB_STATUS_OK) { + return lxb_css_parser_success(parser); + } + else if (status == LXB_STATUS_STOP) { + return lxb_css_parser_failed(parser); + } + else if (status != LXB_STATUS_NEXT) { + return lxb_css_parser_memory_fail(parser); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + tdl->type = type; + + lxb_css_syntax_parser_consume(parser); + return lxb_css_parser_success(parser); + + default: + return lxb_css_parser_failed(parser); + } +} + +bool +lxb_css_property_state_text_decoration_style_h(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_property_text_decoration_style_t *tds) +{ + lxb_css_value_type_t type; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return false; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + case LXB_CSS_TEXT_DECORATION_STYLE_SOLID: + case LXB_CSS_TEXT_DECORATION_STYLE_DOUBLE: + case LXB_CSS_TEXT_DECORATION_STYLE_DOTTED: + case LXB_CSS_TEXT_DECORATION_STYLE_DASHED: + case LXB_CSS_TEXT_DECORATION_STYLE_WAVY: + tds->type = type; + + lxb_css_syntax_parser_consume(parser); + return true; + + default: + return false; + } +} + +bool +lxb_css_property_state_text_decoration_style(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + return lxb_css_parser_failed(parser); + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + /* Local. */ + case LXB_CSS_TEXT_DECORATION_STYLE_SOLID: + case LXB_CSS_TEXT_DECORATION_STYLE_DOUBLE: + case LXB_CSS_TEXT_DECORATION_STYLE_DOTTED: + case LXB_CSS_TEXT_DECORATION_STYLE_DASHED: + case LXB_CSS_TEXT_DECORATION_STYLE_WAVY: + declar->u.text_decoration_style->type = type; + break; + + default: + return lxb_css_parser_failed(parser); + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_parser_success(parser); +} + +bool +lxb_css_property_state_text_decoration_color(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_property_state_color(parser, token, ctx); +} + +bool +lxb_css_property_state_text_decoration(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + bool res, line, style, color; + lxb_status_t status; + lxb_css_value_type_t type; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_property_text_decoration_t *td = declar->u.text_decoration; + + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT) { + goto lsc; + } + + type = lxb_css_value_by_name(lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length); + switch (type) { + /* Global. */ + case LXB_CSS_VALUE_INITIAL: + case LXB_CSS_VALUE_INHERIT: + case LXB_CSS_VALUE_UNSET: + case LXB_CSS_VALUE_REVERT: + td->line.type = type; + + lxb_css_syntax_parser_consume(parser); + return lxb_css_parser_success(parser); + + default: + break; + } + +lsc: + + line = false; + style = false; + color = false; + + for (size_t i = 0; i < 3; i++) { + if (!line) { + status = lxb_css_property_state_text_decoration_line_h(parser, token, + &td->line); + if (status == LXB_STATUS_OK) { + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + line = true; + } + else if (status == LXB_STATUS_STOP) { + return lxb_css_parser_failed(parser); + } + else if (status != LXB_STATUS_NEXT) { + return lxb_css_parser_memory_fail(parser); + } + } + + if (!style) { + res = lxb_css_property_state_text_decoration_style_h(parser, token, + &td->style); + if (res) { + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + style = true; + } + } + + if (!color) { + res = lxb_css_property_state_color_handler(parser, token, + (lxb_css_value_color_t *) &td->color, + &status); + if (res) { + token = lxb_css_syntax_parser_token_wo_ws(parser); + lxb_css_property_state_check_token(parser, token); + + color = true; + } + else { + if (status != LXB_STATUS_OK) { + return lxb_css_parser_failed(parser); + } + } + } + } + + if (!line && !style && !color) { + return lxb_css_parser_failed(parser); + } + + return lxb_css_parser_success(parser); +} diff --git a/ext/lexbor/lexbor/css/property/types.h b/ext/lexbor/lexbor/css/property/types.h new file mode 100644 index 000000000000..3a23f125a698 --- /dev/null +++ b/ext/lexbor/lexbor/css/property/types.h @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2025 Alexander Borisov + * + * Author: Alexander Borisov + */ + +/* + * Caution! + * This file generated by the script "utils/lexbor/css/names.py"! + * Do not change this file! + */ + + +#ifndef LXB_CSS_PROPERTY_TYPES_H +#define LXB_CSS_PROPERTY_TYPES_H + + + + + +#endif /* LXB_CSS_PROPERTY_TYPES_H */ diff --git a/ext/lexbor/lexbor/css/rule.c b/ext/lexbor/lexbor/css/rule.c new file mode 100644 index 000000000000..5ee938730ea8 --- /dev/null +++ b/ext/lexbor/lexbor/css/rule.c @@ -0,0 +1,598 @@ +/* + * Copyright (C) 2021-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/rule.h" +#include "lexbor/css/parser.h" +#include "lexbor/core/serialize.h" +#include "lexbor/css/stylesheet.h" +#include "lexbor/css/selectors/selectors.h" + + +void * +lxb_css_rule_destroy(lxb_css_rule_t *rule, bool self_destroy) +{ + switch (rule->type) { + case LXB_CSS_RULE_LIST: + return lxb_css_rule_list_destroy(lxb_css_rule_list(rule), + self_destroy); + case LXB_CSS_RULE_AT_RULE: + return lxb_css_rule_at_destroy(lxb_css_rule_at(rule), + self_destroy); + case LXB_CSS_RULE_STYLE: + return lxb_css_rule_style_destroy(lxb_css_rule_style(rule), + self_destroy); + case LXB_CSS_RULE_BAD_STYLE: + return lxb_css_rule_bad_style_destroy(lxb_css_rule_bad_style(rule), + self_destroy); + case LXB_CSS_RULE_DECLARATION: + return lxb_css_rule_declaration_destroy(lxb_css_rule_declaration(rule), + self_destroy); + case LXB_CSS_RULE_DECLARATION_LIST: + return lxb_css_rule_declaration_list_destroy(lxb_css_rule_declaration_list(rule), + self_destroy); + case LXB_CSS_RULE_STYLESHEET: + case LXB_CSS_RULE_UNDEF: + return NULL; + } + + return NULL; +} + +lxb_status_t +lxb_css_rule_serialize(const lxb_css_rule_t *rule, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (rule->type) { + case LXB_CSS_RULE_LIST: + return lxb_css_rule_list_serialize(lxb_css_rule_list(rule), cb, ctx); + + case LXB_CSS_RULE_AT_RULE: + return lxb_css_rule_at_serialize(lxb_css_rule_at(rule), cb, ctx); + + case LXB_CSS_RULE_STYLE: + return lxb_css_rule_style_serialize(lxb_css_rule_style(rule), + cb, ctx); + case LXB_CSS_RULE_BAD_STYLE: + return lxb_css_rule_bad_style_serialize(lxb_css_rule_bad_style(rule), + cb, ctx); + case LXB_CSS_RULE_DECLARATION: + return lxb_css_rule_declaration_serialize(lxb_css_rule_declaration(rule), + cb, ctx); + case LXB_CSS_RULE_DECLARATION_LIST: + return lxb_css_rule_declaration_list_serialize(lxb_css_rule_declaration_list(rule), + cb, ctx); + case LXB_CSS_RULE_STYLESHEET: + case LXB_CSS_RULE_UNDEF: + break; + } + + return LXB_STATUS_ERROR_WRONG_ARGS; +} + +lxb_status_t +lxb_css_rule_serialize_chain(const lxb_css_rule_t *rule, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + + static const lxb_char_t ws_str[] = "\n"; + + status = lxb_css_rule_serialize(rule, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + rule = rule->next; + + while (rule != NULL) { + lexbor_serialize_write(cb, ws_str, (sizeof(ws_str) - 1), ctx, status); + + status = lxb_css_rule_serialize(rule, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + rule = rule->next; + } + + return LXB_STATUS_OK; +} + +lxb_css_rule_list_t * +lxb_css_rule_list_destroy(lxb_css_rule_list_t *list, bool self_destroy) +{ + lxb_css_rule_t *rule, *next, *parent; + lxb_css_rule_t *child_rule; + lxb_css_memory_t *memory; + lxb_css_rule_at_t *at; + lxb_css_rule_style_t *style; + lxb_css_rule_bad_style_t *bad; + lxb_css_rule_list_t *sub_list; + lxb_css_rule_declaration_list_t *declr_list; + + if (list == NULL) { + return NULL; + } + + rule = list->first; + memory = lxb_css_rule(list)->memory; + + while (rule != NULL) { + child_rule = NULL; + + switch (rule->type) { + case LXB_CSS_RULE_LIST: + sub_list = lxb_css_rule_list(rule); + + if (sub_list->first != NULL) { + child_rule = sub_list->first; + + sub_list->first = NULL; + sub_list->last = NULL; + } + break; + + case LXB_CSS_RULE_STYLE: + style = lxb_css_rule_style(rule); + + if (style->child != NULL) { + child_rule = lxb_css_rule(style->child); + style->child = NULL; + } + break; + + case LXB_CSS_RULE_BAD_STYLE: + bad = lxb_css_rule_bad_style(rule); + + if (bad->child != NULL) { + child_rule = lxb_css_rule(bad->child); + bad->child = NULL; + } + break; + + case LXB_CSS_RULE_AT_RULE: + at = lxb_css_rule_at(rule); + + if (at->type == LXB_CSS_AT_RULE_MEDIA) { + if (at->u.media != NULL && at->u.media->block != NULL) { + child_rule = lxb_css_rule(at->u.media->block); + at->u.media->block = NULL; + } + } + else if (at->type == LXB_CSS_AT_RULE__UNDEF) { + if (at->u.undef != NULL && at->u.undef->block != NULL) { + child_rule = lxb_css_rule(at->u.undef->block); + at->u.undef->block = NULL; + } + } + else if (at->type == LXB_CSS_AT_RULE__CUSTOM) { + if (at->u.custom != NULL && at->u.custom->block != NULL) { + child_rule = lxb_css_rule(at->u.custom->block); + at->u.custom->block = NULL; + } + } + else if (at->type == LXB_CSS_AT_RULE_FONT_FACE) { + if (at->u.font_face != NULL && at->u.font_face->block != NULL) { + child_rule = lxb_css_rule(at->u.font_face->block); + at->u.font_face->block = NULL; + } + } + break; + + case LXB_CSS_RULE_DECLARATION_LIST: + declr_list = lxb_css_rule_declaration_list(rule); + + if (declr_list->first != NULL) { + child_rule = declr_list->first; + + declr_list->first = NULL; + declr_list->last = NULL; + } + break; + + default: + break; + } + + if (child_rule != NULL) { + rule = child_rule; + continue; + } + + next = rule->next; + parent = rule->parent; + + (void) lxb_css_rule_destroy(rule, true); + + if (next != NULL) { + rule = next; + } + else { + if (parent == lxb_css_rule(list)) { + break; + } + + rule = parent; + } + } + + if (self_destroy) { + return lexbor_mraw_free(memory->tree, list); + } + + list->first = NULL; + list->last = NULL; + + return list; +} + +lxb_status_t +lxb_css_rule_list_serialize(const lxb_css_rule_list_t *list, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + lxb_css_rule_t *rule; + + static const lxb_char_t nl_str[] = "\n"; + + rule = list->first; + + if (rule == NULL) { + return LXB_STATUS_OK; + } + + status = lxb_css_rule_serialize(rule, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + rule = rule->next; + + while (rule != NULL) { + lexbor_serialize_write(cb, nl_str, (sizeof(nl_str) - 1), ctx, status); + + status = lxb_css_rule_serialize(rule, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + rule = rule->next; + } + + return LXB_STATUS_OK; +} + +lxb_css_rule_at_t * +lxb_css_rule_at_destroy(lxb_css_rule_at_t *at, bool self_destroy) +{ + lxb_css_memory_t *memory = lxb_css_rule(at)->memory; + + switch (at->type) { + case LXB_CSS_AT_RULE__UNDEF: + (void) lxb_css_at_rule__undef_destroy(memory, at->u.undef, true); + break; + + case LXB_CSS_AT_RULE_MEDIA: + (void) lxb_css_at_rule_media_destroy(memory, at->u.media, true); + break; + + case LXB_CSS_AT_RULE_NAMESPACE: + (void) lxb_css_at_rule_namespace_destroy(memory, at->u.ns, true); + break; + + case LXB_CSS_AT_RULE__LAST_ENTRY: + break; + } + + if (self_destroy) { + return lexbor_mraw_free(memory->tree, at); + } + + return at; +} + +lxb_status_t +lxb_css_rule_at_serialize(const lxb_css_rule_at_t *at, lexbor_serialize_cb_f cb, + void *ctx) +{ + lxb_status_t status; + const lxb_css_at_rule__undef_t *undef; + const lxb_css_at_rule__custom_t *custom; + const lxb_css_entry_at_rule_data_t *data, *undata; + + static const lxb_char_t at_str[] = "@"; + + data = lxb_css_at_rule_by_id(at->type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + lexbor_serialize_write(cb, at_str, (sizeof(at_str) - 1), ctx, status); + + if (at->type == LXB_CSS_AT_RULE__UNDEF) { + undef = at->u.undef; + + undata = lxb_css_at_rule_by_id(undef->type); + if (undata == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + lexbor_serialize_write(cb, undata->name, undata->length, ctx, status); + } + else if (at->type == LXB_CSS_AT_RULE__CUSTOM) { + custom = at->u.custom; + + lexbor_serialize_write(cb, custom->name.data, + custom->name.length, ctx, status); + } + else { + lexbor_serialize_write(cb, data->name, data->length, ctx, status); + } + + return data->serialize(at->u.user, cb, ctx); +} + +lxb_status_t +lxb_css_rule_at_serialize_name(const lxb_css_rule_at_t *at, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_at_rule_serialize_name(at->u.user, at->type, cb, ctx); +} + +lxb_css_rule_style_t * +lxb_css_rule_style_destroy(lxb_css_rule_style_t *style, bool self_destroy) +{ + lxb_css_memory_t *memory = lxb_css_rule(style)->memory; + + lxb_css_selector_list_destroy(style->selector); + (void) lxb_css_rule_declaration_list_destroy(style->declarations, true); + (void) lxb_css_rule_list_destroy(style->child, true); + + style->selector = NULL; + style->declarations = NULL; + style->child = NULL; + + if (self_destroy) { + return lexbor_mraw_free(memory->tree, style); + } + + return style; +} + +lxb_status_t +lxb_css_rule_style_serialize(const lxb_css_rule_style_t *style, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + + static const lxb_char_t lc_str[] = " {"; + static const lxb_char_t rc_str[] = "}"; + static const lxb_char_t cm_str[] = "; "; + + status = lxb_css_selector_serialize_list_chain(style->selector, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (style->declarations != NULL) { + lexbor_serialize_write(cb, lc_str, (sizeof(lc_str) - 1), ctx, status); + + status = lxb_css_rule_declaration_list_serialize(style->declarations, + cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (style->child == NULL) { + lexbor_serialize_write(cb, rc_str, (sizeof(rc_str) - 1), + ctx, status); + } + } + + if (style->child != NULL && style->child->first != NULL) { + lexbor_serialize_write(cb, cm_str, (sizeof(cm_str) - 1), ctx, status); + + status = lxb_css_rule_list_serialize(style->child, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + } + + if (style->declarations != NULL) { + lexbor_serialize_write(cb, rc_str, (sizeof(rc_str) - 1), ctx, status); + } + + return LXB_STATUS_OK; +} + +lxb_css_rule_bad_style_t * +lxb_css_rule_bad_style_destroy(lxb_css_rule_bad_style_t *bad, bool self_destroy) +{ + lxb_css_memory_t *memory = lxb_css_rule(bad)->memory; + + (void) lexbor_str_destroy(&bad->selectors, memory->mraw, false); + bad->declarations = lxb_css_rule_declaration_list_destroy(bad->declarations, + true); + bad->child = lxb_css_rule_list_destroy(bad->child, true); + + if (self_destroy) { + return lexbor_mraw_free(memory->tree, bad); + } + + return bad; +} + +lxb_status_t +lxb_css_rule_bad_style_serialize(const lxb_css_rule_bad_style_t *bad, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + + static const lxb_char_t lc_str[] = "{"; + static const lxb_char_t rc_str[] = "}"; + + if (bad->selectors.data != NULL) { + lexbor_serialize_write(cb, bad->selectors.data, bad->selectors.length, + ctx, status); + } + + if (bad->declarations != NULL) { + lexbor_serialize_write(cb, lc_str, (sizeof(lc_str) - 1), ctx, status); + + status = lxb_css_rule_declaration_list_serialize(bad->declarations, + cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + return cb(rc_str, (sizeof(rc_str) - 1), ctx); + } + + return LXB_STATUS_OK; +} + +lxb_css_rule_declaration_list_t * +lxb_css_rule_declaration_list_destroy(lxb_css_rule_declaration_list_t *list, + bool self_destroy) +{ + lxb_css_rule_t *declr, *next; + + if (list == NULL) { + return NULL; + } + + declr = list->first; + + while (declr != NULL) { + next = declr->next; + (void) lxb_css_rule_destroy(declr, true); + declr = next; + } + + if (self_destroy) { + return lexbor_mraw_free(lxb_css_rule(list)->memory->tree, list); + } + + list->first = NULL; + list->last = NULL; + + return list; +} + +lxb_status_t +lxb_css_rule_declaration_list_serialize(const lxb_css_rule_declaration_list_t *list, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_rule_t *declr; + + static const lxb_char_t sm_str[] = "; "; + + declr = list->first; + + if (declr == NULL) { + return LXB_STATUS_OK; + } + + status = lxb_css_rule_serialize(declr, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + declr = declr->next; + + while (declr != NULL) { + lexbor_serialize_write(cb, sm_str, (sizeof(sm_str) - 1), ctx, status); + + status = lxb_css_rule_serialize(declr, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + declr = declr->next; + } + + return LXB_STATUS_OK; +} + +lxb_css_rule_declaration_t * +lxb_css_rule_declaration_destroy(lxb_css_rule_declaration_t *declr, + bool self_destroy) +{ + lxb_css_memory_t *memory = lxb_css_rule(declr)->memory; + + if (declr->u.user != NULL) { + declr->u.user = lxb_css_property_destroy(memory, declr->u.user, + declr->type, true); + } + + if (self_destroy) { + return lexbor_mraw_free(memory->tree, declr); + } + + return declr; +} + +lxb_status_t +lxb_css_rule_declaration_serialize(const lxb_css_rule_declaration_t *declaration, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + const lxb_css_entry_data_t *data, *undata; + const lxb_css_property__undef_t *undef; + const lxb_css_property__custom_t *custom; + + static const lxb_char_t cl_str[] = ": "; + static const lxb_char_t imp_str[] = " !important"; + + data = lxb_css_property_by_id(declaration->type); + if (data == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + if (declaration->type == LXB_CSS_PROPERTY__UNDEF) { + undef = declaration->u.undef; + + if (undef->type > LXB_CSS_PROPERTY__CUSTOM) { + undata = lxb_css_property_by_id(undef->type); + if (undata == NULL) { + return LXB_STATUS_ERROR_NOT_EXISTS; + } + + lexbor_serialize_write(cb, undata->name, undata->length, ctx, status); + lexbor_serialize_write(cb, cl_str, (sizeof(cl_str) - 1), ctx, status); + } + } + else if (declaration->type == LXB_CSS_PROPERTY__CUSTOM) { + custom = declaration->u.custom; + + lexbor_serialize_write(cb, custom->name.data, custom->name.length, + ctx, status); + lexbor_serialize_write(cb, cl_str, (sizeof(cl_str) - 1), ctx, status); + } + else { + lexbor_serialize_write(cb, data->name, data->length, ctx, status); + lexbor_serialize_write(cb, cl_str, (sizeof(cl_str) - 1), ctx, status); + } + + status = data->serialize(declaration->u.user, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (declaration->important && declaration->type != LXB_CSS_PROPERTY__UNDEF) { + lexbor_serialize_write(cb, imp_str, (sizeof(imp_str) - 1), ctx, status); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_rule_declaration_serialize_name(const lxb_css_rule_declaration_t *declr, + lexbor_serialize_cb_f cb, void *ctx) +{ + return lxb_css_property_serialize_name(declr->u.user, declr->type, cb, ctx); +} diff --git a/ext/lexbor/lexbor/css/rule.h b/ext/lexbor/lexbor/css/rule.h index bd191f9b6519..d192a0161ccd 100644 --- a/ext/lexbor/lexbor/css/rule.h +++ b/ext/lexbor/lexbor/css/rule.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2023 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -46,9 +46,6 @@ struct lxb_css_rule { lxb_css_rule_t *prev; lxb_css_rule_t *parent; - const lxb_char_t *begin; - const lxb_char_t *end; - lxb_css_memory_t *memory; size_t ref_count; }; @@ -68,10 +65,15 @@ struct lxb_css_rule_at { union { lxb_css_at_rule__undef_t *undef; lxb_css_at_rule__custom_t *custom; + lxb_css_at_rule_font_face_t *font_face; lxb_css_at_rule_media_t *media; lxb_css_at_rule_namespace_t *ns; void *user; } u; + + size_t name_begin; + size_t prelude_begin; + size_t prelude_end; }; struct lxb_css_rule_style { @@ -79,6 +81,10 @@ struct lxb_css_rule_style { lxb_css_selector_list_t *selector; lxb_css_rule_declaration_list_t *declarations; + lxb_css_rule_list_t *child; + + size_t prelude_begin; + size_t prelude_end; }; struct lxb_css_rule_bad_style { @@ -86,6 +92,10 @@ struct lxb_css_rule_bad_style { lexbor_str_t selectors; lxb_css_rule_declaration_list_t *declarations; + lxb_css_rule_list_t *child; + + size_t prelude_begin; + size_t prelude_end; }; struct lxb_css_rule_declaration_list { @@ -97,6 +107,16 @@ struct lxb_css_rule_declaration_list { size_t count; }; +typedef struct { + size_t name_begin; + size_t name_end; + size_t value_begin; + size_t value_end; + size_t important_begin; + size_t important_end; +} +lxb_css_rule_declaration_offset_t; + struct lxb_css_rule_declaration { lxb_css_rule_t rule; uintptr_t type; @@ -204,7 +224,9 @@ struct lxb_css_rule_declaration { void *user; } u; - bool important; + lxb_css_rule_declaration_offset_t offset; + + bool important; }; diff --git a/ext/lexbor/lexbor/css/selectors/base.h b/ext/lexbor/lexbor/css/selectors/base.h index 279c1e5f68c3..3151f74b04ee 100644 --- a/ext/lexbor/lexbor/css/selectors/base.h +++ b/ext/lexbor/lexbor/css/selectors/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2024 Alexander Borisov + * Copyright (C) 2021-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -16,7 +16,7 @@ extern "C" { #define LXB_CSS_SELECTORS_VERSION_MAJOR 1 -#define LXB_CSS_SELECTORS_VERSION_MINOR 1 +#define LXB_CSS_SELECTORS_VERSION_MINOR 3 #define LXB_CSS_SELECTORS_VERSION_PATCH 0 #define LXB_CSS_SELECTORS_VERSION_STRING \ diff --git a/ext/lexbor/lexbor/css/selectors/pseudo_const.h b/ext/lexbor/lexbor/css/selectors/pseudo_const.h index 2b19f1888147..9fa5bb2177c7 100644 --- a/ext/lexbor/lexbor/css/selectors/pseudo_const.h +++ b/ext/lexbor/lexbor/css/selectors/pseudo_const.h @@ -69,15 +69,16 @@ typedef enum { LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS = 0x0003, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS = 0x0004, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG = 0x0005, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT = 0x0006, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD = 0x0007, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL = 0x0008, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD = 0x0009, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL = 0x000a, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE = 0x000b, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE = 0x000c, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE = 0x000d, - LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__LAST_ENTRY = 0x000e + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LEXBOR_CONTAINS = 0x0006, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT = 0x0007, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD = 0x0008, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL = 0x0009, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD = 0x000a, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL = 0x000b, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE = 0x000c, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE = 0x000d, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE = 0x000e, + LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__LAST_ENTRY = 0x000f } lxb_css_selector_pseudo_class_function_id_t; diff --git a/ext/lexbor/lexbor/css/selectors/pseudo_res.h b/ext/lexbor/lexbor/css/selectors/pseudo_res.h index 5ae6e048064c..108257406069 100644 --- a/ext/lexbor/lexbor/css/selectors/pseudo_res.h +++ b/ext/lexbor/lexbor/css/selectors/pseudo_res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -68,60 +68,64 @@ static const lxb_css_selectors_pseudo_data_func_t lxb_css_selectors_pseudo_data_ { {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__UNDEF, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function__undef, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function__undef, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "current", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_current, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true}, + {.value = lxb_css_selectors_state_pseudo_class_function_current, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, true}, {(lxb_char_t *) "dir", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_dir, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function_dir, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "has", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS, false, LXB_CSS_SELECTOR_COMBINATOR_DESCENDANT, - {.state = lxb_css_selectors_state_pseudo_class_function_has, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving_relative}, true, true}, + {.value = lxb_css_selectors_state_pseudo_class_function_has, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_forgiving_relative}, true, true}, {(lxb_char_t *) "is", 2, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_is, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving}, true, true}, + {.value = lxb_css_selectors_state_pseudo_class_function_is, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_forgiving}, true, true}, {(lxb_char_t *) "lang", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_lang, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function_lang, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, + {(lxb_char_t *) "lexbor-contains", 15, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LEXBOR_CONTAINS, + false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, + {.value = lxb_css_selectors_state_pseudo_class_function_lexbor_contains, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "not", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_not, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true}, + {.value = lxb_css_selectors_state_pseudo_class_function_not, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, true}, {(lxb_char_t *) "nth-child", 9, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_nth_child, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true}, + {.value = lxb_css_selectors_state_pseudo_class_function_nth_child, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, true}, {(lxb_char_t *) "nth-col", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_nth_col, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function_nth_col, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "nth-last-child", 14, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_child, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true}, + {.value = lxb_css_selectors_state_pseudo_class_function_nth_last_child, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, true}, {(lxb_char_t *) "nth-last-col", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_col, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function_nth_last_col, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "nth-last-of-type", 16, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_of_type, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function_nth_last_of_type, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "nth-of-type", 11, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_nth_of_type, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}, + {.value = lxb_css_selectors_state_pseudo_class_function_nth_of_type, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false}, {(lxb_char_t *) "where", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_class_function_where, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving}, true, true} + {.value = lxb_css_selectors_state_pseudo_class_function_where, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_forgiving}, true, true} }; static const lxb_css_selectors_pseudo_data_t lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT__LAST_ENTRY] = @@ -145,8 +149,8 @@ static const lxb_css_selectors_pseudo_data_func_t lxb_css_selectors_pseudo_data_ { {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FUNCTION__UNDEF, false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE, - {.state = lxb_css_selectors_state_pseudo_element_function__undef, .block = NULL, - .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false} + {.value = lxb_css_selectors_state_pseudo_element_function__undef, + .cb.failed = lxb_css_state_failed, .cb.end = lxb_css_selectors_state_function_end}, false, false} }; static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_shs[79] = @@ -232,46 +236,50 @@ static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_shs[79] = {NULL, NULL, 0, 0} }; -static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_function_shs[39] = +static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_function_shs[43] = { - {NULL, NULL, 38, 0}, + {NULL, NULL, 42, 0}, + {"nth-last-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE], 16, 0}, {NULL, NULL, 0, 0}, - {"current", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT], 7, 0}, {NULL, NULL, 0, 0}, - {"dir", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR], 3, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, + {"not", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT], 3, 0}, {NULL, NULL, 0, 0}, - {"is", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS], 2, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"nth-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD], 9, 0}, {NULL, NULL, 0, 0}, + {"has", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS], 3, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"nth-last-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD], 14, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, + {"nth-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL], 7, 0}, {NULL, NULL, 0, 0}, - {"where", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE], 5, 0}, + {"lexbor-contains", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LEXBOR_CONTAINS], 15, 0}, + {NULL, NULL, 0, 0}, + {"is", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS], 2, 0}, + {"nth-last-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL], 12, 0}, + {"current", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT], 7, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"nth-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL], 7, 0}, {"lang", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG], 4, 0}, - {"has", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS], 3, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"nth-last-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL], 12, 0}, - {"nth-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE], 11, 0}, + {"nth-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD], 9, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"not", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT], 3, 0}, - {"nth-last-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE], 16, 0}, + {NULL, NULL, 0, 0}, + {"nth-last-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD], 14, 0}, + {"nth-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE], 11, 0}, + {NULL, NULL, 0, 0}, + {"dir", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR], 3, 0}, + {"where", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE], 5, 0}, {NULL, NULL, 0, 0} }; diff --git a/ext/lexbor/lexbor/css/selectors/pseudo_state.c b/ext/lexbor/lexbor/css/selectors/pseudo_state.c index f40b089d1300..263ca52f35e4 100644 --- a/ext/lexbor/lexbor/css/selectors/pseudo_state.c +++ b/ext/lexbor/lexbor/css/selectors/pseudo_state.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -27,10 +27,9 @@ lxb_css_selectors_state_pseudo_of_back(lxb_css_parser_t *parser, static const lxb_css_syntax_cb_components_t lxb_css_selectors_comp = { - .state = lxb_css_selectors_state_complex_list, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_state_pseudo_of_end + .prelude = lxb_css_selectors_state_complex_list, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_state_pseudo_of_end }; @@ -182,6 +181,117 @@ lxb_css_selectors_state_pseudo_element_function__undef(lxb_css_parser_t *parser, return true; } +bool +lxb_css_selectors_state_pseudo_class_function_lexbor_contains(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_selectors_t *selectors; + lxb_css_selector_t *selector; + lxb_css_selector_contains_t *contains; + lexbor_str_t *str; + const lxb_char_t *data; + size_t length; + + selectors = parser->selectors; + selector = selectors->list_last->last; + +again: + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_STRING: + data = token->types.string.data; + length = token->types.string.length; + break; + + case LXB_CSS_SYNTAX_TOKEN_IDENT: + data = token->types.ident.data; + length = token->types.ident.length; + break; + + case LXB_CSS_SYNTAX_TOKEN_WHITESPACE: + lxb_css_syntax_parser_consume(parser); + lxb_css_parser_token_status_m(parser, token); + goto again; + + default: + lxb_css_parser_unexpected_data(parser, token); + return lxb_css_parser_failed(parser); + } + + contains = lexbor_mraw_alloc(parser->memory->mraw, + sizeof(lxb_css_selector_contains_t)); + if (contains == NULL) { + return lxb_css_parser_memory_fail(parser); + } + + contains->insensitive = false; + str = &contains->str; + + str->data = lexbor_mraw_alloc(parser->memory->mraw, + sizeof(lexbor_str_t)); + if (str->data == NULL) { + return lxb_css_parser_memory_fail(parser); + } + + memcpy(str->data, data, length + 1); + + str->length = length; + str->data[length] = '\0'; + + selector->u.pseudo.data = contains; + +again_end: + + lxb_css_syntax_parser_consume(parser); + lxb_css_parser_token_status_m(parser, token); + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN__END: + break; + + case LXB_CSS_SYNTAX_TOKEN_WHITESPACE: + goto again_end; + + case LXB_CSS_SYNTAX_TOKEN_IDENT: + data = token->types.ident.data; + length = token->types.ident.length; + + if (length == 1 && (*data == 'i' || *data == 'I')) { + contains->insensitive = true; + + lxb_css_syntax_parser_consume(parser); + lxb_css_parser_token_status_m(parser, token); + + if (token->type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE) { + lxb_css_syntax_parser_consume(parser); + lxb_css_parser_token_status_m(parser, token); + } + + if (token->type != LXB_CSS_SYNTAX_TOKEN__END) { + goto failed; + } + + break; + } + /* Fall through. */ + + default: + goto failed; + } + + parser->selectors->list = NULL; + + return lxb_css_parser_success(parser); + +failed: + + lexbor_mraw_free(parser->memory->mraw, contains->str.data); + lexbor_mraw_free(parser->memory->mraw, contains); + + lxb_css_parser_unexpected_data(parser, token); + return lxb_css_parser_failed(parser); +} + static bool lxb_css_selectors_state_pseudo_anb(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, @@ -268,10 +378,14 @@ lxb_css_selectors_state_pseudo_of_begin(lxb_css_parser_t *parser, return lxb_css_parser_memory_fail(parser); } - rule = lxb_css_syntax_parser_components_push(parser, token, + rule = lxb_css_syntax_parser_components_push(parser, + &lxb_css_selectors_comp, lxb_css_selectors_state_pseudo_of_back, - &lxb_css_selectors_comp, list, - LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS); + list, LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS); +// rule = lxb_css_syntax_parser_components_push(parser, token, +// lxb_css_selectors_state_pseudo_of_back, +// &lxb_css_selectors_comp, list, +// LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS); if (rule == NULL) { lexbor_mraw_free(parser->memory->mraw, list->last->u.pseudo.data); diff --git a/ext/lexbor/lexbor/css/selectors/pseudo_state.h b/ext/lexbor/lexbor/css/selectors/pseudo_state.h index 5c5a31f94585..652e455f1f13 100644 --- a/ext/lexbor/lexbor/css/selectors/pseudo_state.h +++ b/ext/lexbor/lexbor/css/selectors/pseudo_state.h @@ -77,6 +77,10 @@ LXB_API bool lxb_css_selectors_state_pseudo_element_function__undef(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx); +LXB_API bool +lxb_css_selectors_state_pseudo_class_function_lexbor_contains(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/css/selectors/selector.c b/ext/lexbor/lexbor/css/selectors/selector.c index e8bf96ba88cf..160d19fa45a2 100644 --- a/ext/lexbor/lexbor/css/selectors/selector.c +++ b/ext/lexbor/lexbor/css/selectors/selector.c @@ -638,11 +638,45 @@ lxb_css_selector_serialize_class(lxb_css_selector_t *selector, return LXB_STATUS_OK; } +static lxb_status_t +lxb_css_selector_serialize_escape_write(lxb_char_t *p, lxb_char_t *end, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_char_t *begin; + lxb_status_t status; + + begin = p; + + lxb_css_selector_serialize_write("\"", 1); + + while (p < end) { + if (*p == '"') { + if (begin < p) { + lxb_css_selector_serialize_write(begin, p - begin); + } + + lxb_css_selector_serialize_write("\\000022", 7); + + begin = p + 1; + } + + p++; + } + + if (begin < p) { + lxb_css_selector_serialize_write(begin, p - begin); + } + + lxb_css_selector_serialize_write("\"", 1); + + return LXB_STATUS_OK; +} + static lxb_status_t lxb_css_selector_serialize_attribute(lxb_css_selector_t *selector, lexbor_serialize_cb_f cb, void *ctx) { - lxb_char_t *p, *begin, *end; + lxb_char_t *p, *end; lxb_status_t status; lxb_css_selector_attribute_t *attr; @@ -686,30 +720,11 @@ lxb_css_selector_serialize_attribute(lxb_css_selector_t *selector, p = attr->value.data; end = attr->value.data + attr->value.length; - begin = p; - - lxb_css_selector_serialize_write("\"", 1); - - while (p < end) { - if (*p == '"') { - if (begin < p) { - lxb_css_selector_serialize_write(begin, p - begin); - } - - lxb_css_selector_serialize_write("\\000022", 7); - - begin = p + 1; - } - - p++; - } - - if (begin < p) { - lxb_css_selector_serialize_write(begin, p - begin); + status = lxb_css_selector_serialize_escape_write(p, end, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; } - lxb_css_selector_serialize_write("\"", 1); - if (attr->modifier != LXB_CSS_SELECTOR_MODIFIER_UNSET) { switch (attr->modifier) { case LXB_CSS_SELECTOR_MODIFIER_I: @@ -740,7 +755,9 @@ lxb_css_selector_serialize_pseudo_class_function(lxb_css_selector_t *selector, lexbor_serialize_cb_f cb, void *ctx) { lxb_status_t status; + lxb_char_t *p, *end; lxb_css_selector_pseudo_t *pseudo; + lxb_css_selector_contains_t *contains; const lxb_css_selectors_pseudo_data_func_t *pfunc; pseudo = &selector->u.pseudo; @@ -789,6 +806,22 @@ lxb_css_selector_serialize_pseudo_class_function(lxb_css_selector_t *selector, cb, ctx); break; + case LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LEXBOR_CONTAINS: + contains = pseudo->data; + p = contains->str.data; + end = p + contains->str.length; + + status = lxb_css_selector_serialize_escape_write(p, end, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (contains->insensitive) { + lxb_css_selector_serialize_write(" i", 2); + } + + break; + default: status = LXB_STATUS_OK; break; diff --git a/ext/lexbor/lexbor/css/selectors/selector.h b/ext/lexbor/lexbor/css/selectors/selector.h index 52dbabc7ba5c..1862c868c8ce 100644 --- a/ext/lexbor/lexbor/css/selectors/selector.h +++ b/ext/lexbor/lexbor/css/selectors/selector.h @@ -80,6 +80,12 @@ typedef struct { } lxb_css_selector_anb_of_t; +typedef struct { + lexbor_str_t str; + bool insensitive; +} +lxb_css_selector_contains_t; + struct lxb_css_selector { lxb_css_selector_type_t type; lxb_css_selector_combinator_t combinator; diff --git a/ext/lexbor/lexbor/css/selectors/selectors.c b/ext/lexbor/lexbor/css/selectors/selectors.c index 52537873ef08..77586f4a65c6 100644 --- a/ext/lexbor/lexbor/css/selectors/selectors.c +++ b/ext/lexbor/lexbor/css/selectors/selectors.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -20,59 +20,51 @@ lxb_css_selectors_components_end(lxb_css_parser_t *parser, static const lxb_css_syntax_cb_components_t lxb_css_selectors_complex_list_cb = { - .state = lxb_css_selectors_state_complex_list, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_complex_list, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_compound_list_cb = { - .state = lxb_css_selectors_state_compound_list, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_compound_list, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_simple_list_cb = { - .state = lxb_css_selectors_state_simple_list, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_simple_list, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_relative_list_cb = { - .state = lxb_css_selectors_state_relative_list, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_relative_list, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_complex_cb = { - .state = lxb_css_selectors_state_complex, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_complex, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_compound_cb = { - .state = lxb_css_selectors_state_compound, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_compound, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_simple_cb = { - .state = lxb_css_selectors_state_simple, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_simple, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; static const lxb_css_syntax_cb_components_t lxb_css_selectors_relative_cb = { - .state = lxb_css_selectors_state_relative, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_selectors_components_end + .prelude = lxb_css_selectors_state_relative, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_selectors_components_end }; @@ -170,9 +162,7 @@ lxb_css_selectors_parse_relative_list(lxb_css_parser_t *parser, } static lxb_status_t -lxb_css_selectors_parse_prepare(lxb_css_parser_t *parser, - lxb_css_memory_t *memory, - lxb_css_selectors_t *selectors) +lxb_css_selectors_parse_prepare(lxb_css_parser_t *parser) { if (parser->stage != LXB_CSS_PARSER_CLEAN) { if (parser->stage == LXB_CSS_PARSER_RUN) { @@ -185,12 +175,6 @@ lxb_css_selectors_parse_prepare(lxb_css_parser_t *parser, parser->tkz->with_comment = false; parser->stage = LXB_CSS_PARSER_RUN; - parser->old_memory = parser->memory; - parser->old_selectors = parser->selectors; - - parser->memory = memory; - parser->selectors = selectors; - return LXB_STATUS_OK; } @@ -203,8 +187,7 @@ lxb_css_selectors_parse_process(lxb_css_parser_t *parser, lxb_css_parser_buffer_set(parser, data, length); - rule = lxb_css_syntax_parser_components_push(parser, NULL, NULL, - components, NULL, + rule = lxb_css_syntax_parser_components_push(parser, components, NULL, NULL, LXB_CSS_SYNTAX_TOKEN_UNDEF); if (rule == NULL) { return NULL; @@ -222,9 +205,6 @@ static void lxb_css_selectors_parse_finish(lxb_css_parser_t *parser) { parser->stage = LXB_CSS_PARSER_END; - - parser->memory = parser->old_memory; - parser->selectors = parser->old_selectors; } static lxb_css_selector_list_t * @@ -232,41 +212,45 @@ lxb_css_selectors_parse_list(lxb_css_parser_t *parser, const lxb_css_syntax_cb_components_t *components, const lxb_char_t *data, size_t length) { - lxb_css_memory_t *memory; - lxb_css_selectors_t *selectors; + bool my_mem, my_selectors; lxb_css_selector_list_t *list; - memory = parser->memory; - selectors = parser->selectors; + my_mem = false; + my_selectors = false; - if (selectors == NULL) { - selectors = lxb_css_selectors_create(); - parser->status = lxb_css_selectors_init(selectors); + if (parser->selectors == NULL) { + parser->selectors = lxb_css_selectors_create(); + parser->status = lxb_css_selectors_init(parser->selectors); if (parser->status != LXB_STATUS_OK) { - (void) lxb_css_selectors_destroy(selectors, true); + (void) lxb_css_selectors_destroy(parser->selectors, true); return NULL; } + + my_selectors = true; } else { - lxb_css_selectors_clean(selectors); + lxb_css_selectors_clean(parser->selectors); } - if (memory == NULL) { - memory = lxb_css_memory_create(); - parser->status = lxb_css_memory_init(memory, 256); + if (parser->memory == NULL) { + parser->memory = lxb_css_memory_create(); + parser->status = lxb_css_memory_init(parser->memory, 256); if (parser->status != LXB_STATUS_OK) { - if (selectors != parser->selectors) { - (void) lxb_css_selectors_destroy(selectors, true); + if (my_selectors) { + parser->selectors = lxb_css_selectors_destroy(parser->selectors, + true); } - (void) lxb_css_memory_destroy(memory, true); + (void) lxb_css_memory_destroy(parser->memory, true); return NULL; } + + my_mem = true; } - parser->status = lxb_css_selectors_parse_prepare(parser, memory, selectors); + parser->status = lxb_css_selectors_parse_prepare(parser); if (parser->status != LXB_STATUS_OK) { list = NULL; goto end; @@ -278,12 +262,12 @@ lxb_css_selectors_parse_list(lxb_css_parser_t *parser, end: - if (list == NULL && memory != parser->memory) { - (void) lxb_css_memory_destroy(memory, true); + if (list == NULL && my_mem) { + parser->memory = lxb_css_memory_destroy(parser->memory, true); } - if (selectors != parser->selectors) { - (void) lxb_css_selectors_destroy(selectors, true); + if (my_selectors) { + parser->selectors = lxb_css_selectors_destroy(parser->selectors, true); } return list; diff --git a/ext/lexbor/lexbor/css/selectors/state.c b/ext/lexbor/lexbor/css/selectors/state.c index 873e7d31cfda..1f0a391ac29a 100644 --- a/ext/lexbor/lexbor/css/selectors/state.c +++ b/ext/lexbor/lexbor/css/selectors/state.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2022 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -1557,8 +1557,8 @@ lxb_css_selectors_state_pseudo_class_function(lxb_css_parser_t *parser, selectors->comb_default = func->combinator; selectors->parent = selector; - rule = lxb_css_syntax_parser_function_push(parser, token, success, - &func->cb, selectors->list_last); + rule = lxb_css_syntax_consume_function(parser, token, &func->cb, + success, selectors->list_last); if (rule == NULL) { goto failed; } @@ -1663,8 +1663,8 @@ lxb_css_selectors_state_pseudo_element_function(lxb_css_parser_t *parser, selectors->comb_default = func->combinator; selectors->parent = selector; - rule = lxb_css_syntax_parser_function_push(parser, token, success, - &func->cb, selectors->list_last); + rule = lxb_css_syntax_consume_function(parser, token, &func->cb, + success, selectors->list_last); if (rule == NULL) { (void) lxb_css_parser_memory_fail(parser); return parser->status; @@ -1711,7 +1711,7 @@ lxb_css_selectors_state_function_end(lxb_css_parser_t *parser, lxb_css_selectors_t *selectors = parser->selectors; if (token->type == LXB_CSS_SYNTAX_TOKEN__EOF) { - (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_ERROR, + (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_SYNTAX_ERROR, "%s. End Of File in pseudo function", lxb_css_selectors_module_name); } @@ -1737,7 +1737,7 @@ lxb_css_selectors_state_function_end(lxb_css_parser_t *parser, return LXB_STATUS_OK; } - (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_ERROR, + (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_SYNTAX_ERROR, "%s. Pseudo function can't be empty: %S()", lxb_css_selectors_module_name, &selector->name); @@ -1783,7 +1783,7 @@ lxb_css_selectors_state_forgiving_cb(lxb_css_parser_t *parser, lxb_css_parser_set_ok(parser); if (token->type == LXB_CSS_SYNTAX_TOKEN__EOF) { - (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_ERROR, + (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_SYNTAX_ERROR, "%s. End Of File in pseudo function", lxb_css_selectors_module_name); } @@ -1814,7 +1814,7 @@ lxb_css_selectors_state_forgiving_cb(lxb_css_parser_t *parser, return LXB_STATUS_OK; } - (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_ERROR, + (void) lxb_css_log_format(parser->log, LXB_CSS_LOG_SYNTAX_ERROR, "%s. Pseudo function can't be empty: %S()", lxb_css_selectors_module_name, &selector->name); diff --git a/ext/lexbor/lexbor/css/state.c b/ext/lexbor/lexbor/css/state.c index 15a9614948f2..dda5310a9676 100644 --- a/ext/lexbor/lexbor/css/state.c +++ b/ext/lexbor/lexbor/css/state.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -9,6 +9,143 @@ #include "lexbor/css/at_rule/state.h" +static bool +lxb_css_state_list_rules_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + +static lxb_status_t +lxb_css_state_list_rules_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_at_rule_t * +lxb_css_state_at_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx, + void **out_rule); + +static bool +lxb_css_state_at_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); + +static lxb_status_t +lxb_css_state_at_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); +static bool +lxb_css_state_at_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +static lxb_status_t +lxb_css_state_at_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_state_qualified_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static bool +lxb_css_state_qualified_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); + +static lxb_status_t +lxb_css_state_qualified_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_block_t * +lxb_css_state_qualified_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static bool +lxb_css_state_qualified_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx); +static lxb_status_t +lxb_css_state_qualified_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); +static bool +lxb_css_state_block_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + +static lxb_status_t +lxb_css_state_block_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static const lxb_css_syntax_cb_declarations_t * +lxb_css_state_declarations_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static lxb_css_parser_state_f +lxb_css_state_declaration_name(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +static lxb_status_t +lxb_css_state_declaration_end(lxb_css_parser_t *parser, + void *declarations, void *ctx, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_declaration_offset_t *offset, + bool important, bool failed); + +static lxb_status_t +lxb_css_state_declarations_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed); + +static bool +lxb_css_state_declarations_bad(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + + +static const lxb_css_syntax_cb_list_rules_t lxb_css_state_list_rules = { + .at_rule = lxb_css_state_at_rule_begin, + .qualified_rule = lxb_css_state_qualified_rule_begin, + .next = lxb_css_state_list_rules_next, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_state_list_rules_end +}; + +static const lxb_css_syntax_cb_at_rule_t lxb_css_state_at_rule = { + .prelude = lxb_css_state_at_rule_prelude, + .prelude_end = lxb_css_state_at_rule_prelude_end, + .block = lxb_css_state_at_rule_block_begin, + .cb.failed = lxb_css_state_at_rule_prelude_failed, + .cb.end = lxb_css_state_at_rule_end +}; + +static const lxb_css_syntax_cb_qualified_rule_t lxb_css_state_qualified_rule = { + .prelude = lxb_css_state_qualified_rule_prelude, + .prelude_end = lxb_css_state_qualified_rule_prelude_end, + .block = lxb_css_state_qualified_rule_block_begin, + .cb.failed = lxb_css_state_qualified_rule_prelude_failed, + .cb.end = lxb_css_state_qualified_rule_end +}; + +static const lxb_css_syntax_cb_block_t lxb_css_state_block = { + .at_rule = lxb_css_state_at_rule_begin, + .declarations = lxb_css_state_declarations_begin, + .qualified_rule = lxb_css_state_qualified_rule_begin, + .next = lxb_css_state_block_next, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_state_block_end, +}; + +static const lxb_css_syntax_cb_declarations_t lxb_css_state_declaration = { + .name = lxb_css_state_declaration_name, + .end = lxb_css_state_declaration_end, + .cb.failed = lxb_css_state_declarations_bad, + .cb.end = lxb_css_state_declarations_end +}; + + bool lxb_css_state_success(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx) @@ -49,3 +186,491 @@ lxb_css_state_stop(lxb_css_parser_t *parser, { return lxb_css_parser_stop(parser); } + +bool +lxb_css_state_blank(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + return lxb_css_parser_success(parser); +} + +const lxb_css_syntax_cb_list_rules_t * +lxb_css_state_cb_list_rules(void) +{ + return &lxb_css_state_list_rules; +} + +const lxb_css_syntax_cb_at_rule_t * +lxb_css_state_cb_at_rule(void) +{ + return &lxb_css_state_at_rule; +} + +const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_state_cb_qualified_rule(void) +{ + return &lxb_css_state_qualified_rule; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_state_cb_block(void) +{ + return &lxb_css_state_block; +} + +const lxb_css_syntax_cb_declarations_t * +lxb_css_state_cb_declarations(void) +{ + return &lxb_css_state_declaration; +} + +static bool +lxb_css_state_list_rules_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + void *returned = lxb_css_syntax_returned(parser); + lxb_css_rule_list_t *list = ctx; + + if (returned != NULL) { + lxb_css_rule_list_append(list, returned); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_state_list_rules_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_list_t *list = ctx; + + lxb_css_syntax_set_return(parser, list); + + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_at_rule_t * +lxb_css_state_at_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx, + void **out_rule) +{ + lxb_css_rule_at_t *at; + const lxb_css_entry_at_rule_data_t *entry; + + at = lxb_css_at_rule_create(parser, lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length, + &entry); + if (at == NULL) { + return lxb_css_parser_memory_fail_null(parser); + } + + *out_rule = at; + + return entry->cbs; +} + +static bool +lxb_css_state_at_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_rule_at_t *at = ctx; + + at->prelude_begin = token->offset; + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_state_at_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_status_t status; + lxb_css_rule_at_t *at = ctx; + lxb_css_at_rule__custom_t *custom; + + at->prelude_end = token->offset; + + custom = at->u.custom; + + status = lxb_css_make_data(parser, &custom->prelude, at->prelude_begin, + at->prelude_end); + if (status != LXB_STATUS_OK) { + return lxb_css_parser_memory_fail_status(parser); + } + + return LXB_STATUS_OK; +} + +const lxb_css_syntax_cb_block_t * +lxb_css_state_at_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + lxb_css_rule_list_t *list; + + list = lxb_css_rule_list_create(parser->memory); + if (list == NULL) { + return lxb_css_parser_memory_fail_null(parser); + } + + *out_rule = list; + + return &lxb_css_state_block; +} + +static bool +lxb_css_state_at_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_state_at_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_at_t *at = ctx; + lxb_css_rule_list_t *block = lxb_css_syntax_returned(parser); + + at->u.custom->block = block; + + lxb_css_syntax_set_return(parser, at); + + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_state_qualified_rule_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + lxb_css_rule_style_t *style; + + style = lxb_css_rule_style_create(parser->memory); + if (style == NULL) { + return lxb_css_parser_memory_fail_null(parser); + } + + *out_rule = style; + + return &lxb_css_state_qualified_rule; +} + +static bool +lxb_css_state_qualified_rule_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + lxb_css_rule_style_t *style = ctx; + + lxb_css_selectors_clean(parser->selectors); + lxb_css_parser_state_set(parser, lxb_css_selectors_state_complex_list); + + style->prelude_begin = token->offset; + + return false; +} + +static lxb_status_t +lxb_css_state_qualified_rule_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + size_t begin; + lxb_status_t status; + lxb_css_rule_style_t *style = ctx; + lxb_css_rule_bad_style_t *bad; + + if (!failed) { + style->selector = parser->selectors->list; + style->prelude_end = token->offset; + + return LXB_STATUS_OK; + } + + begin = style->prelude_begin; + + (void) lxb_css_rule_style_destroy(style, true); + + bad = lxb_css_rule_bad_style_create(parser->memory); + if (bad == NULL) { + return lxb_css_parser_memory_fail_status(parser); + } + + bad->prelude_begin = begin; + bad->prelude_end = token->offset; + + status = lxb_css_make_data(parser, &bad->selectors, bad->prelude_begin, + bad->prelude_end); + if (status != LXB_STATUS_OK) { + return lxb_css_parser_memory_fail_status(parser); + } + + lxb_css_parser_set_context(parser, bad); + + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_block_t * +lxb_css_state_qualified_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + lxb_css_rule_list_t *list; + + list = lxb_css_rule_list_create(parser->memory); + if (list == NULL) { + return lxb_css_parser_memory_fail_null(parser); + } + + *out_rule = list; + + return &lxb_css_state_block; +} + +static bool +lxb_css_state_qualified_rule_prelude_failed(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx) +{ + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_state_qualified_rule_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_t *declrs; + lxb_css_rule_list_t *list; + lxb_css_rule_style_t *style; + lxb_css_rule_bad_style_t *bad; + + list = lxb_css_syntax_returned(parser); + + if (!failed) { + style = ctx; + + if (list != NULL && list->first != NULL + && list->first->type == LXB_CSS_RULE_DECLARATION_LIST) + { + declrs = list->first; + style->declarations = lxb_css_rule_declaration_list(declrs); + + declrs->parent = lxb_css_rule(style); + + if (list->first == list->last) { + list->last = NULL; + } + + if (declrs->next != NULL) { + declrs->next->prev = NULL; + } + + list->first = declrs->next; + declrs->next = NULL; + } + + style->child = list; + + lxb_css_syntax_set_return(parser, style); + } + else { + bad = ctx; + + if (list != NULL && list->first != NULL + && list->first->type == LXB_CSS_RULE_DECLARATION_LIST) + { + declrs = list->first; + bad->declarations = lxb_css_rule_declaration_list(declrs); + + declrs->parent = lxb_css_rule(bad); + + if (list->first == list->last) { + list->last = NULL; + } + + if (declrs->next != NULL) { + declrs->next->prev = NULL; + } + + list->first = declrs->next; + declrs->next = NULL; + } + + bad->child = list; + + lxb_css_syntax_set_return(parser, bad); + } + + return LXB_STATUS_OK; +} + +static bool +lxb_css_state_block_next(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + /* rule can be either a declaration list or an at rule. */ + + lxb_css_rule_t *rule = lxb_css_syntax_returned(parser); + lxb_css_rule_list_t *list = ctx; + + lxb_css_rule_list_append(list, rule); + + return lxb_css_parser_success(parser); +} + +static lxb_status_t +lxb_css_state_block_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_list_t *list = ctx; + + lxb_css_syntax_set_return(parser, list); + + return LXB_STATUS_OK; +} + +static const lxb_css_syntax_cb_declarations_t * +lxb_css_state_declarations_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + lxb_css_rule_declaration_list_t *list; + + list = lxb_css_rule_declaration_list_create(parser->memory); + if (list == NULL) { + return lxb_css_parser_memory_fail_null(parser); + } + + *out_rule = list; + + return &lxb_css_state_declaration; +} + +static lxb_css_parser_state_f +lxb_css_state_declaration_name(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule) +{ + const lxb_css_entry_data_t *entry; + lxb_css_rule_declaration_t *declar; + + declar = lxb_css_declaration_create(parser, + lxb_css_syntax_token_ident(token)->data, + lxb_css_syntax_token_ident(token)->length, + &entry); + if (declar == NULL) { + (void) lxb_css_parser_memory_fail_null(parser); + return NULL; + } + + /* We present an original position. */ + + declar->offset.name_begin = token->offset; + declar->offset.name_end = token->offset + + lxb_css_syntax_token_base(token)->length; + *out_rule = declar; + + return entry->state; +} + +static lxb_status_t +lxb_css_state_declaration_end(lxb_css_parser_t *parser, + void *declarations, void *ctx, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_declaration_offset_t *offset, + bool important, bool failed) +{ + lxb_status_t status; + lxb_css_property__undef_t *undef; + lxb_css_rule_declaration_t *declar = ctx; + lxb_css_rule_declaration_list_t *list = declarations; + + declar->offset.value_begin = offset->value_begin; + declar->offset.value_end = offset->value_end; + declar->offset.important_begin = offset->important_begin; + declar->offset.important_end = offset->important_end; + declar->important = important; + + if (failed) { + lxb_css_rule_declaration_destroy(declar, false); + + undef = lxb_css_property__undef_create(parser->memory); + if (undef == NULL) { + return lxb_css_parser_memory_fail_status(parser); + } + + undef->type = declar->type; + + status = lxb_css_make_data(parser, &undef->value, + declar->offset.value_begin, + declar->offset.value_end); + if (status != LXB_STATUS_OK) { + return lxb_css_parser_memory_fail_status(parser); + } + + declar->u.undef = undef; + declar->type = LXB_CSS_PROPERTY__UNDEF; + } + + lxb_css_rule_declaration_list_append(list, lxb_css_rule(declar)); + + return LXB_STATUS_OK; +} + +static lxb_status_t +lxb_css_state_declarations_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, bool failed) +{ + lxb_css_rule_declaration_list_t *list = ctx; + + lxb_css_syntax_set_return(parser, list); + + return LXB_STATUS_OK; +} + +static bool +lxb_css_state_declarations_bad(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx) +{ + lxb_css_rule_declaration_t *declar; + + if (ctx == NULL) { + declar = lxb_css_rule_declaration_create(parser->memory); + if (declar == NULL) { + return lxb_css_parser_memory_fail(parser); + } + + lxb_css_parser_current_rule(parser)->context = declar; + declar->type = LXB_CSS_PROPERTY__UNDEF; + } + + while (token != NULL && token->type != LXB_CSS_SYNTAX_TOKEN__END) { + lxb_css_syntax_parser_consume(parser); + token = lxb_css_syntax_parser_token(parser); + } + + return lxb_css_parser_success(parser); +} diff --git a/ext/lexbor/lexbor/css/state.h b/ext/lexbor/lexbor/css/state.h index 0a2abd803634..6ecd50343928 100644 --- a/ext/lexbor/lexbor/css/state.h +++ b/ext/lexbor/lexbor/css/state.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -12,6 +12,7 @@ extern "C" { #endif #include "lexbor/css/base.h" +#include "lexbor/css/syntax/syntax.h" LXB_API bool @@ -26,6 +27,30 @@ LXB_API bool lxb_css_state_stop(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx); +LXB_API bool +lxb_css_state_blank(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, void *ctx); + +LXB_API const lxb_css_syntax_cb_list_rules_t * +lxb_css_state_cb_list_rules(void); + +LXB_API const lxb_css_syntax_cb_at_rule_t * +lxb_css_state_cb_at_rule(void); + +LXB_API const lxb_css_syntax_cb_qualified_rule_t * +lxb_css_state_cb_qualified_rule(void); + +LXB_API const lxb_css_syntax_cb_block_t * +lxb_css_state_cb_block(void); + +LXB_API const lxb_css_syntax_cb_declarations_t * +lxb_css_state_cb_declarations(void); + +const lxb_css_syntax_cb_block_t * +lxb_css_state_at_rule_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/css/stylesheet.c b/ext/lexbor/lexbor/css/stylesheet.c new file mode 100644 index 000000000000..f03f145721c4 --- /dev/null +++ b/ext/lexbor/lexbor/css/stylesheet.c @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2021-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/css.h" +#include "lexbor/css/stylesheet.h" +#include "lexbor/css/parser.h" +#include "lexbor/css/at_rule.h" +#include "lexbor/css/property.h" +#include "lexbor/css/rule.h" +#include "lexbor/css/state.h" +#include "lexbor/css/selectors/selectors.h" +#include "lexbor/css/selectors/state.h" + + +lxb_css_stylesheet_t * +lxb_css_stylesheet_create(lxb_css_memory_t *memory) +{ + lxb_status_t status; + lxb_css_stylesheet_t *stylesheet; + + if (memory == NULL) { + memory = lxb_css_memory_create(); + status = lxb_css_memory_init(memory, 1024); + + if (status != LXB_STATUS_OK) { + (void) lxb_css_memory_destroy(memory, true); + return NULL; + } + } + else { + (void) lxb_css_memory_ref_inc(memory); + } + + stylesheet = lexbor_mraw_calloc(memory->mraw, sizeof(lxb_css_stylesheet_t)); + if (stylesheet == NULL) { + return NULL; + } + + stylesheet->memory = memory; + + return stylesheet; +} + +lxb_css_stylesheet_t * +lxb_css_stylesheet_destroy(lxb_css_stylesheet_t *sst, bool destroy_memory) +{ + if (sst == NULL) { + return NULL; + } + + if (destroy_memory) { + (void) lxb_css_memory_ref_dec_destroy(sst->memory); + return NULL; + } + + if (sst->root != NULL) { + (void) lxb_css_rule_destroy(sst->root, true); + } + + (void) lexbor_mraw_free(sst->memory->mraw, sst); + + return NULL; +} + +lxb_status_t +lxb_css_stylesheet_parse(lxb_css_stylesheet_t *sst, lxb_css_parser_t *parser, + const lxb_char_t *data, size_t length) +{ + lxb_status_t status; + lxb_css_rule_list_t *list; + lxb_css_selectors_t selectors; + + if (sst == NULL || parser == NULL) { + return LXB_STATUS_ERROR_WRONG_ARGS; + } + + if (parser->selectors == NULL) { + status = lxb_css_selectors_init(&selectors); + if (status != LXB_STATUS_OK) { + return status; + } + + parser->selectors = &selectors; + } + else { + lxb_css_selectors_clean(parser->selectors); + } + + parser->memory = sst->memory; + + list = lxb_css_syntax_parse_list_rules(parser, + lxb_css_state_cb_list_rules(), + data, length); + + if (parser->selectors == &selectors) { + parser->selectors = lxb_css_selectors_destroy(&selectors, false); + } + + if (list == NULL) { + sst->root = NULL; + return parser->status; + } + + sst->root = &list->rule; + + return LXB_STATUS_OK; +} diff --git a/ext/lexbor/lexbor/css/stylesheet.h b/ext/lexbor/lexbor/css/stylesheet.h index 5f3e37d82e45..9d52f9897cc5 100644 --- a/ext/lexbor/lexbor/css/stylesheet.h +++ b/ext/lexbor/lexbor/css/stylesheet.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2023 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -25,26 +25,62 @@ struct lxb_css_stylesheet { void *element; /* lxb_html_style_element_t * */ }; +/* + * Create a new CSS stylesheet object. + * + * This function creates a stylesheet object which holds the parsed CSS rules. + * + * @param[in] memory Optional. A memory pool to use for allocations. + * If NULL, a new internal memory pool is created/managed + * by the stylesheet. + * + * @return A new lxb_css_stylesheet_t * or NULL on failure. + */ LXB_API lxb_css_stylesheet_t * lxb_css_stylesheet_create(lxb_css_memory_t *memory); +/* + * Destroy a CSS stylesheet object. + * + * @param[in] sst Optional. The stylesheet object to destroy. + * If NULL, the function returns NULL. + * @param[in] destroy_memory If true, the memory pool attached to + * the stylesheet is also destroyed. + * + * @return Always NULL. + */ LXB_API lxb_css_stylesheet_t * lxb_css_stylesheet_destroy(lxb_css_stylesheet_t *sst, bool destroy_memory); -LXB_API lxb_css_stylesheet_t * -lxb_css_stylesheet_parse(lxb_css_parser_t *parser, - const lxb_char_t *data, size_t length); - +/* + * Parse CSS content into the stylesheet. + * + * This function takes CSS text and builds the rule tree in the stylesheet. + * + * The function returns an error only in extremely unforeseen circumstances, + * such as the inability to allocate memory for objects. Any broken CSS will + * not cause an error. + * + * Selectors note: + * If the provided parser does not have an initialized selectors module, one + * will be created temporarily for this call. For better performance when + * parsing multiple stylesheets, initialize the selectors module in + * the parser once: + * + * lxb_css_parser_t *parser = lxb_css_parser_create(); + * lxb_css_parser_init(parser, NULL); + * lxb_css_parser_selectors_init(parser); + * + * @param[in] sst Required. The target stylesheet. + * @param[in] parser Required. An initialized CSS parser. + * @param[in] data Optional. The CSS text data. + * @param[in] length Required. Length of the data in bytes. + * + * @return LXB_STATUS_OK on success, or an error code on failure. + */ LXB_API lxb_status_t -lxb_css_stylesheet_prepare(lxb_css_parser_t *parser, lxb_css_memory_t *memory, - lxb_css_selectors_t *selectors); - -LXB_API lxb_css_stylesheet_t * -lxb_css_stylesheet_process(lxb_css_parser_t *parser, - const lxb_char_t *data, size_t length); - -LXB_API void -lxb_css_stylesheet_finish(lxb_css_parser_t *parser); +lxb_css_stylesheet_parse(lxb_css_stylesheet_t *sst, lxb_css_parser_t *parser, + const lxb_char_t *data, size_t length); #ifdef __cplusplus diff --git a/ext/lexbor/lexbor/css/syntax/anb.c b/ext/lexbor/lexbor/css/syntax/anb.c index ffd1751cdabf..d3f7c7bfe0a6 100644 --- a/ext/lexbor/lexbor/css/syntax/anb.c +++ b/ext/lexbor/lexbor/css/syntax/anb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -38,10 +38,9 @@ lxb_css_syntax_anb_state_ident_data(lxb_css_parser_t *parser, static const lxb_css_syntax_cb_pipe_t lxb_css_syntax_anb_pipe = { - .state = lxb_css_syntax_anb_state, - .block = NULL, - .failed = lxb_css_state_failed, - .end = lxb_css_syntax_anb_end + .prelude = lxb_css_syntax_anb_state, + .cb.failed = lxb_css_state_failed, + .cb.end = lxb_css_syntax_anb_end }; @@ -66,8 +65,8 @@ lxb_css_syntax_anb_parse(lxb_css_parser_t *parser, lxb_css_parser_buffer_set(parser, data, length); - rule = lxb_css_syntax_parser_pipe_push(parser, NULL, - &lxb_css_syntax_anb_pipe, &anb, + rule = lxb_css_syntax_parser_pipe_push(parser, &lxb_css_syntax_anb_pipe, + NULL, &anb, LXB_CSS_SYNTAX_TOKEN_UNDEF); if (rule == NULL) { return anb; diff --git a/ext/lexbor/lexbor/css/syntax/base.h b/ext/lexbor/lexbor/css/syntax/base.h index 3dc981ba3da2..627fce4c7fa5 100644 --- a/ext/lexbor/lexbor/css/syntax/base.h +++ b/ext/lexbor/lexbor/css/syntax/base.h @@ -17,7 +17,7 @@ extern "C" { #define LXB_CSS_SYNTAX_VERSION_MAJOR 1 -#define LXB_CSS_SYNTAX_VERSION_MINOR 3 +#define LXB_CSS_SYNTAX_VERSION_MINOR 4 #define LXB_CSS_SYNTAX_VERSION_PATCH 0 #define LXB_CSS_SYNTAX_VERSION_STRING \ diff --git a/ext/lexbor/lexbor/css/syntax/parser.c b/ext/lexbor/lexbor/css/syntax/parser.c index 5a3c7abf24f8..7e7e973f75d6 100644 --- a/ext/lexbor/lexbor/css/syntax/parser.c +++ b/ext/lexbor/lexbor/css/syntax/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2025 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -11,14 +11,11 @@ #include "lexbor/css/at_rule/state.h" -static const lxb_css_syntax_token_t lxb_css_syntax_token_terminated = -{ - .types.terminated = {.begin = NULL, .length = 0, .user_id = 0}, - .type = LXB_CSS_SYNTAX_TOKEN__END, - .offset = 0, - .cloned = false -}; +static const lexbor_str_t lxb_css_err_rc = lexbor_str("Unexpected token in " + "qualified rule: RC_BRACKET"); +static lxb_css_syntax_rule_t * +lxb_css_syntax_parser_stack_pop(lxb_css_parser_t *parser); static const lxb_css_syntax_token_t * lxb_css_syntax_parser_list_rules(lxb_css_parser_t *parser, @@ -35,28 +32,105 @@ lxb_css_syntax_parser_list_rules_qualified(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); -static bool +static const lxb_css_syntax_token_t * lxb_css_syntax_parser_list_rules_back(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx); + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + lxb_css_parser_state_f back_state, + lxb_css_syntax_begin_at_rule_f cb, + bool nested); static const lxb_css_syntax_token_t * lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_prelude_end_consule_token(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_back_to_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + static const lxb_css_syntax_token_t * lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule); +lxb_css_syntax_parser_qualified_rule_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_qualified_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_qualified_back_to_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + lxb_css_parser_state_f back_state, + lxb_css_syntax_begin_block_f cb); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_at(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_declarations(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_qualified(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_validate(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); -static bool -lxb_css_syntax_parser_declarations_back(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx); +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); static const lxb_css_syntax_token_t * lxb_css_syntax_parser_declarations_name(lxb_css_parser_t *parser, @@ -69,40 +143,77 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, lxb_css_syntax_rule_t *rule); static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations_next(lxb_css_parser_t *parser, +lxb_css_syntax_parser_declarations_drop(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations_drop(lxb_css_parser_t *parser, +lxb_css_syntax_parser_declarations_next(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declaration_back_to_value(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declaration_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declaration_end_handler(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + bool skip_token); + static const lxb_css_syntax_token_t * lxb_css_syntax_parser_declarations_end(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_end_h(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + bool skip_token); + static const lxb_css_syntax_token_t * lxb_css_syntax_parser_components(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_components_back_to_value(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + static const lxb_css_syntax_token_t * lxb_css_syntax_parser_function(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_block(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule); +lxb_css_syntax_parser_function_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); static const lxb_css_syntax_token_t * lxb_css_syntax_parser_pipe(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_pipe_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_end_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + lxb_inline const lxb_css_syntax_token_t * lxb_css_syntax_parser_failed(lxb_css_parser_t *parser, lxb_status_t status) @@ -111,6 +222,31 @@ lxb_css_syntax_parser_failed(lxb_css_parser_t *parser, lxb_status_t status) return NULL; } +lxb_inline const lxb_css_syntax_token_t * +lxb_css_syntax_token_parser_do_phase_again(lxb_css_parser_t *parser) +{ + parser->fake_null = true; + return NULL; +} + +lxb_inline const lxb_css_syntax_token_t * +lxb_css_syntax_parser_call_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token) +{ + lxb_css_syntax_rule_t *rules; + + (void) lxb_css_syntax_parser_stack_pop(parser); + + rules = parser->rules; + + if (parser->rules <= parser->rules_begin) { + rules->state = lxb_css_state_stop; + return token; + } + + return rules->back(parser, token, rules); +} + lxb_status_t lxb_css_syntax_parser_run(lxb_css_parser_t *parser) @@ -177,369 +313,259 @@ lxb_css_syntax_parser_consume(lxb_css_parser_t *parser) lxb_css_syntax_rule_t * lxb_css_syntax_parser_list_rules_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_list_rules_t *cb_rules, - void *ctx, bool top_level, - lxb_css_syntax_token_type_t stop) + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } } - - parser->rules->state = lxb_css_state_success; + + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_list_rules; - rule->state = cb_rules->cb.state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_list_rules; - rule->cbx.list_rules = cb_rules; - rule->context = ctx; - rule->block_end = stop; - rule->top_level = top_level; - - if (token != NULL) { - rule->u.list_rules.begin = token->offset; - } - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_list_rules, + .state = lxb_css_state_blank, + .back = lxb_css_syntax_parser_list_rules_back, + .cbx.list_rules = cb_rules, + .context = ctx, + .block_end = stop + }; return rule; } lxb_css_syntax_rule_t * lxb_css_syntax_parser_at_rule_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_at_rule_t *at_rule, - void *ctx, lxb_css_syntax_token_type_t stop) + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop, + bool nested) { - lxb_status_t status; - lxb_css_syntax_at_rule_offset_t *at; lxb_css_syntax_rule_t *rule; - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } } - parser->rules->state = lxb_css_state_success; + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_at_rule; - rule->state = at_rule->state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_at_rule; - rule->cbx.at_rule = at_rule; - rule->context = ctx; - rule->block_end = stop; - - if (token != NULL) { - at = &rule->u.at_rule; - - at->name = token->offset; - at->prelude = token->offset + lxb_css_syntax_token_base(token)->length; - } - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_at_rule, + .state = at_rule->prelude, + .back = lxb_css_syntax_parser_at_back_to_prelude, + .cbx.at_rule = at_rule, + .context = ctx, + .block_end = stop, + .nested = nested + }; return rule; } lxb_css_syntax_rule_t * lxb_css_syntax_parser_qualified_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_qualified_rule_t *qualified, - void *ctx, lxb_css_syntax_token_type_t stop) + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop, + bool nested) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } } - parser->rules->state = lxb_css_state_success; + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_qualified_rule; - rule->state = qualified->state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_qualified_rule; - rule->cbx.qualified_rule = qualified; - rule->context = ctx; - rule->block_end = stop; - - if (token != NULL) { - rule->u.qualified.prelude = token->offset; - } - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_qualified_rule, + .state = qualified->prelude, + .back = lxb_css_syntax_parser_qualified_back_to_prelude, + .cbx.qualified_rule = qualified, + .context = ctx, + .block_end = stop, + .nested = nested + }; return rule; } lxb_css_syntax_rule_t * -lxb_css_syntax_parser_declarations_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, - const lxb_css_syntax_cb_declarations_t *declarations, - void *ctx, lxb_css_syntax_token_type_t stop) +lxb_css_syntax_parser_block_push(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_block_t *block, + lxb_css_parser_state_f back, void *ctx) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } } - parser->rules->state = lxb_css_state_success; + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_declarations; - rule->state = declarations->cb.state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_declarations; - rule->cbx.declarations = declarations; - rule->context = ctx; - rule->block_end = stop; - - if (token != NULL) { - rule->u.declarations.begin = token->offset; - } - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_block, + .state = lxb_css_state_blank, + .back = lxb_css_syntax_parser_block_back, + .cbx.block = block, + .context = ctx + }; return rule; } lxb_css_syntax_rule_t * -lxb_css_syntax_parser_components_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, - const lxb_css_syntax_cb_components_t *comp, - void *ctx, lxb_css_syntax_token_type_t stop) +lxb_css_syntax_parser_declarations_push(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_declarations_t *declr, + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop, + bool name_validate, bool nested) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; + lxb_css_syntax_state_f phase; - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } } - parser->rules->state = lxb_css_state_success; + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_components; - rule->state = comp->state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_components; - rule->cbx.components = comp; - rule->context = ctx; - rule->block_end = stop; + phase = (!name_validate) ? lxb_css_syntax_parser_declarations_begin + : lxb_css_syntax_parser_declarations_validate; - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = phase, + .state = lxb_css_state_blank, + .back = lxb_css_syntax_parser_declaration_back_to_value, + .cbx.declarations = declr, + .context = ctx, + .block_end = stop, + .nested = nested + }; return rule; } lxb_css_syntax_rule_t * -lxb_css_syntax_parser_function_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, - const lxb_css_syntax_cb_function_t *func, - void *ctx) +lxb_css_syntax_parser_components_push(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_components_t *comp, + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; - if (token == NULL || token->type != LXB_CSS_SYNTAX_TOKEN_FUNCTION) { - parser->status = LXB_STATUS_ERROR_WRONG_ARGS; - return NULL; - } - - if (parser->rules > parser->rules_begin) { - rule = parser->rules; - - if (rule->deep != 0 - && parser->types_pos[-1] == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) - { - rule->deep--; - parser->types_pos--; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; } } - parser->rules->state = lxb_css_state_success; - - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; - } + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_function; - rule->state = func->state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_function; - rule->cbx.func = func; - rule->context = ctx; - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_components, + .state = comp->prelude, + .back = lxb_css_syntax_parser_components_back_to_value, + .cbx.components = comp, + .context = ctx, + .block_end = stop + }; return rule; } lxb_css_syntax_rule_t * -lxb_css_syntax_parser_block_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, - const lxb_css_syntax_cb_block_t *block, - void *ctx) +lxb_css_syntax_parser_function_push(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_function_t *func, + lxb_css_parser_state_f back, void *ctx) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; - lxb_css_syntax_token_type_t block_end; - - if (token == NULL) { - parser->status = LXB_STATUS_ERROR_WRONG_ARGS; - return NULL; - } - - switch (token->type) { - case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: - block_end = LXB_CSS_SYNTAX_TOKEN_RS_BRACKET; - break; - - case LXB_CSS_SYNTAX_TOKEN_FUNCTION: - case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: - block_end = LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS; - break; - - case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: - block_end = LXB_CSS_SYNTAX_TOKEN_RC_BRACKET; - break; - default: - parser->status = LXB_STATUS_ERROR_WRONG_ARGS; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { return NULL; - } - - if (parser->rules > parser->rules_begin) { - rule = parser->rules; - - if (rule->deep != 0 && parser->types_pos[-1] == block_end) { - rule->deep--; - parser->types_pos--; } } - parser->rules->state = lxb_css_state_success; - - lxb_css_parser_offset_set(parser, token); - - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; - } + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_block; - rule->state = block->state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_block; - rule->cbx.block = block; - rule->context = ctx; - rule->block_end = block_end; - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_function, + .state = func->value, + .back = lxb_css_syntax_parser_function_back, + .cbx.func = func, + .context = ctx + }; return rule; } lxb_css_syntax_rule_t * lxb_css_syntax_parser_pipe_push(lxb_css_parser_t *parser, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_pipe_t *pipe, - void *ctx, lxb_css_syntax_token_type_t stop) + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop) { - lxb_status_t status; lxb_css_syntax_rule_t *rule; - status = lxb_css_syntax_stack_expand(parser, 1); - if (status != LXB_STATUS_OK) { - parser->status = status; - return NULL; + if ((parser->rules + 1) >= parser->rules_end) { + parser->status = lxb_css_syntax_stack_expand(parser, 1); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } } - parser->rules->state = lxb_css_state_success; + parser->rules->back_state = back; rule = ++parser->rules; - memset(rule, 0x00, sizeof(lxb_css_syntax_rule_t)); - - rule->phase = lxb_css_syntax_parser_pipe; - rule->state = pipe->state; - rule->state_back = state_back; - rule->back = lxb_css_syntax_parser_pipe; - rule->cbx.pipe = pipe; - rule->context = ctx; - rule->block_end = stop; - - parser->context = NULL; + *rule = (lxb_css_syntax_rule_t) { + .phase = lxb_css_syntax_parser_pipe, + .state = pipe->prelude, + .back = lxb_css_syntax_parser_pipe_back, + .cbx.pipe = pipe, + .context = ctx, + .block_end = stop + }; return rule; } -lxb_css_syntax_rule_t * +static lxb_css_syntax_rule_t * lxb_css_syntax_parser_stack_pop(lxb_css_parser_t *parser) { return parser->rules--; @@ -554,12 +580,16 @@ lxb_css_syntax_parser_list_rules(lxb_css_parser_t *parser, return token; } + rule->skip_consume = true; + begin: rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; switch (token->type) { case LXB_CSS_SYNTAX_TOKEN_WHITESPACE: + case LXB_CSS_SYNTAX_TOKEN_CDC: + case LXB_CSS_SYNTAX_TOKEN_CDO: lxb_css_syntax_token_consume(parser->tkz); token = lxb_css_syntax_token(parser->tkz); @@ -577,22 +607,6 @@ lxb_css_syntax_parser_list_rules(lxb_css_parser_t *parser, case LXB_CSS_SYNTAX_TOKEN__EOF: goto done; - case LXB_CSS_SYNTAX_TOKEN_CDC: - case LXB_CSS_SYNTAX_TOKEN_CDO: - if (rule->top_level) { - lxb_css_syntax_token_consume(parser->tkz); - - token = lxb_css_syntax_token(parser->tkz); - if (token == NULL) { - return lxb_css_syntax_parser_failed(parser, - parser->tkz->status); - } - - goto begin; - } - - /* fall through */ - default: if (rule->block_end == token->type && rule->deep == 0) { goto done; @@ -607,79 +621,136 @@ lxb_css_syntax_parser_list_rules(lxb_css_parser_t *parser, done: rule->phase = lxb_css_syntax_parser_end; - rule->skip_consume = true; - rule->u.list_rules.end = token->offset; - - return &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, 0); } +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ static const lxb_css_syntax_token_t * lxb_css_syntax_parser_list_rules_at(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule) { - if (rule->state != lxb_css_state_success) { - return token; - } + const lxb_css_syntax_cb_list_rules_t *list_rules = rule->cbx.list_rules; - rule = lxb_css_syntax_parser_at_rule_push(parser, token, - lxb_css_syntax_parser_list_rules_back, - rule->cbx.list_rules->at_rule, - rule->context, rule->block_end); - if (rule == NULL) { - return NULL; - } - - parser->fake_null = true; - - return NULL; + return lxb_css_syntax_parser_at_begin(parser, token, rule, list_rules->next, + list_rules->at_rule, false); } +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ static const lxb_css_syntax_token_t * lxb_css_syntax_parser_list_rules_qualified(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule) { - if (rule->state != lxb_css_state_success) { - return token; - } + void *qualified_ctx; + lxb_css_syntax_rule_t *qualified; + lxb_css_syntax_begin_qualified_rule_f cb; + const lxb_css_syntax_cb_list_rules_t *list_rules; + const lxb_css_syntax_cb_qualified_rule_t *cb_qualified; - rule = lxb_css_syntax_parser_qualified_push(parser, token, - lxb_css_syntax_parser_list_rules_back, - rule->cbx.list_rules->qualified_rule, - rule->context, rule->block_end); - if (rule == NULL) { - return NULL; + qualified_ctx = NULL; + list_rules = rule->cbx.list_rules; + cb = list_rules->qualified_rule; + + rule->skip_consume = false; + + cb_qualified = cb(parser, token, rule->context, &qualified_ctx); + if (cb_qualified == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_UNEXPECTED_DATA); } - parser->fake_null = true; + qualified = lxb_css_syntax_parser_qualified_push(parser, cb_qualified, + list_rules->next, + qualified_ctx, + rule->block_end, + false); + if (qualified == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); + } - return NULL; + return lxb_css_syntax_token_parser_do_phase_again(parser); } -static bool +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * lxb_css_syntax_parser_list_rules_back(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx) + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) { - lxb_css_syntax_rule_t *rule; + rule->phase = lxb_css_syntax_parser_list_rules; + rule->state = rule->back_state; + rule->skip_consume = true; - if (token->type == LXB_CSS_SYNTAX_TOKEN__END) { - return lxb_css_parser_success(parser); + return token; +} + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + lxb_css_parser_state_f back_state, + lxb_css_syntax_begin_at_rule_f cb, + bool nested) +{ + void *at_rule_ctx; + lxb_css_syntax_rule_t *at_rule; + const lxb_css_syntax_cb_at_rule_t *cb_at_rule; + + at_rule_ctx = NULL; + rule->skip_consume = false; + + cb_at_rule = cb(parser, token, rule->context, &at_rule_ctx); + if (cb_at_rule == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_UNEXPECTED_DATA); } - rule = parser->rules; - rule->state = rule->cbx.list_rules->next; + at_rule = lxb_css_syntax_parser_at_rule_push(parser, cb_at_rule, + back_state, at_rule_ctx, + rule->block_end, nested); + if (at_rule == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); + } + + lxb_css_syntax_token_consume(parser->tkz); + + token = lxb_css_syntax_token(parser->tkz); + if (token == NULL) { + return lxb_css_syntax_parser_failed(parser, parser->tkz->status); + } - return false; + if (token->type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE) { + lxb_css_syntax_token_consume(parser->tkz); + } + + return lxb_css_syntax_token_parser_do_phase_again(parser); } +/* + * First call for this code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + * Rule -- lxb_css_syntax_rule_t with at_rule callbacks. + */ static const lxb_css_syntax_token_t * lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule) { lxb_status_t status; + const lxb_css_log_message_t *msg; if (rule->offset > token->offset) { return token; @@ -688,7 +759,7 @@ lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; if (rule->block_end == token->type && rule->deep == 0) { - rule->skip_ending = true; + rule->phase = lxb_css_syntax_parser_at_prelude_end; goto done; } @@ -706,25 +777,11 @@ lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: if (rule->deep == 0) { - rule->phase = lxb_css_syntax_parser_start_block; - - rule->u.at_rule.prelude_end = token->offset; - rule->u.at_rule.block = token->offset - + lxb_css_syntax_token_base(token)->length; - + rule->phase = lxb_css_syntax_parser_at_block; + rule->back = lxb_css_syntax_parser_end_back; rule->skip_consume = true; - parser->block = rule->cbx.cb->block; - - lxb_css_syntax_token_consume(parser->tkz); - - token = lxb_css_syntax_token(parser->tkz); - if (token == NULL) { - return lxb_css_syntax_parser_failed(parser, - parser->tkz->status); - } - - token = &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); } status = lxb_css_parser_types_push(parser, @@ -732,13 +789,25 @@ lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, break; case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: - if (rule->deep != 0 && parser->types_pos[-1] == token->type) { - if (rule->deep == 1) { - goto done; + if (rule->deep != 0) { + if (parser->types_pos[-1] == token->type) { + parser->types_pos--; + rule->deep--; + } + } + else { + msg = lxb_css_log_format(parser->log, + LXB_CSS_LOG_SYNTAX_ERROR, + "%S", &lxb_css_err_rc); + if (msg == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); } - parser->types_pos--; - rule->deep--; + if (rule->nested) { + rule->phase = lxb_css_syntax_parser_at_prelude_end; + goto done; + } } return token; @@ -754,12 +823,14 @@ lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, case LXB_CSS_SYNTAX_TOKEN_SEMICOLON: if (rule->deep == 0) { + rule->phase = lxb_css_syntax_parser_at_prelude_end_consule_token; goto done; } return token; case LXB_CSS_SYNTAX_TOKEN__EOF: + rule->phase = lxb_css_syntax_parser_at_prelude_end; goto done; default: @@ -776,17 +847,91 @@ lxb_css_syntax_parser_at_rule(lxb_css_parser_t *parser, done: - rule->phase = lxb_css_syntax_parser_end; rule->skip_consume = true; - if (rule->u.at_rule.prelude_end != 0) { - rule->u.at_rule.block_end = token->offset; + return lxb_css_parser_token_end(parser, token->offset); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + lxb_status_t status; + const lxb_css_syntax_cb_at_rule_t *at_rule = rule->cbx.at_rule; + + status = at_rule->prelude_end(parser, token, rule->context, rule->failed); + if (status != LXB_STATUS_OK) { + return lxb_css_syntax_parser_failed(parser, status); } - else { - rule->u.at_rule.prelude_end = token->offset; + + return lxb_css_syntax_parser_block_begin(parser, token, rule, + at_rule->prelude, at_rule->block); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + lxb_status_t status; + const lxb_css_syntax_cb_at_rule_t *at_rule = rule->cbx.at_rule; + + rule->phase = lxb_css_syntax_parser_end; + rule->state = lxb_css_state_success; + + status = at_rule->prelude_end(parser, token, rule->context, rule->failed); + if (status != LXB_STATUS_OK) { + return lxb_css_syntax_parser_failed(parser, status); } - return &lxb_css_syntax_token_terminated; + return lxb_css_syntax_token_parser_do_phase_again(parser); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_prelude_end_consule_token(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + lxb_status_t status; + const lxb_css_syntax_cb_at_rule_t *at_rule = rule->cbx.at_rule; + + rule->phase = lxb_css_syntax_parser_end_consume_token; + + status = at_rule->prelude_end(parser, token, rule->context, rule->failed); + if (status != LXB_STATUS_OK) { + return lxb_css_syntax_parser_failed(parser, status); + } + + return lxb_css_syntax_token_parser_do_phase_again(parser); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_at_back_to_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + rule->phase = lxb_css_syntax_parser_at_rule; + rule->state = rule->back_state; + rule->skip_consume = false; + + return token; } static const lxb_css_syntax_token_t * @@ -795,8 +940,7 @@ lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, lxb_css_syntax_rule_t *rule) { lxb_status_t status; - - /* It is necessary to avoid re-entry of the token into the phase. */ + const lxb_css_log_message_t *msg; if (rule->offset > token->offset) { return token; @@ -805,7 +949,6 @@ lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; if (rule->block_end == token->type && rule->deep == 0) { - rule->skip_ending = true; goto done; } @@ -823,25 +966,11 @@ lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: if (rule->deep == 0) { - rule->phase = lxb_css_syntax_parser_start_block; - - rule->u.qualified.prelude_end = token->offset; - rule->u.qualified.block = token->offset - + lxb_css_syntax_token_base(token)->length; - + rule->phase = lxb_css_syntax_parser_qualified_rule_block; + rule->back = lxb_css_syntax_parser_end_back; rule->skip_consume = true; - parser->block = rule->cbx.cb->block; - - lxb_css_syntax_token_consume(parser->tkz); - - token = lxb_css_syntax_token(parser->tkz); - if (token == NULL) { - return lxb_css_syntax_parser_failed(parser, - parser->tkz->status); - } - - token = &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); } status = lxb_css_parser_types_push(parser, @@ -849,13 +978,24 @@ lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, break; case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: - if (rule->deep != 0 && parser->types_pos[-1] == token->type) { - if (rule->deep == 1) { - goto done; + if (rule->deep != 0) { + if (parser->types_pos[-1] == token->type) { + parser->types_pos--; + rule->deep--; + } + } + else { + msg = lxb_css_log_format(parser->log, + LXB_CSS_LOG_SYNTAX_ERROR, + "%S", &lxb_css_err_rc); + if (msg == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); } - parser->types_pos--; - rule->deep--; + if (rule->nested) { + goto done; + } } return token; @@ -868,7 +1008,7 @@ lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, } return token; - + case LXB_CSS_SYNTAX_TOKEN__EOF: goto done; @@ -886,23 +1026,113 @@ lxb_css_syntax_parser_qualified_rule(lxb_css_parser_t *parser, done: - rule->phase = lxb_css_syntax_parser_end; + rule->phase = lxb_css_syntax_parser_qualified_prelude_end; rule->skip_consume = true; - if (rule->u.qualified.block != 0) { - rule->u.qualified.block_end = token->offset; + return lxb_css_parser_token_end(parser, token->offset); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_qualified_rule_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + const lxb_css_syntax_cb_qualified_rule_t *qualified_rule; + + qualified_rule = rule->cbx.qualified_rule; + + parser->status = qualified_rule->prelude_end(parser, token, + rule->context, rule->failed); + if (parser->status != LXB_STATUS_OK) { + return NULL; } - else { - rule->u.qualified.prelude_end = token->offset; + + return lxb_css_syntax_parser_block_begin(parser, token, rule, + qualified_rule->prelude, + qualified_rule->block); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_qualified_prelude_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + const lxb_css_syntax_cb_qualified_rule_t *qualified_rule; + + qualified_rule = rule->cbx.qualified_rule; + + parser->status = qualified_rule->prelude_end(parser, token, + rule->context, rule->failed); + if (parser->status != LXB_STATUS_OK) { + return NULL; + } + + rule->phase = lxb_css_syntax_parser_end; + rule->state = lxb_css_state_success; + + return lxb_css_syntax_token_parser_do_phase_again(parser); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_qualified_back_to_prelude(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + rule->phase = lxb_css_syntax_parser_qualified_rule; + rule->state = rule->back_state; + rule->skip_consume = false; + + return token; +} + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + lxb_css_parser_state_f back_state, + lxb_css_syntax_begin_block_f cb) +{ + void *block_ctx; + lxb_css_syntax_rule_t *block; + const lxb_css_syntax_cb_block_t *cb_block; + + block_ctx = NULL; + rule->skip_consume = false; + + cb_block = cb(parser, token, rule->context, &block_ctx); + if (cb_block == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_UNEXPECTED_DATA); + } + + block = lxb_css_syntax_parser_block_push(parser, cb_block, back_state, + block_ctx); + if (block == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); } - return &lxb_css_syntax_token_terminated; + lxb_css_syntax_token_consume(parser->tkz); + + return lxb_css_syntax_token_parser_do_phase_again(parser); } static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule) +lxb_css_syntax_parser_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) { if (rule->offset > token->offset) { return token; @@ -912,11 +1142,6 @@ lxb_css_syntax_parser_declarations(lxb_css_parser_t *parser, rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; - if (rule->block_end == token->type && rule->deep == 0) { - rule->skip_ending = true; - goto done; - } - switch (token->type) { case LXB_CSS_SYNTAX_TOKEN_SEMICOLON: case LXB_CSS_SYNTAX_TOKEN_WHITESPACE: @@ -930,93 +1155,221 @@ lxb_css_syntax_parser_declarations(lxb_css_parser_t *parser, goto begin; - case LXB_CSS_SYNTAX_TOKEN_IDENT: - rule->u.declarations.name_begin = token->offset; - - if (lxb_css_syntax_tokenizer_lookup_colon(parser->tkz)) { - rule->phase = lxb_css_syntax_parser_declarations_name; - parser->block = rule->cbx.cb->block; + case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: + if (rule->deep == 0) { + rule->phase = lxb_css_syntax_parser_end_consume_token; + break; + } - return token; + if (parser->types_pos[-1] == token->type) { + parser->types_pos--; + rule->deep--; } - rule->state = rule->cbx.cb->failed; - rule->phase = lxb_css_syntax_parser_declarations_drop; - rule->failed = true; + return token; + case LXB_CSS_SYNTAX_TOKEN__EOF: + rule->phase = lxb_css_syntax_parser_end; break; case LXB_CSS_SYNTAX_TOKEN_AT_KEYWORD: - rule->u.declarations.name_begin = 0; - - rule = lxb_css_syntax_parser_at_rule_push(parser, token, - lxb_css_syntax_parser_declarations_back, - rule->cbx.declarations->at_rule, rule->context, - rule->block_end); - if (rule != NULL) { - parser->fake_null = true; - } + rule->phase = lxb_css_syntax_parser_block_at; + break; - return NULL; + case LXB_CSS_SYNTAX_TOKEN_IDENT: + if (lxb_css_syntax_tokenizer_lookup_colon(parser->tkz)) { + rule->phase = lxb_css_syntax_parser_block_declarations; + break; + } - case LXB_CSS_SYNTAX_TOKEN__EOF: - goto done; + /* Fall Through. */ default: - rule->state = rule->cbx.cb->failed; - rule->phase = lxb_css_syntax_parser_declarations_drop; - rule->failed = true; - - rule->u.declarations.name_begin = token->offset; + rule->phase = lxb_css_syntax_parser_block_qualified; break; } - parser->fake_null = true; + rule->skip_consume = true; - return NULL; + return lxb_css_parser_token_end(parser, 0); +} -done: +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_at(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + const lxb_css_syntax_cb_block_t *block = rule->cbx.block; - rule->phase = lxb_css_syntax_parser_end; - rule->state = lxb_css_state_success; - rule->skip_consume = true; + return lxb_css_syntax_parser_at_begin(parser, token, rule, + block->next, block->at_rule, true); +} - rule->u.declarations.name_begin = 0; - rule->u.declarations.end = token->offset; +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_declarations(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + void *declr_ctx; + lxb_css_syntax_rule_t *declr_rule; + lxb_css_syntax_begin_declarations_f cb; + const lxb_css_syntax_cb_block_t *block; + const lxb_css_syntax_cb_declarations_t *cb_declr; - parser->fake_null = true; + declr_ctx = NULL; + block = rule->cbx.block; + cb = block->declarations; - return NULL; + rule->skip_consume = false; + + cb_declr = cb(parser, token, rule->context, &declr_ctx); + if (cb_declr == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_UNEXPECTED_DATA); + } + + declr_rule = lxb_css_syntax_parser_declarations_push(parser, cb_declr, + block->next, declr_ctx, + LXB_CSS_SYNTAX_TOKEN_RC_BRACKET, + false, true); + if (declr_rule == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); + } + + return lxb_css_syntax_token_parser_do_phase_again(parser); } -static bool -lxb_css_syntax_parser_declarations_back(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, void *ctx) +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_block_qualified(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) { - lxb_css_syntax_rule_t *rules = parser->rules; + void *qualified_ctx; + lxb_css_syntax_rule_t *qualified; + const lxb_css_syntax_cb_block_t *block; + lxb_css_syntax_begin_qualified_rule_f cb; + const lxb_css_syntax_cb_qualified_rule_t *cb_qualified; - rules->state = rules->cbx.declarations->cb.state; + qualified_ctx = NULL; + block = rule->cbx.block; + cb = block->qualified_rule; + + rule->skip_consume = false; - return rules->state(parser, token, ctx); + cb_qualified = cb(parser, token, rule->context, &qualified_ctx); + if (cb_qualified == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_UNEXPECTED_DATA); + } + + qualified = lxb_css_syntax_parser_qualified_push(parser, cb_qualified, + block->next, qualified_ctx, + LXB_CSS_SYNTAX_TOKEN_SEMICOLON, + true); + if (qualified == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_MEMORY_ALLOCATION); + } + + return lxb_css_syntax_token_parser_do_phase_again(parser); } +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations_name(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule) +lxb_css_syntax_parser_block_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) { - if (rule->offset > token->offset) { - return token; + rule->phase = lxb_css_syntax_parser_block; + rule->state = rule->back_state; + rule->skip_consume = true; + + return token; +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_validate(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + if (token->type != LXB_CSS_SYNTAX_TOKEN_IDENT + || !lxb_css_syntax_tokenizer_lookup_colon(parser->tkz)) + { + rule->phase = lxb_css_syntax_parser_declarations_drop; + rule->state = rule->cbx.cb->failed; + rule->begin = token->offset; + rule->context_old = rule->context; + rule->context = NULL; + rule->failed = true; + + parser->offset.value_end = 0; + + return lxb_css_syntax_token_parser_do_phase_again(parser); } - if (rule->state != lxb_css_state_success) { - rule->skip_consume = true; + return lxb_css_syntax_parser_declarations_begin(parser, token, rule); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_begin(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + void *declr_ctx; + lxb_css_syntax_declaration_name_f cb; - return &lxb_css_syntax_token_terminated; + declr_ctx = NULL; + cb = rule->cbx.declarations->name; + + rule->state = cb(parser, token, rule->context, &declr_ctx); + if (rule->state == NULL) { + return lxb_css_syntax_parser_failed(parser, + LXB_STATUS_ERROR_UNEXPECTED_DATA); } + rule->phase = lxb_css_syntax_parser_declarations_name; + rule->context_old = rule->context; + rule->context = declr_ctx; rule->skip_consume = false; + lxb_css_syntax_token_consume(parser->tkz); + + return lxb_css_syntax_token_parser_do_phase_again(parser); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_name(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ /* 1. */ if (token->type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE) { @@ -1049,8 +1402,6 @@ lxb_css_syntax_parser_declarations_name(lxb_css_parser_t *parser, return NULL; } - rule->u.declarations.name_end = token->offset; - lxb_css_syntax_token_consume(parser->tkz); token = lxb_css_syntax_token(parser->tkz); @@ -1069,12 +1420,12 @@ lxb_css_syntax_parser_declarations_name(lxb_css_parser_t *parser, } } - rule->u.declarations.value_begin = token->offset; + rule->begin = token->offset; + parser->offset.value_end = 0; /* 4. */ rule->phase = lxb_css_syntax_parser_declarations_value; - rule->state = parser->block; return lxb_css_syntax_parser_declarations_value(parser, token, rule); } @@ -1085,7 +1436,7 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, lxb_css_syntax_rule_t *rule) { bool imp; - uintptr_t before_important; + size_t offset; lxb_status_t status; if (rule->offset > token->offset) { @@ -1097,7 +1448,6 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; if (rule->block_end == token->type && rule->deep == 0) { - rule->skip_ending = true; goto done; } @@ -1115,7 +1465,7 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, return token; } - before_important = token->offset; + parser->offset.value_end = token->offset; lxb_css_syntax_token_consume(parser->tkz); @@ -1128,7 +1478,7 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, if (token->type == LXB_CSS_SYNTAX_TOKEN_DELIM) { rule->important = true; - rule->u.declarations.before_important = before_important; + parser->offset.important_begin = token->offset; lxb_css_syntax_token_consume(parser->tkz); @@ -1138,6 +1488,10 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, if (token == NULL) { return lxb_css_syntax_parser_failed(parser, parser->tkz->status); } + + parser->offset.important_end = token->offset + + lxb_css_syntax_token_base(token)->length; + lxb_css_syntax_token_consume(parser->tkz); token = lxb_css_syntax_token(parser->tkz); @@ -1155,6 +1509,10 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, } } } + else { + parser->offset.important_begin = 0; + parser->offset.important_end = 0; + } goto again; @@ -1162,17 +1520,20 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, if (rule->deep == 0) { rule->phase = lxb_css_syntax_parser_declarations_next; - rule->u.declarations.value_end = token->offset; + offset = token->offset; - lxb_css_syntax_token_consume(parser->tkz); + parser->offset.value_begin = rule->begin; + parser->offset.end = offset; - token = lxb_css_syntax_token(parser->tkz); - if (token == NULL) { - return lxb_css_syntax_parser_failed(parser, - parser->tkz->status); + if (parser->offset.value_end == 0) { + parser->offset.value_end = offset; + parser->offset.important_begin = 0; + parser->offset.important_end = 0; } - return &lxb_css_syntax_token_terminated; + lxb_css_syntax_token_consume(parser->tkz); + + return lxb_css_parser_token_end(parser, offset); } return token; @@ -1190,9 +1551,11 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, return token; } - rule->u.declarations.before_important = token->offset; rule->important = true; + parser->offset.value_end = token->offset; + parser->offset.important_begin = token->offset; + lxb_css_syntax_token_consume(parser->tkz); token = lxb_css_syntax_token(parser->tkz); @@ -1200,6 +1563,9 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, return lxb_css_syntax_parser_failed(parser, parser->tkz->status); } + parser->offset.important_end = token->offset + + lxb_css_syntax_token_base(token)->length; + lxb_css_syntax_token_consume(parser->tkz); token = lxb_css_syntax_token(parser->tkz); @@ -1262,177 +1628,304 @@ lxb_css_syntax_parser_declarations_value(lxb_css_parser_t *parser, done: - rule->phase = lxb_css_syntax_parser_declarations_end; - rule->skip_consume = true; + parser->offset.value_begin = rule->begin; + parser->offset.end = token->offset; + + if (parser->offset.value_end == 0) { + parser->offset.value_end = token->offset; + parser->offset.important_begin = 0; + parser->offset.important_end = 0; + } - rule->u.declarations.value_end = token->offset; - rule->u.declarations.end = token->offset; + rule->phase = lxb_css_syntax_parser_declaration_end; + rule->skip_consume = true; - return &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); } static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations_next(lxb_css_parser_t *parser, +lxb_css_syntax_parser_declarations_drop(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule) { + size_t offset; lxb_status_t status; - lxb_css_syntax_declarations_offset_t *decl; - if (rule->state != lxb_css_state_success) { - rule->skip_consume = true; + if (rule->offset > token->offset) { + return token; + } - return &lxb_css_syntax_token_terminated; + rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; + + if (rule->block_end == token->type && rule->deep == 0) { + goto done; + } + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_SEMICOLON: + if (rule->deep == 0) { + rule->phase = lxb_css_syntax_parser_declarations_next; + + offset = token->offset; + + parser->offset.value_begin = rule->begin; + parser->offset.end = offset; + + if (parser->offset.value_end == 0) { + parser->offset.value_end = offset; + parser->offset.important_begin = 0; + parser->offset.important_end = 0; + } + + lxb_css_syntax_token_consume(parser->tkz); + + return lxb_css_parser_token_end(parser, offset); + } + + return token; + + case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: + status = lxb_css_parser_types_push(parser, + LXB_CSS_SYNTAX_TOKEN_RS_BRACKET); + break; + + case LXB_CSS_SYNTAX_TOKEN_FUNCTION: + case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: + status = lxb_css_parser_types_push(parser, + LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS); + break; + + case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: + status = lxb_css_parser_types_push(parser, + LXB_CSS_SYNTAX_TOKEN_RC_BRACKET); + break; + + case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: + if (rule->deep == 0) { + if (rule->nested) { + goto done; + } + } + else if (parser->types_pos[-1] == token->type) { + parser->types_pos--; + rule->deep--; + } + + return token; + + case LXB_CSS_SYNTAX_TOKEN_RS_BRACKET: + case LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS: + if (rule->deep != 0 && parser->types_pos[-1] == token->type) { + parser->types_pos--; + rule->deep--; + } + + return token; + + case LXB_CSS_SYNTAX_TOKEN__EOF: + goto done; + + default: + return token; } - status = rule->cbx.declarations->declaration_end(parser, rule->context, - rule->important, - rule->failed); if (status != LXB_STATUS_OK) { return lxb_css_syntax_parser_failed(parser, status); } - rule->phase = lxb_css_syntax_parser_declarations; - rule->state = rule->cbx.cb->state; + rule->deep++; - rule->skip_consume = false; - rule->important = false; - rule->failed = false; + return token; + +done: + + parser->offset.value_begin = rule->begin; + parser->offset.end = token->offset; - decl = &rule->u.declarations; + if (parser->offset.value_end == 0) { + parser->offset.value_end = token->offset; + parser->offset.important_begin = 0; + parser->offset.important_end = 0; + } - decl->name_begin = 0; - decl->name_end = 0; - decl->value_begin = 0; - decl->before_important = 0; - decl->value_end = 0; + rule->phase = lxb_css_syntax_parser_declaration_end; + rule->skip_consume = true; - return lxb_css_syntax_parser_declarations(parser, token, rule); + return lxb_css_parser_token_end(parser, token->offset); } +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations_drop(lxb_css_parser_t *parser, +lxb_css_syntax_parser_declarations_next(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule) { + void *out_rule; lxb_status_t status; + lxb_css_syntax_declaration_name_f name; - /* It is necessary to avoid re-entry of the token into the phase. */ + if (rule->state != lxb_css_state_success) { + rule->skip_consume = true; - if (rule->offset > token->offset) { - return token; + return lxb_css_parser_token_end(parser, token->offset); } - rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; - - if (rule->block_end == token->type && rule->deep == 0) { - rule->skip_ending = true; - goto done; + status = rule->cbx.declarations->end(parser, rule->context_old, + rule->context, token, &parser->offset, + rule->important, rule->failed); + if (status != LXB_STATUS_OK) { + return lxb_css_syntax_parser_failed(parser, status); } - switch (token->type) { - case LXB_CSS_SYNTAX_TOKEN_SEMICOLON: - if (rule->deep == 0) { - rule->phase = lxb_css_syntax_parser_declarations_next; +begin: + + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_SEMICOLON: + case LXB_CSS_SYNTAX_TOKEN_WHITESPACE: + lxb_css_syntax_token_consume(parser->tkz); + + token = lxb_css_syntax_token(parser->tkz); + if (token == NULL) { + return lxb_css_syntax_parser_failed(parser, + parser->tkz->status); + } + + goto begin; - rule->u.declarations.name_end = token->offset; + case LXB_CSS_SYNTAX_TOKEN__EOF: + rule->phase = lxb_css_syntax_parser_declarations_end; + break; - lxb_css_syntax_token_consume(parser->tkz); + case LXB_CSS_SYNTAX_TOKEN_IDENT: + if (lxb_css_syntax_tokenizer_lookup_colon(parser->tkz)) { + out_rule = NULL; + name = rule->cbx.declarations->name; + rule->skip_consume = true; - token = lxb_css_syntax_token(parser->tkz); - if (token == NULL) { + rule->state = name(parser, token, rule->context, &out_rule); + if (rule->state == NULL) { return lxb_css_syntax_parser_failed(parser, - parser->tkz->status); + LXB_STATUS_ERROR_UNEXPECTED_DATA); } - rule->skip_consume = true; - - return &lxb_css_syntax_token_terminated; - } + rule->context = out_rule; - return token; + lxb_css_syntax_token_consume(parser->tkz); - case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: - status = lxb_css_parser_types_push(parser, - LXB_CSS_SYNTAX_TOKEN_RS_BRACKET); - break; + rule->phase = lxb_css_syntax_parser_declarations_name; + rule->context = out_rule; - case LXB_CSS_SYNTAX_TOKEN_FUNCTION: - case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: - status = lxb_css_parser_types_push(parser, - LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS); - break; + break; + } - case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: - status = lxb_css_parser_types_push(parser, - LXB_CSS_SYNTAX_TOKEN_RC_BRACKET); - break; + /* Fall through. */ - case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: - case LXB_CSS_SYNTAX_TOKEN_RS_BRACKET: - case LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS: - if (rule->deep != 0 && parser->types_pos[-1] == token->type) { - parser->types_pos--; - rule->deep--; + default: + if (rule->nested) { + rule->phase = lxb_css_syntax_parser_declarations_end; } + else { + rule->phase = lxb_css_syntax_parser_declarations_drop; + rule->state = rule->cbx.cb->failed; + rule->begin = token->offset; + rule->context = NULL; + rule->failed = true; - return token; - - case LXB_CSS_SYNTAX_TOKEN__EOF: - goto done; + parser->offset.value_end = 0; - default: - return token; - } + return lxb_css_syntax_token_parser_do_phase_again(parser); + } - if (status != LXB_STATUS_OK) { - return lxb_css_syntax_parser_failed(parser, status); + break; } - rule->deep++; - - return token; + rule->skip_consume = false; + rule->important = false; + rule->failed = false; -done: + return lxb_css_syntax_token_parser_do_phase_again(parser); +} - rule->phase = lxb_css_syntax_parser_declarations_end; - rule->skip_consume = true; +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declaration_back_to_value(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + rule->phase = lxb_css_syntax_parser_declarations_value; + rule->state = rule->back_state; + rule->skip_consume = false; - rule->u.declarations.name_end = token->offset; - rule->u.declarations.end = token->offset; + return token; +} - return &lxb_css_syntax_token_terminated; +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declaration_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + return lxb_css_syntax_parser_declaration_end_handler(parser, token, + rule, false); } static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_declarations_end(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule) +lxb_css_syntax_parser_declaration_end_handler(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + bool skip_token) { lxb_status_t status; - lxb_css_syntax_rule_t *rules; if (rule->state != lxb_css_state_success) { rule->skip_consume = true; - return &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); } - status = rule->cbx.declarations->declaration_end(parser, rule->context, - rule->important, - rule->failed); + status = rule->cbx.declarations->end(parser, rule->context_old, + rule->context, token, &parser->offset, + rule->important, rule->failed); if (status != LXB_STATUS_OK) { return lxb_css_syntax_parser_failed(parser, status); } + return lxb_css_syntax_parser_declarations_end_h(parser, token, + rule, skip_token); +} + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_end(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + return lxb_css_syntax_parser_declarations_end_h(parser, token, + rule, false); +} + +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_declarations_end_h(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule, + bool skip_token) +{ + lxb_status_t status; + /* This code will be called exclusively from the lxb_css_parser_run(...). */ + rule->context = rule->context_old; + status = rule->cbx.cb->end(parser, token, rule->context, false); if (status != LXB_STATUS_OK) { return lxb_css_syntax_parser_failed(parser, status); } - if (!rule->skip_ending) { + if (skip_token) { lxb_css_syntax_token_consume(parser->tkz); token = lxb_css_syntax_token(parser->tkz); @@ -1442,18 +1935,7 @@ lxb_css_syntax_parser_declarations_end(lxb_css_parser_t *parser, } } - (void) lxb_css_syntax_parser_stack_pop(parser); - - rules = parser->rules; - - if (parser->rules <= parser->rules_begin) { - rules->state = lxb_css_state_stop; - return token; - } - - rules->phase = rules->back; - - return rules->phase(parser, token, rules); + return lxb_css_syntax_parser_call_back(parser, token); } static const lxb_css_syntax_token_t * @@ -1470,7 +1952,6 @@ lxb_css_syntax_parser_components(lxb_css_parser_t *parser, rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; if (rule->block_end == token->type && rule->deep == 0) { - rule->skip_ending = true; goto done; } @@ -1521,7 +2002,23 @@ lxb_css_syntax_parser_components(lxb_css_parser_t *parser, rule->phase = lxb_css_syntax_parser_end; rule->skip_consume = true; - return &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_components_back_to_value(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + rule->phase = lxb_css_syntax_parser_components; + rule->state = rule->back_state; + rule->skip_consume = false; + + return token; } static const lxb_css_syntax_token_t * @@ -1555,16 +2052,16 @@ lxb_css_syntax_parser_function(lxb_css_parser_t *parser, break; case LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS: - if (rule->deep != 0) { - if (parser->types_pos[-1] == token->type) { - parser->types_pos--; - rule->deep--; - } - } - else { + if (rule->deep == 0) { + rule->phase = lxb_css_syntax_parser_end_consume_token; goto done; } + if (parser->types_pos[-1] == token->type) { + parser->types_pos--; + rule->deep--; + } + return token; case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: @@ -1577,6 +2074,7 @@ lxb_css_syntax_parser_function(lxb_css_parser_t *parser, return token; case LXB_CSS_SYNTAX_TOKEN__EOF: + rule->phase = lxb_css_syntax_parser_end; goto done; default: @@ -1593,77 +2091,25 @@ lxb_css_syntax_parser_function(lxb_css_parser_t *parser, done: - rule->phase = lxb_css_syntax_parser_end; rule->skip_consume = true; - return &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); } +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ static const lxb_css_syntax_token_t * -lxb_css_syntax_parser_block(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule) +lxb_css_syntax_parser_function_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) { - lxb_status_t status; - - if (rule->offset > token->offset) { - return token; - } - - rule->offset = token->offset + lxb_css_syntax_token_base(token)->length; - - if (rule->block_end == token->type && rule->deep == 0) { - goto done; - } - - switch (token->type) { - case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: - status = lxb_css_parser_types_push(parser, - LXB_CSS_SYNTAX_TOKEN_RS_BRACKET); - break; - - case LXB_CSS_SYNTAX_TOKEN_FUNCTION: - case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: - status = lxb_css_parser_types_push(parser, - LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS); - break; - - case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: - status = lxb_css_parser_types_push(parser, - LXB_CSS_SYNTAX_TOKEN_RC_BRACKET); - break; - - case LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS: - case LXB_CSS_SYNTAX_TOKEN_RS_BRACKET: - case LXB_CSS_SYNTAX_TOKEN_RC_BRACKET: - if (rule->deep != 0 && parser->types_pos[-1] == token->type) { - parser->types_pos--; - rule->deep--; - } - - return token; - - case LXB_CSS_SYNTAX_TOKEN__EOF: - goto done; - - default: - return token; - } - - if (status != LXB_STATUS_OK) { - return lxb_css_syntax_parser_failed(parser, status); - } - - rule->deep++; + rule->phase = lxb_css_syntax_parser_function; + rule->state = rule->back_state; + rule->skip_consume = false; return token; - -done: - - rule->phase = lxb_css_syntax_parser_end; - rule->skip_consume = true; - - return &lxb_css_syntax_token_terminated; } static const lxb_css_syntax_token_t * @@ -1677,31 +2123,41 @@ lxb_css_syntax_parser_pipe(lxb_css_parser_t *parser, rule->phase = lxb_css_syntax_parser_end; rule->skip_consume = true; - return &lxb_css_syntax_token_terminated; + return lxb_css_parser_token_end(parser, token->offset); } return token; } -const lxb_css_syntax_token_t * -lxb_css_syntax_parser_start_block(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule) +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_pipe_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) { - if (rule->state != lxb_css_state_success) { - rule->skip_consume = true; - - return &lxb_css_syntax_token_terminated; - } - - /* This code will be called exclusively from the lxb_css_parser_run(...). */ - + rule->phase = lxb_css_syntax_parser_pipe; + rule->state = rule->back_state; rule->skip_consume = false; - rule->phase = rule->back; - rule->state = parser->block; + return token; +} + +/* + * This code will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ +static const lxb_css_syntax_token_t * +lxb_css_syntax_parser_end_back(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + rule->phase = lxb_css_syntax_parser_end; + rule->state = lxb_css_state_blank; - return rule->back(parser, token, rule); + return token; } const lxb_css_syntax_token_t * @@ -1710,13 +2166,12 @@ lxb_css_syntax_parser_end(lxb_css_parser_t *parser, lxb_css_syntax_rule_t *rule) { lxb_status_t status; - lxb_css_syntax_rule_t *rules; lxb_css_syntax_cb_base_t *base; - if (rule->state != lxb_css_state_success) { - rule->skip_consume = true; + rule->skip_consume = true; - return &lxb_css_syntax_token_terminated; + if (rule->state != lxb_css_state_success) { + return lxb_css_parser_token_end(parser, token->offset); } /* This code will be called exclusively from the lxb_css_parser_run(...). */ @@ -1728,27 +2183,43 @@ lxb_css_syntax_parser_end(lxb_css_parser_t *parser, return lxb_css_syntax_parser_failed(parser, status); } - if (!rule->skip_ending) { - lxb_css_syntax_token_consume(parser->tkz); + rule->skip_consume = false; - token = lxb_css_syntax_token(parser->tkz); - if (token == NULL) { - return lxb_css_syntax_parser_failed(parser, - parser->tkz->status); - } + return lxb_css_syntax_parser_call_back(parser, token); +} + +const lxb_css_syntax_token_t * +lxb_css_syntax_parser_end_consume_token(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule) +{ + lxb_status_t status; + lxb_css_syntax_cb_base_t *base; + + rule->skip_consume = true; + + if (rule->state != lxb_css_state_success) { + return lxb_css_parser_token_end(parser, token->offset); } - (void) lxb_css_syntax_parser_stack_pop(parser); + /* This code will be called exclusively from the lxb_css_parser_run(...). */ - rules = parser->rules; + base = rule->cbx.user; - if (parser->rules <= parser->rules_begin) { - rules->state = lxb_css_state_stop; - return token; + status = base->end(parser, token, rule->context, rule->failed); + if (status != LXB_STATUS_OK) { + return lxb_css_syntax_parser_failed(parser, status); } - rules->phase = rules->back; - rules->state = rule->state_back; + rule->skip_consume = false; + + lxb_css_syntax_token_consume(parser->tkz); + + token = lxb_css_syntax_token(parser->tkz); + if (token == NULL) { + return lxb_css_syntax_parser_failed(parser, + parser->tkz->status); + } - return rules->phase(parser, token, rules); + return lxb_css_syntax_parser_call_back(parser, token); } diff --git a/ext/lexbor/lexbor/css/syntax/parser.h b/ext/lexbor/lexbor/css/syntax/parser.h index f41d62f1ff87..2e7aff644509 100644 --- a/ext/lexbor/lexbor/css/syntax/parser.h +++ b/ext/lexbor/lexbor/css/syntax/parser.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2025 Alexander Borisov + * Copyright (C) 2020-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -30,70 +30,63 @@ lxb_css_syntax_parser_consume(lxb_css_parser_t *parser); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_list_rules_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_list_rules_t *list_rules, - void *ctx, bool top_level, - lxb_css_syntax_token_type_t stop); + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_at_rule_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_at_rule_t *at_rule, - void *ctx, lxb_css_syntax_token_type_t stop); + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop, + bool nested); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_qualified_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_qualified_rule_t *qualified, - void *ctx, lxb_css_syntax_token_type_t stop); + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop, + bool nested); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_parser_block_push(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_block_t *block, + lxb_css_parser_state_f back, void *ctx); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_declarations_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, - const lxb_css_syntax_cb_declarations_t *declarations, - void *ctx, lxb_css_syntax_token_type_t stop); + const lxb_css_syntax_cb_declarations_t *declr, + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop, + bool name_validate, bool nested); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_components_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_components_t *comp, + lxb_css_parser_state_f back, void *ctx, lxb_css_syntax_token_type_t stop); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_function_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_function_t *func, - void *ctx); - -LXB_API lxb_css_syntax_rule_t * -lxb_css_syntax_parser_block_push(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_parser_state_f state_back, - const lxb_css_syntax_cb_block_t *block, - void *ctx); + lxb_css_parser_state_f back, void *ctx); LXB_API lxb_css_syntax_rule_t * lxb_css_syntax_parser_pipe_push(lxb_css_parser_t *parser, - lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_pipe_t *pipe, - void *ctx, lxb_css_syntax_token_type_t stop); - -LXB_API const lxb_css_syntax_token_t * -lxb_css_syntax_parser_start_block(lxb_css_parser_t *parser, - const lxb_css_syntax_token_t *token, - lxb_css_syntax_rule_t *rule); + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop); LXB_API const lxb_css_syntax_token_t * lxb_css_syntax_parser_end(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); +LXB_API const lxb_css_syntax_token_t * +lxb_css_syntax_parser_end_consume_token(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_rule_t *rule); + #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/css/syntax/res.h b/ext/lexbor/lexbor/css/syntax/res.h index cd33446f81d5..7fa2f8ba705f 100644 --- a/ext/lexbor/lexbor/css/syntax/res.h +++ b/ext/lexbor/lexbor/css/syntax/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,12 +7,9 @@ #ifndef LEXBOR_CSS_SYNTAX_RES_H #define LEXBOR_CSS_SYNTAX_RES_H -#ifdef LXB_CSS_SYNTAX_RES_NAME_MAP -#ifndef LXB_CSS_SYNTAX_RES_NAME_MAP_ENABLED -#define LXB_CSS_SYNTAX_RES_NAME_MAP_ENABLED #define LXB_CSS_SYNTAX_RES_NAME_START 0x01 -static const lxb_char_t lxb_css_syntax_res_name_map[256] = +LXB_API const lxb_char_t lxb_css_syntax_res_name_map[256] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -42,7 +39,4 @@ static const lxb_char_t lxb_css_syntax_res_name_map[256] = 0x01, 0x01, 0x01, 0x01, 0x01 }; -#endif /* LXB_CSS_SYNTAX_RES_NAME_MAP_ENABLED */ -#endif /* LXB_CSS_SYNTAX_RES_NAME_MAP */ - #endif /* LEXBOR_CSS_SYNTAX_RES_H */ diff --git a/ext/lexbor/lexbor/css/syntax/state.c b/ext/lexbor/lexbor/css/syntax/state.c index 99cd30c1868f..a93731e11235 100644 --- a/ext/lexbor/lexbor/css/syntax/state.c +++ b/ext/lexbor/lexbor/css/syntax/state.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -14,12 +14,11 @@ #include "lexbor/css/syntax/syntax.h" #include "lexbor/css/syntax/tokenizer/error.h" -#define LXB_CSS_SYNTAX_RES_NAME_MAP #include "lexbor/css/syntax/res.h" -#define LEXBOR_STR_RES_MAP_HEX -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; +#endif #define LXB_CSS_SYNTAX_ERROR_CODEPOINT 0x1FFFFF @@ -1101,7 +1100,9 @@ lxb_css_syntax_state_consume_numeric(lxb_css_syntax_tokenizer_t *tkz, /* U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9) */ do { - e_digit = (*data - 0x30) + e_digit * 0x0A; + if (e_digit < INT_MAX / 10) { + e_digit = (*data - 0x30) + e_digit * 0x0A; + } data += 1; @@ -1523,7 +1524,7 @@ lxb_css_syntax_state_url(lxb_css_syntax_tokenizer_t *tkz, lxb_css_syntax_tokenizer_error_add(tkz->parse_errors, data, LXB_CSS_SYNTAX_TOKENIZER_ERROR_EOINUR); - return lxb_css_syntax_state_string_set(tkz, token, data); + goto done; default: if (*data >= 0x80) { diff --git a/ext/lexbor/lexbor/css/syntax/state_res.h b/ext/lexbor/lexbor/css/syntax/state_res.h index 2f6e2899fdc0..e98909a5bff4 100644 --- a/ext/lexbor/lexbor/css/syntax/state_res.h +++ b/ext/lexbor/lexbor/css/syntax/state_res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/css/syntax/syntax.c b/ext/lexbor/lexbor/css/syntax/syntax.c index b148d8a043c1..f8a1e944df23 100644 --- a/ext/lexbor/lexbor/css/syntax/syntax.c +++ b/ext/lexbor/lexbor/css/syntax/syntax.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -9,58 +9,315 @@ #include "lexbor/core/str.h" -#define LEXBOR_STR_RES_MAP_HEX -#define LEXBOR_STR_RES_MAP_HEX_TO_CHAR_LOWERCASE -#define LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE_LOWERCASE -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#include "lexbor/core/str_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex_to_char_lowercase[17]; + LXB_EXTERN const char *lexbor_str_res_char_to_two_hex_value_lowercase[257]; + LXB_EXTERN const lxb_char_t lxb_css_syntax_res_name_map[256]; +#endif -#define LXB_CSS_SYNTAX_RES_NAME_MAP -#include "lexbor/css/syntax/res.h" +static const lexbor_str_t lxb_css_syntax_str_ws = lexbor_str(" "); -static const lexbor_str_t lxb_str_ws = lexbor_str(" "); - - -lxb_status_t +lxb_css_rule_list_t * lxb_css_syntax_parse_list_rules(lxb_css_parser_t *parser, const lxb_css_syntax_cb_list_rules_t *cb, - const lxb_char_t *data, size_t length, - void *ctx, bool top_level) + const lxb_char_t *data, size_t length) { - lxb_status_t status; + lxb_css_rule_list_t *list; lxb_css_syntax_rule_t *rule; if (lxb_css_parser_is_running(parser)) { parser->status = LXB_STATUS_ERROR_WRONG_STAGE; - return parser->status; + return NULL; } lxb_css_parser_clean(parser); - lxb_css_parser_buffer_set(parser, data, length); - rule = lxb_css_syntax_parser_list_rules_push(parser, NULL, NULL, cb, - ctx, top_level, + list = lxb_css_rule_list_create(parser->memory); + if (list == NULL) { + parser->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; + goto failed; + } + + rule = lxb_css_syntax_parser_list_rules_push(parser, cb, NULL, list, LXB_CSS_SYNTAX_TOKEN_UNDEF); if (rule == NULL) { - status = parser->status; - goto end; + goto failed; + } + + parser->tkz->with_comment = false; + parser->stage = LXB_CSS_PARSER_RUN; + + parser->status = lxb_css_syntax_parser_run(parser); + if (parser->status != LXB_STATUS_OK) { + goto failed; + } + + parser->stage = LXB_CSS_PARSER_END; + + return list; + +failed: + + if (list != NULL) { + lxb_css_rule_list_destroy(list, true); + } + + parser->stage = LXB_CSS_PARSER_END; + + return NULL; +} + +lxb_css_rule_declaration_list_t * +lxb_css_syntax_parse_declarations(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_declarations_t *cb, + const lxb_char_t *data, size_t length) +{ + lxb_css_rule_declaration_list_t *list; + lxb_css_syntax_rule_t *rule; + + if (lxb_css_parser_is_running(parser)) { + parser->status = LXB_STATUS_ERROR_WRONG_STAGE; + return NULL; + } + + lxb_css_parser_clean(parser); + lxb_css_parser_buffer_set(parser, data, length); + + list = lxb_css_rule_declaration_list_create(parser->memory); + if (list == NULL) { + parser->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; + goto failed; + } + + rule = lxb_css_syntax_parser_declarations_push(parser, cb, NULL, list, + LXB_CSS_SYNTAX_TOKEN_UNDEF, + true, false); + if (rule == NULL) { + goto failed; } parser->tkz->with_comment = false; parser->stage = LXB_CSS_PARSER_RUN; - status = lxb_css_syntax_parser_run(parser); - if (status != LXB_STATUS_OK) { - /* Destroy StyleSheet. */ + parser->status = lxb_css_syntax_parser_run(parser); + if (parser->status != LXB_STATUS_OK) { + goto failed; } -end: + parser->stage = LXB_CSS_PARSER_END; + + return list; + +failed: + + if (list != NULL) { + lxb_css_rule_declaration_list_destroy(list, true); + } parser->stage = LXB_CSS_PARSER_END; - return status; + return NULL; +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_list_rules(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_list_rules_t *list_rules, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop) +{ + return lxb_css_syntax_parser_list_rules_push(parser, list_rules, back, + ctx, stop); +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_at_rule(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_at_rule_t *at_rule, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop) +{ + if (token->type != LXB_CSS_SYNTAX_TOKEN_AT_KEYWORD) { + return NULL; + } + + if (parser->rules > parser->rules_begin && parser->rules->deep != 0 + && parser->types_pos[-1] == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) + { + parser->types_pos -= 1; + parser->rules->deep -= 1; + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_syntax_parser_at_rule_push(parser, at_rule, back, ctx, + stop, false); +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_qualified_rule(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_qualified_rule_t *qualified, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop) +{ + lxb_css_syntax_token_type_t type; + + if (parser->rules > parser->rules_begin && parser->rules->deep != 0) { + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: + type = LXB_CSS_SYNTAX_TOKEN_RS_BRACKET; + break; + + case LXB_CSS_SYNTAX_TOKEN_FUNCTION: + case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: + type = LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS; + break; + + case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: + type = LXB_CSS_SYNTAX_TOKEN_RC_BRACKET; + break; + + default: + type = LXB_CSS_SYNTAX_TOKEN_UNDEF; + break; + } + + + if (parser->types_pos[-1] == type) { + parser->types_pos -= 1; + parser->rules->deep -= 1; + } + } + + return lxb_css_syntax_parser_qualified_push(parser, qualified, back, + ctx, stop, false); +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_block_t *block, + lxb_css_parser_state_f back, void *ctx) +{ + if (token->type != LXB_CSS_SYNTAX_TOKEN_LC_BRACKET) { + return NULL; + } + + if (parser->rules > parser->rules_begin && parser->rules->deep != 0 + && parser->types_pos[-1] == LXB_CSS_SYNTAX_TOKEN_RC_BRACKET) + { + parser->types_pos -= 1; + parser->rules->deep -= 1; + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_syntax_parser_block_push(parser, block, back, ctx); +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_declarations(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_declarations_t *declr, + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop) +{ + lxb_css_syntax_token_type_t type; + + if (parser->rules > parser->rules_begin && parser->rules->deep != 0) { + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: + type = LXB_CSS_SYNTAX_TOKEN_RS_BRACKET; + break; + + case LXB_CSS_SYNTAX_TOKEN_FUNCTION: + case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: + type = LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS; + break; + + case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: + type = LXB_CSS_SYNTAX_TOKEN_RC_BRACKET; + break; + + default: + type = LXB_CSS_SYNTAX_TOKEN_UNDEF; + break; + } + + + if (parser->types_pos[-1] == type) { + parser->types_pos -= 1; + parser->rules->deep -= 1; + } + } + + return lxb_css_syntax_parser_declarations_push(parser, declr, back, + ctx, stop, true, false); +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_components(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_components_t *comp, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop) +{ + lxb_css_syntax_token_type_t type; + + if (parser->rules > parser->rules_begin && parser->rules->deep != 0) { + switch (token->type) { + case LXB_CSS_SYNTAX_TOKEN_LS_BRACKET: + type = LXB_CSS_SYNTAX_TOKEN_RS_BRACKET; + break; + + case LXB_CSS_SYNTAX_TOKEN_FUNCTION: + case LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS: + type = LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS; + break; + + case LXB_CSS_SYNTAX_TOKEN_LC_BRACKET: + type = LXB_CSS_SYNTAX_TOKEN_RC_BRACKET; + break; + + default: + type = LXB_CSS_SYNTAX_TOKEN_UNDEF; + break; + } + + + if (parser->types_pos[-1] == type) { + parser->types_pos -= 1; + parser->rules->deep -= 1; + } + } + + return lxb_css_syntax_parser_components_push(parser, comp, back, ctx, stop); +} + +lxb_css_syntax_rule_t * +lxb_css_syntax_consume_function(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_function_t *func, + lxb_css_parser_state_f back, void *ctx) +{ + if (token->type != LXB_CSS_SYNTAX_TOKEN_FUNCTION) { + return NULL; + } + + if (parser->rules > parser->rules_begin && parser->rules->deep != 0 + && parser->types_pos[-1] == LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS) + { + parser->types_pos -= 1; + parser->rules->deep -= 1; + } + + lxb_css_syntax_parser_consume(parser); + + return lxb_css_syntax_parser_function_push(parser, func, back, ctx); } lxb_status_t @@ -69,22 +326,20 @@ lxb_css_syntax_stack_expand(lxb_css_parser_t *parser, size_t count) size_t length, cur_len, size; lxb_css_syntax_rule_t *p; - if ((parser->rules + count) >= parser->rules_end) { - cur_len = parser->rules - parser->rules_begin; + cur_len = parser->rules - parser->rules_begin; - length = cur_len + count + 1024; - size = length * sizeof(lxb_css_syntax_rule_t); + length = cur_len + count + 1024; + size = length * sizeof(lxb_css_syntax_rule_t); - p = lexbor_realloc(parser->rules_begin, size); - if (p == NULL) { - return LXB_STATUS_ERROR_MEMORY_ALLOCATION; - } - - parser->rules_begin = p; - parser->rules_end = p + length; - parser->rules = p + cur_len; + p = lexbor_realloc(parser->rules_begin, size); + if (p == NULL) { + return LXB_STATUS_ERROR_MEMORY_ALLOCATION; } + parser->rules_begin = p; + parser->rules_end = p + length; + parser->rules = p + cur_len; + return LXB_STATUS_OK; } @@ -166,8 +421,9 @@ lxb_css_syntax_ident_serialize(const lxb_char_t *data, size_t length, data = ++p; if (p < end && lexbor_str_res_map_hex[*p] != 0xff) { - lexbor_serialize_write(cb, lxb_str_ws.data, - lxb_str_ws.length, ctx, status); + lexbor_serialize_write(cb, lxb_css_syntax_str_ws.data, + lxb_css_syntax_str_ws.length, + ctx, status); } continue; @@ -231,8 +487,9 @@ lxb_css_syntax_string_serialize(const lxb_char_t *data, size_t length, p++; if (p < end && lexbor_str_res_map_hex[*p] != 0xff) { - lexbor_serialize_write(cb, lxb_str_ws.data, - lxb_str_ws.length, ctx, status); + lexbor_serialize_write(cb, lxb_css_syntax_str_ws.data, + lxb_css_syntax_str_ws.length, + ctx, status); } data = p; diff --git a/ext/lexbor/lexbor/css/syntax/syntax.h b/ext/lexbor/lexbor/css/syntax/syntax.h index 91ed9088f29a..08e9c5c8618d 100644 --- a/ext/lexbor/lexbor/css/syntax/syntax.h +++ b/ext/lexbor/lexbor/css/syntax/syntax.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Alexander Borisov + * Copyright (C) 2022-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -12,6 +12,7 @@ extern "C" { #endif #include "lexbor/css/syntax/tokenizer.h" +#include "lexbor/css/syntax/tokenizer.h" typedef struct lxb_css_syntax_rule lxb_css_syntax_rule_t; @@ -21,124 +22,211 @@ typedef const lxb_css_syntax_token_t * const lxb_css_syntax_token_t *token, lxb_css_syntax_rule_t *rule); -typedef lxb_status_t -(*lxb_css_syntax_declaration_end_f)(lxb_css_parser_t *parser, void *ctx, - bool important, bool failed); + +typedef struct lxb_css_syntax_cb_base lxb_css_syntax_cb_base_t; +typedef struct lxb_css_syntax_cb_list_rules lxb_css_syntax_cb_list_rules_t; +typedef struct lxb_css_syntax_cb_at_rule lxb_css_syntax_cb_at_rule_t; +typedef struct lxb_css_syntax_cb_qualified_rule lxb_css_syntax_cb_qualified_rule_t; +typedef struct lxb_css_syntax_cb_block lxb_css_syntax_cb_block_t; +typedef struct lxb_css_syntax_cb_declarations lxb_css_syntax_cb_declarations_t; +typedef struct lxb_css_syntax_cb_function lxb_css_syntax_cb_function_t; +typedef struct lxb_css_syntax_cb_components lxb_css_syntax_cb_components_t; +typedef struct lxb_css_syntax_cb_pipe lxb_css_syntax_cb_pipe_t; + +typedef struct lxb_css_syntax_declaration_offset lxb_css_syntax_declaration_offset_t; typedef lxb_status_t (*lxb_css_syntax_cb_done_f)(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx, bool failed); -typedef struct { - uintptr_t begin; - uintptr_t end; -} -lxb_css_syntax_list_rules_offset_t; - -typedef struct { - uintptr_t name; - uintptr_t prelude; - uintptr_t prelude_end; - uintptr_t block; - uintptr_t block_end; -} -lxb_css_syntax_at_rule_offset_t; - -typedef struct { - uintptr_t prelude; - uintptr_t prelude_end; - uintptr_t block; - uintptr_t block_end; -} -lxb_css_syntax_qualified_offset_t; - -typedef struct { - uintptr_t begin; - uintptr_t end; - uintptr_t name_begin; - uintptr_t name_end; - uintptr_t value_begin; - uintptr_t before_important; - uintptr_t value_end; -} -lxb_css_syntax_declarations_offset_t; - -typedef struct { - lxb_css_parser_state_f state; - lxb_css_parser_state_f block; +typedef const lxb_css_syntax_cb_at_rule_t * +(*lxb_css_syntax_begin_at_rule_f)(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +typedef const lxb_css_syntax_cb_qualified_rule_t * +(*lxb_css_syntax_begin_qualified_rule_f)(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +typedef const lxb_css_syntax_cb_block_t * +(*lxb_css_syntax_begin_block_f)(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); + +typedef const lxb_css_syntax_cb_declarations_t * +(*lxb_css_syntax_begin_declarations_f)(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +typedef lxb_css_parser_state_f +(*lxb_css_syntax_declaration_name_f)(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + void *ctx, void **out_rule); +typedef lxb_status_t +(*lxb_css_syntax_declaration_end_f)(lxb_css_parser_t *parser, + void *declaration, void *ctx, + const lxb_css_syntax_token_t *token, + lxb_css_syntax_declaration_offset_t *offset, + bool important, bool failed); + +struct lxb_css_syntax_cb_base { lxb_css_parser_state_f failed; lxb_css_syntax_cb_done_f end; -} -lxb_css_syntax_cb_base_t; +}; -typedef lxb_css_syntax_cb_base_t lxb_css_syntax_cb_pipe_t; -typedef lxb_css_syntax_cb_base_t lxb_css_syntax_cb_block_t; -typedef lxb_css_syntax_cb_base_t lxb_css_syntax_cb_function_t; -typedef lxb_css_syntax_cb_base_t lxb_css_syntax_cb_components_t; -typedef lxb_css_syntax_cb_base_t lxb_css_syntax_cb_at_rule_t; -typedef lxb_css_syntax_cb_base_t lxb_css_syntax_cb_qualified_rule_t; +struct lxb_css_syntax_cb_list_rules { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f next; + lxb_css_syntax_begin_at_rule_f at_rule; + lxb_css_syntax_begin_qualified_rule_f qualified_rule; +}; + +struct lxb_css_syntax_cb_at_rule { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f prelude; + lxb_css_syntax_cb_done_f prelude_end; + lxb_css_syntax_begin_block_f block; +}; + +struct lxb_css_syntax_cb_qualified_rule { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f prelude; + lxb_css_syntax_cb_done_f prelude_end; + lxb_css_syntax_begin_block_f block; +}; + +struct lxb_css_syntax_cb_block { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f next; + lxb_css_syntax_begin_at_rule_f at_rule; + lxb_css_syntax_begin_declarations_f declarations; + lxb_css_syntax_begin_qualified_rule_f qualified_rule; +}; -typedef struct { +struct lxb_css_syntax_cb_declarations { lxb_css_syntax_cb_base_t cb; - lxb_css_syntax_declaration_end_f declaration_end; - const lxb_css_syntax_cb_at_rule_t *at_rule; -} -lxb_css_syntax_cb_declarations_t; - -typedef struct { - lxb_css_syntax_cb_base_t cb; - lxb_css_parser_state_f next; - const lxb_css_syntax_cb_at_rule_t *at_rule; - const lxb_css_syntax_cb_qualified_rule_t *qualified_rule; -} -lxb_css_syntax_cb_list_rules_t; + lxb_css_syntax_declaration_name_f name; + lxb_css_syntax_declaration_end_f end; +}; + +struct lxb_css_syntax_cb_function { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f value; +}; + +struct lxb_css_syntax_cb_components { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f prelude; +}; + +struct lxb_css_syntax_cb_pipe { + lxb_css_syntax_cb_base_t cb; + lxb_css_parser_state_f prelude; +}; + +struct lxb_css_syntax_declaration_offset { + size_t value_begin; + size_t value_end; + size_t important_begin; + size_t important_end; + size_t end; +}; struct lxb_css_syntax_rule { lxb_css_syntax_state_f phase; lxb_css_parser_state_f state; - lxb_css_parser_state_f state_back; + + /* + * This callback will be called before rule->state is called. + * Exclusively from the lxb_css_parser_run(...). + */ lxb_css_syntax_state_f back; + lxb_css_parser_state_f back_state; + void *context; + void *context_old; + void *returned; union { const lxb_css_syntax_cb_base_t *cb; const lxb_css_syntax_cb_list_rules_t *list_rules; const lxb_css_syntax_cb_at_rule_t *at_rule; const lxb_css_syntax_cb_qualified_rule_t *qualified_rule; - const lxb_css_syntax_cb_declarations_t *declarations; const lxb_css_syntax_cb_components_t *components; + const lxb_css_syntax_cb_declarations_t *declarations; const lxb_css_syntax_cb_function_t *func; const lxb_css_syntax_cb_block_t *block; const lxb_css_syntax_cb_pipe_t *pipe; void *user; } cbx; - void *context; - - uintptr_t offset; - size_t deep; - lxb_css_syntax_token_type_t block_end; - bool skip_ending; - bool skip_consume; - bool important; - bool failed; - bool top_level; - - union { - lxb_css_syntax_list_rules_offset_t list_rules; - lxb_css_syntax_at_rule_offset_t at_rule; - lxb_css_syntax_qualified_offset_t qualified; - lxb_css_syntax_declarations_offset_t declarations; - void *user; - } u; + size_t offset; + size_t deep; + size_t begin; + lxb_css_syntax_token_type_t block_end; + bool nested; + bool skip_consume; + bool important; + bool failed; }; -LXB_API lxb_status_t +LXB_API lxb_css_rule_list_t * lxb_css_syntax_parse_list_rules(lxb_css_parser_t *parser, const lxb_css_syntax_cb_list_rules_t *cb, - const lxb_char_t *data, size_t length, - void *ctx, bool top_level); + const lxb_char_t *data, size_t length); + +LXB_API lxb_css_rule_declaration_list_t * +lxb_css_syntax_parse_declarations(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_declarations_t *cb, + const lxb_char_t *data, size_t length); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_list_rules(lxb_css_parser_t *parser, + const lxb_css_syntax_cb_list_rules_t *list_rules, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_at_rule(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_at_rule_t *at_rule, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_qualified_rule(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_qualified_rule_t *qualified, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_block(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_block_t *block, + lxb_css_parser_state_f back, void *ctx); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_declarations(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_declarations_t *declr, + lxb_css_parser_state_f back, void *ctx, + lxb_css_syntax_token_type_t stop); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_components(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_components_t *comp, + lxb_css_parser_state_f back, + void *ctx, lxb_css_syntax_token_type_t stop); + +LXB_API lxb_css_syntax_rule_t * +lxb_css_syntax_consume_function(lxb_css_parser_t *parser, + const lxb_css_syntax_token_t *token, + const lxb_css_syntax_cb_function_t *func, + lxb_css_parser_state_f back, void *ctx); + LXB_API lxb_status_t lxb_css_syntax_stack_expand(lxb_css_parser_t *parser, size_t count); @@ -159,6 +247,7 @@ LXB_API lxb_status_t lxb_css_syntax_ident_or_string_serialize(const lxb_char_t *data, size_t length, lexbor_serialize_cb_f cb, void *ctx); + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/ext/lexbor/lexbor/css/syntax/token.c b/ext/lexbor/lexbor/css/syntax/token.c index be1cc7809c43..ff53c4531e8b 100644 --- a/ext/lexbor/lexbor/css/syntax/token.c +++ b/ext/lexbor/lexbor/css/syntax/token.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -12,15 +12,12 @@ #include "lexbor/css/parser.h" #include "lexbor/css/syntax/token.h" #include "lexbor/css/syntax/state.h" -#include "lexbor/css/syntax/state_res.h" - -#define LXB_CSS_SYNTAX_TOKEN_RES_NAME_SHS_MAP #include "lexbor/css/syntax/token_res.h" -#define LEXBOR_STR_RES_MAP_HEX -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; +#endif lxb_css_syntax_token_t * lxb_css_syntax_tokenizer_token(lxb_css_syntax_tokenizer_t *tkz); diff --git a/ext/lexbor/lexbor/css/syntax/token_res.h b/ext/lexbor/lexbor/css/syntax/token_res.h index 7a8e1c4d2594..d5ee29cf3b22 100644 --- a/ext/lexbor/lexbor/css/syntax/token_res.h +++ b/ext/lexbor/lexbor/css/syntax/token_res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,10 +7,6 @@ #ifndef LEXBOR_CSS_SYNTAX_TOKEN_RES_H #define LEXBOR_CSS_SYNTAX_TOKEN_RES_H - -#ifdef LXB_CSS_SYNTAX_TOKEN_RES_NAME_SHS_MAP -#ifndef LXB_CSS_SYNTAX_TOKEN_RES_NAME_SHS_MAP_ENABLED -#define LXB_CSS_SYNTAX_TOKEN_RES_NAME_SHS_MAP_ENABLED static const lexbor_shs_entry_t lxb_css_syntax_token_res_name_shs_map[136] = { {NULL, NULL, 135, 0}, {NULL, NULL, 0, 0}, @@ -83,8 +79,4 @@ static const lexbor_shs_entry_t lxb_css_syntax_token_res_name_shs_map[136] = {NULL, NULL, 0, 0}, {"semicolon", (void *) LXB_CSS_SYNTAX_TOKEN_SEMICOLON, 9, 0} }; -#endif /* LXB_CSS_SYNTAX_TOKEN_RES_NAME_SHS_MAP_ENABLED */ -#endif /* LXB_CSS_SYNTAX_TOKEN_RES_NAME_SHS_MAP */ - - #endif /* LEXBOR_CSS_SYNTAX_TOKEN_RES_H */ diff --git a/ext/lexbor/lexbor/css/syntax/tokenizer.c b/ext/lexbor/lexbor/css/syntax/tokenizer.c index 9eecac657546..a44b2c7194a6 100644 --- a/ext/lexbor/lexbor/css/syntax/tokenizer.c +++ b/ext/lexbor/lexbor/css/syntax/tokenizer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -12,9 +12,10 @@ #include "lexbor/core/array.h" -#define LEXBOR_STR_RES_MAP_LOWERCASE -#include "lexbor/core/str_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; +#endif static const lxb_char_t lxb_css_syntax_tokenizer_important[] = "important"; @@ -297,7 +298,7 @@ lxb_css_syntax_tokenizer_lookup_important_ch(lxb_css_syntax_tokenizer_t *tkz, { static const size_t length = sizeof(lxb_css_syntax_tokenizer_important) - 1; - if (!(end - p >= length + if (!(lxb_size(end - p) >= length && lexbor_str_data_ncasecmp(p, lxb_css_syntax_tokenizer_important, length))) { diff --git a/ext/lexbor/lexbor/css/unit.c b/ext/lexbor/lexbor/css/unit.c new file mode 100644 index 000000000000..f3cc9c8ef28e --- /dev/null +++ b/ext/lexbor/lexbor/css/unit.c @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2021 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/css.h" +#include "lexbor/css/unit/res.h" + + +const lxb_css_data_t * +lxb_css_unit_absolute_relative_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_absolute_relative_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_absolute_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_absolute_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_relative_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_relative_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_angle_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_angle_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_frequency_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_frequency_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_resolution_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_resolution_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_duration_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_unit_duration_shs, + name, length); + if (entry == NULL) { + return NULL; + } + + return entry->value; +} + +const lxb_css_data_t * +lxb_css_unit_by_id(lxb_css_type_t id) +{ + return &lxb_css_unit_data[id]; +} diff --git a/ext/lexbor/lexbor/css/unit/const.h b/ext/lexbor/lexbor/css/unit/const.h index 9b7ba1c311b1..9f5e515834e8 100644 --- a/ext/lexbor/lexbor/css/unit/const.h +++ b/ext/lexbor/lexbor/css/unit/const.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/css/unit/res.h b/ext/lexbor/lexbor/css/unit/res.h index 4cca189b6f45..ac24503d1a6f 100644 --- a/ext/lexbor/lexbor/css/unit/res.h +++ b/ext/lexbor/lexbor/css/unit/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/css/value.c b/ext/lexbor/lexbor/css/value.c new file mode 100644 index 000000000000..23e2472d625c --- /dev/null +++ b/ext/lexbor/lexbor/css/value.c @@ -0,0 +1,678 @@ +/* + * Copyright (C) 2022-2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/css/css.h" +#include "lexbor/css/value/res.h" + +#include "lexbor/core/serialize.h" +#include "lexbor/core/conv.h" + + +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex_to_char_lowercase[17]; + LXB_EXTERN const char *lexbor_str_res_char_to_two_hex_value_lowercase[257]; +#endif + +static const lexbor_str_t lxb_css_value_str_ws = lexbor_str(" "); +static const lexbor_str_t lxb_str_comma = lexbor_str(", "); +static const lexbor_str_t lxb_str_alpha = lexbor_str(" / "); +static const lexbor_str_t lxb_str_rp = lexbor_str(")"); + + +const lxb_css_data_t * +lxb_css_value_by_id(uintptr_t id) +{ + if (id < LXB_CSS_VALUE__LAST_ENTRY) { + return &lxb_css_value_data[id]; + } + + return NULL; +} + +lxb_css_value_type_t +lxb_css_value_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + entry = lexbor_shs_entry_get_lower_static(lxb_css_value_shs, name, length); + if (entry == NULL) { + return LXB_CSS_VALUE__UNDEF; + } + + return (lxb_css_value_type_t) (uintptr_t) entry->value; +} + +lxb_status_t +lxb_css_value_serialize(lxb_css_value_type_t type, + lexbor_serialize_cb_f cb, void *ctx) +{ + const lxb_css_data_t *data; + + if (type >= LXB_CSS_VALUE__LAST_ENTRY) { + return LXB_STATUS_ERROR_WRONG_ARGS; + } + + data = &lxb_css_value_data[type]; + + return cb(data->name, data->length, ctx); +} + +lxb_status_t +lxb_css_value_percentage_sr(const lxb_css_value_percentage_t *percent, + lexbor_serialize_cb_f cb, void *ctx) +{ + size_t length; + lxb_char_t buf[128]; + lxb_status_t status; + + static const lexbor_str_t str_per = lexbor_str("%"); + + /* FIXME: If length != sizeof(buf)? */ + length = lexbor_conv_float_to_data(percent->num, buf, sizeof(buf)); + + lexbor_serialize_write(cb, buf, length, ctx, status); + lexbor_serialize_write(cb, str_per.data, str_per.length, ctx, status); + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_length_sr(const lxb_css_value_length_t *len, + lexbor_serialize_cb_f cb, void *ctx) +{ + size_t length; + lxb_char_t buf[128]; + lxb_status_t status; + const lxb_css_data_t *unit; + + /* FIXME: If length != sizeof(buf)? */ + length = lexbor_conv_float_to_data(len->num, buf, sizeof(buf)); + + lexbor_serialize_write(cb, buf, length, ctx, status); + + if (len->unit == LXB_CSS_UNIT__UNDEF) { + return LXB_STATUS_OK; + } + + unit = lxb_css_unit_by_id(len->unit); + if (unit == NULL) { + return LXB_STATUS_OK; + } + + lexbor_serialize_write(cb, unit->name, unit->length, ctx, status); + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_number_sr(const lxb_css_value_number_t *number, + lexbor_serialize_cb_f cb, void *ctx) +{ + size_t length; + lxb_char_t buf[128]; + lxb_status_t status; + + /* FIXME: If length != sizeof(buf)? */ + length = lexbor_conv_float_to_data(number->num, buf, sizeof(buf)); + + lexbor_serialize_write(cb, buf, length, ctx, status); + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_integer_sr(const lxb_css_value_integer_t *integer, + lexbor_serialize_cb_f cb, void *ctx) +{ + size_t length; + lxb_char_t buf[128]; + lxb_status_t status; + + /* FIXME: If length != sizeof(buf)? */ + length = lexbor_conv_long_to_data(integer->num, buf, sizeof(buf)); + + lexbor_serialize_write(cb, buf, length, ctx, status); + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_length_percentage_sr(const lxb_css_value_length_percentage_t *lp, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (lp->type) { + case LXB_CSS_VALUE__LENGTH: + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_length_sr(&lp->u.length, cb, ctx); + + case LXB_CSS_VALUE__PERCENTAGE: + return lxb_css_value_percentage_sr(&lp->u.percentage, cb, ctx); + + case LXB_CSS_VALUE__UNDEF: + /* FIXME: ???? */ + break; + + default: + return lxb_css_value_serialize(lp->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_number_length_sr(const lxb_css_value_number_length_t *nl, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (nl->type) { + case LXB_CSS_VALUE__LENGTH: + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_length_sr(&nl->u.length, cb, ctx); + + default: + return lxb_css_value_serialize(nl->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_number_percentage_sr(const lxb_css_value_number_percentage_t *np, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (np->type) { + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_number_sr(&np->u.number, cb, ctx); + + case LXB_CSS_VALUE__PERCENTAGE: + return lxb_css_value_percentage_sr(&np->u.percentage, cb, ctx); + + case LXB_CSS_VALUE__UNDEF: + /* FIXME: ???? */ + break; + + default: + return lxb_css_value_serialize(np->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_length_type_sr(const lxb_css_value_length_type_t *lt, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (lt->type) { + case LXB_CSS_VALUE__LENGTH: + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_length_sr(<->length, cb, ctx); + + case LXB_CSS_VALUE__UNDEF: + /* FIXME: ???? */ + break; + + default: + return lxb_css_value_serialize(lt->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_percentage_type_sr(const lxb_css_value_percentage_type_t *pt, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (pt->type) { + case LXB_CSS_VALUE__PERCENTAGE: + return lxb_css_value_percentage_sr(&pt->percentage, cb, ctx); + + case LXB_CSS_VALUE__UNDEF: + /* FIXME: ???? */ + break; + + default: + return lxb_css_value_serialize(pt->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_number_type_sr(const lxb_css_value_number_type_t *num, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (num->type) { + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_number_sr(&num->number, cb, ctx); + + default: + return lxb_css_value_serialize(num->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_integer_type_sr(const lxb_css_value_integer_type_t *num, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (num->type) { + case LXB_CSS_VALUE__INTEGER: + return lxb_css_value_integer_sr(&num->integer, cb, ctx); + + default: + return lxb_css_value_serialize(num->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_length_percentage_type_sr(const lxb_css_value_length_percentage_type_t *lpt, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (lpt->type) { + case LXB_CSS_VALUE__LENGTH: + return lxb_css_value_length_percentage_sr(&lpt->length, cb, ctx); + + default: + return lxb_css_value_serialize(lpt->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_number_length_percentage_type_sr(const lxb_css_value_number_length_percentage_t *nlp, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (nlp->type) { + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_number_sr(&nlp->u.number, cb, ctx); + + case LXB_CSS_VALUE__LENGTH: + return lxb_css_value_length_sr(&nlp->u.length, cb, ctx); + + case LXB_CSS_VALUE__PERCENTAGE: + return lxb_css_value_percentage_sr(&nlp->u.percentage, cb, ctx); + + default: + return lxb_css_value_serialize(nlp->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +lxb_status_t +lxb_css_value_angle_sr(const lxb_css_value_angle_t *angle, + lexbor_serialize_cb_f cb, void *ctx) +{ + size_t length; + lxb_char_t buf[128]; + lxb_status_t status; + const lxb_css_data_t *data; + + /* FIXME: If length != sizeof(buf)? */ + length = lexbor_conv_float_to_data(angle->num, buf, sizeof(buf)); + + lexbor_serialize_write(cb, buf, length, ctx, status); + + data = lxb_css_unit_by_id(angle->unit); + + return cb(data->name, data->length, ctx); +} + +lxb_status_t +lxb_css_value_hue_sr(const lxb_css_value_hue_t *hue, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (hue->type) { + case LXB_CSS_VALUE__NUMBER: + return lxb_css_value_number_sr(&hue->u.number, cb, ctx); + + case LXB_CSS_VALUE__ANGLE: + return lxb_css_value_angle_sr(&hue->u.angle, cb, ctx); + + case LXB_CSS_VALUE__UNDEF: + /* FIXME: ???? */ + break; + + default: + return lxb_css_value_serialize(hue->type, cb, ctx); + } + + return LXB_STATUS_OK; +} + +static lxb_status_t +lxb_css_value_color_hex_sr(const lxb_css_value_color_hex_t *hex, + lexbor_serialize_cb_f cb, void *ctx) +{ + lxb_status_t status; + static const lexbor_str_t str_hash = lexbor_str("#"); + const lxb_css_value_color_hex_rgba_t *rgba = &hex->rgba; + + const lxb_char_t *hmo = lexbor_str_res_map_hex_to_char_lowercase; + const char **hmt = lexbor_str_res_char_to_two_hex_value_lowercase; + + lexbor_serialize_write(cb, str_hash.data, str_hash.length, ctx, status); + + switch (hex->type) { + case LXB_CSS_PROPERTY_COLOR_HEX_TYPE_3: + case LXB_CSS_PROPERTY_COLOR_HEX_TYPE_4: + lexbor_serialize_write(cb, &hmo[rgba->r], 1, ctx, status); + lexbor_serialize_write(cb, &hmo[rgba->g], 1, ctx, status); + lexbor_serialize_write(cb, &hmo[rgba->b], 1, ctx, status); + + if (hex->type == LXB_CSS_PROPERTY_COLOR_HEX_TYPE_4) { + lexbor_serialize_write(cb, &hmo[rgba->a], 1, ctx, status); + } + + break; + + case LXB_CSS_PROPERTY_COLOR_HEX_TYPE_6: + case LXB_CSS_PROPERTY_COLOR_HEX_TYPE_8: + lexbor_serialize_write(cb, hmt[rgba->r], 2, ctx, status); + lexbor_serialize_write(cb, hmt[rgba->g], 2, ctx, status); + lexbor_serialize_write(cb, hmt[rgba->b], 2, ctx, status); + + if (hex->type == LXB_CSS_PROPERTY_COLOR_HEX_TYPE_8) { + lexbor_serialize_write(cb, hmt[rgba->a], 2, ctx, status); + } + + break; + + default: + break; + } + + return LXB_STATUS_OK; +} + +static lxb_status_t +lxb_css_value_color_rgb_sr(const lxb_css_value_color_rgba_t *rgb, + lexbor_serialize_cb_f cb, void *ctx, + lxb_css_value_type_t type) +{ + lxb_status_t status; + const lexbor_str_t *sep; + static const lexbor_str_t str_rgb = lexbor_str("rgb("); + static const lexbor_str_t str_rgba = lexbor_str("rgba("); + + if (type == LXB_CSS_COLOR_RGB) { + lexbor_serialize_write(cb, str_rgb.data, str_rgb.length, ctx, status); + } + else { + lexbor_serialize_write(cb, str_rgba.data, str_rgba.length, ctx, status); + } + + sep = (rgb->old) ? &lxb_str_comma : &lxb_css_value_str_ws; + + status = lxb_css_value_number_percentage_sr(&rgb->r, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, sep->data, sep->length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&rgb->g, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, sep->data, sep->length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&rgb->b, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (rgb->a.type == LXB_CSS_VALUE__UNDEF) { + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); + } + + sep = (rgb->old) ? &lxb_str_comma : &lxb_str_alpha; + + lexbor_serialize_write(cb, sep->data, sep->length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&rgb->a, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); +} + +static lxb_status_t +lxb_css_value_color_hsl_sr(const lxb_css_value_color_hsla_t *hsl, + lexbor_serialize_cb_f cb, void *ctx, + lxb_css_value_type_t type) +{ + lxb_status_t status; + const lexbor_str_t *sep; + static const lexbor_str_t str_hsl = lexbor_str("hsl("); + static const lexbor_str_t str_hsla = lexbor_str("hsla("); + static const lexbor_str_t str_hwb = lexbor_str("hwb("); + + switch (type) { + case LXB_CSS_COLOR_HSL: + status = cb(str_hsl.data, str_hsl.length, ctx); + break; + + case LXB_CSS_COLOR_HSLA: + status = cb(str_hsla.data, str_hsla.length, ctx); + break; + + case LXB_CSS_COLOR_HWB: + status = cb(str_hwb.data, str_hwb.length, ctx); + break; + + default: + return LXB_STATUS_ERROR_WRONG_ARGS; + } + + if (status != LXB_STATUS_OK) { + return status; + } + + sep = (hsl->old) ? &lxb_str_comma : &lxb_css_value_str_ws; + + status = lxb_css_value_hue_sr(&hsl->h, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, sep->data, sep->length, ctx, status); + + status = lxb_css_value_percentage_type_sr(&hsl->s, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, sep->data, sep->length, ctx, status); + + status = lxb_css_value_percentage_type_sr(&hsl->l, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (hsl->a.type == LXB_CSS_VALUE__UNDEF) { + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); + } + + sep = (hsl->old) ? &lxb_str_comma : &lxb_str_alpha; + + lexbor_serialize_write(cb, sep->data, sep->length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&hsl->a, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); +} + +static lxb_status_t +lxb_css_value_color_lab_sr(const lxb_css_value_color_lab_t *lab, + lexbor_serialize_cb_f cb, void *ctx, + lxb_css_value_type_t type) +{ + lxb_status_t status; + static const lexbor_str_t str_lab = lexbor_str("lab("); + static const lexbor_str_t str_oklab = lexbor_str("oklab("); + + switch (type) { + case LXB_CSS_COLOR_LAB: + status = cb(str_lab.data, str_lab.length, ctx); + break; + + case LXB_CSS_COLOR_OKLAB: + status = cb(str_oklab.data, str_oklab.length, ctx); + break; + + default: + return LXB_STATUS_ERROR_WRONG_ARGS; + } + + if (status != LXB_STATUS_OK) { + return status; + } + + status = lxb_css_value_number_percentage_sr(&lab->l, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, lxb_css_value_str_ws.data, + lxb_css_value_str_ws.length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&lab->a, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, lxb_css_value_str_ws.data, + lxb_css_value_str_ws.length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&lab->b, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (lab->alpha.type == LXB_CSS_VALUE__UNDEF) { + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); + } + + lexbor_serialize_write(cb, lxb_str_alpha.data, lxb_str_alpha.length, + ctx, status); + + status = lxb_css_value_number_percentage_sr(&lab->alpha, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); +} + +static lxb_status_t +lxb_css_value_color_lch_sr(const lxb_css_value_color_lch_t *lch, + lexbor_serialize_cb_f cb, void *ctx, + lxb_css_value_type_t type) +{ + lxb_status_t status; + static const lexbor_str_t str_lch = lexbor_str("lch("); + static const lexbor_str_t str_oklch = lexbor_str("oklch("); + + switch (type) { + case LXB_CSS_COLOR_LCH: + status = cb(str_lch.data, str_lch.length, ctx); + break; + + case LXB_CSS_COLOR_OKLCH: + status = cb(str_oklch.data, str_oklch.length, ctx); + break; + + default: + return LXB_STATUS_ERROR_WRONG_ARGS; + } + + if (status != LXB_STATUS_OK) { + return status; + } + + status = lxb_css_value_number_percentage_sr(&lch->l, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, lxb_css_value_str_ws.data, + lxb_css_value_str_ws.length, ctx, status); + + status = lxb_css_value_number_percentage_sr(&lch->c, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + lexbor_serialize_write(cb, lxb_css_value_str_ws.data, + lxb_css_value_str_ws.length, ctx, status); + + status = lxb_css_value_hue_sr(&lch->h, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + if (lch->a.type == LXB_CSS_VALUE__UNDEF) { + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); + } + + lexbor_serialize_write(cb, lxb_str_alpha.data, lxb_str_alpha.length, + ctx, status); + + status = lxb_css_value_number_percentage_sr(&lch->a, cb, ctx); + if (status != LXB_STATUS_OK) { + return status; + } + + return cb(lxb_str_rp.data, lxb_str_rp.length, ctx); +} + +lxb_status_t +lxb_css_value_color_serialize(const lxb_css_value_color_t *color, + lexbor_serialize_cb_f cb, void *ctx) +{ + switch (color->type) { + case LXB_CSS_COLOR_HEX: + return lxb_css_value_color_hex_sr(&color->u.hex, cb, ctx); + + case LXB_CSS_COLOR_RGB: + case LXB_CSS_COLOR_RGBA: + return lxb_css_value_color_rgb_sr(&color->u.rgb, cb, ctx, + color->type); + + case LXB_CSS_COLOR_HSL: + case LXB_CSS_COLOR_HSLA: + case LXB_CSS_COLOR_HWB: + return lxb_css_value_color_hsl_sr(&color->u.hsl, cb, ctx, + color->type); + + case LXB_CSS_COLOR_LAB: + case LXB_CSS_COLOR_OKLAB: + return lxb_css_value_color_lab_sr(&color->u.lab, cb, ctx, + color->type); + + case LXB_CSS_COLOR_LCH: + case LXB_CSS_COLOR_OKLCH: + return lxb_css_value_color_lch_sr(&color->u.lch, cb, ctx, + color->type); + + case LXB_CSS_VALUE__UNDEF: + break; + + default: + return lxb_css_value_serialize(color->type, cb, ctx); + } + + return LXB_STATUS_OK; +} diff --git a/ext/lexbor/lexbor/css/value/const.h b/ext/lexbor/lexbor/css/value/const.h index c9b5241e1d73..a7bd64c60349 100644 --- a/ext/lexbor/lexbor/css/value/const.h +++ b/ext/lexbor/lexbor/css/value/const.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/css/value/res.h b/ext/lexbor/lexbor/css/value/res.h index 79b3c6b0322f..180dc95f10e9 100644 --- a/ext/lexbor/lexbor/css/value/res.h +++ b/ext/lexbor/lexbor/css/value/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/dom/base.h b/ext/lexbor/lexbor/dom/base.h index 167e43d7691c..3894aa13ca6c 100644 --- a/ext/lexbor/lexbor/dom/base.h +++ b/ext/lexbor/lexbor/dom/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2024 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -15,8 +15,8 @@ extern "C" { #include "lexbor/core/base.h" -#define LXB_DOM_VERSION_MAJOR 1 -#define LXB_DOM_VERSION_MINOR 8 +#define LXB_DOM_VERSION_MAJOR 2 +#define LXB_DOM_VERSION_MINOR 0 #define LXB_DOM_VERSION_PATCH 0 #define LXB_DOM_VERSION_STRING \ diff --git a/ext/lexbor/lexbor/dom/exception.c b/ext/lexbor/lexbor/dom/exception.c index 44fcf65d6b4e..5433ce42aac6 100644 --- a/ext/lexbor/lexbor/dom/exception.c +++ b/ext/lexbor/lexbor/dom/exception.c @@ -1,18 +1,372 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ #include "lexbor/dom/exception.h" +#include "lexbor/dom/interfaces/document.h" -/* - * No inline functions for ABI. - */ -void * -lxb_dom_exception_code_ref_set_noi(lxb_dom_exception_code_t *var, - lxb_dom_exception_code_t code) +typedef struct { + lexbor_str_t name; + lexbor_str_t message; +} +lxb_dom_exception_data_t; + + +static const lxb_dom_exception_data_t lxb_dom_exception_data[LXB_DOM_EXCEPTION__LAST_ENTRY] = +{ + { + lexbor_str("Error"), + lexbor_str("") + }, + { + lexbor_str("IndexSizeError"), + lexbor_str("Deprecated. Use RangeError instead.") + }, + { + lexbor_str("DOMStringSizeError"), + lexbor_str("") + }, + { + lexbor_str("HierarchyRequestError"), + lexbor_str("The operation would yield an incorrect node tree.") + }, + { + lexbor_str("WrongDocumentError"), + lexbor_str("The object is in the wrong document.") + }, + { + lexbor_str("InvalidCharacterError"), + lexbor_str("The string contains invalid characters.") + }, + { + lexbor_str("NoDataAllowedError"), + lexbor_str("") + }, + { + lexbor_str("NoModificationAllowedError"), + lexbor_str("The object can not be modified.") + }, + { + lexbor_str("NotFoundError"), + lexbor_str("The object can not be found here.") + }, + { + lexbor_str("NotSupportedError"), + lexbor_str("The operation is not supported.") + }, + { + lexbor_str("InUseAttributeError"), + lexbor_str("The attribute is in use by another element.") + }, + { + lexbor_str("InvalidStateError"), + lexbor_str("The object is in an invalid state.") + }, + { + lexbor_str("SyntaxError"), + lexbor_str("The string did not match the expected pattern.") + }, + { + lexbor_str("InvalidModificationError"), + lexbor_str("The object can not be modified in this way.") + }, + { + lexbor_str("NamespaceError"), + lexbor_str("The operation is not allowed by Namespaces in XML.") + }, + { + lexbor_str("InvalidAccessError"), + lexbor_str("Deprecated. Use TypeError for invalid arguments, " + "\"NotSupportedError\" DOMException for unsupported operations, " + "and \"NotAllowedError\" DOMException for denied requests instead.") + }, + { + lexbor_str("ValidationError"), + lexbor_str("") + }, + { + lexbor_str("TypeMismatchError"), + lexbor_str("Deprecated. Use TypeError instead.") + }, + { + lexbor_str("SecurityError"), + lexbor_str("The operation is insecure.") + }, + { + lexbor_str("NetworkError"), + lexbor_str("A network error occurred.") + }, + { + lexbor_str("AbortError"), + lexbor_str("The operation was aborted.") + }, + { + lexbor_str("URLMismatchError"), + lexbor_str("Deprecated.") + }, + { + lexbor_str("QuotaExceededError"), + lexbor_str("Deprecated. Use the QuotaExceededError DOMException-derived " + "interface instead.") + }, + { + lexbor_str("TimeoutError"), + lexbor_str("The operation timed out.") + }, + { + lexbor_str("InvalidNodeTypeError"), + lexbor_str("The supplied node is incorrect or has an incorrect ancestor " + "for this operation.") + }, + { + lexbor_str("DataCloneError"), + lexbor_str("The object can not be cloned.") + }, + { + lexbor_str("EncodingError"), + lexbor_str("The encoding operation (either encoded or decoding) failed.") + }, + { + lexbor_str("NotReadableError"), + lexbor_str("The I/O read operation failed.") + }, + { + lexbor_str("UnknownError"), + lexbor_str("The operation failed for an unknown transient reason " + "(e.g. out of memory).") + }, + { + lexbor_str("ConstraintError"), + lexbor_str("A mutation operation in a transaction failed because a " + "constraint was not satisfied.") + }, + { + lexbor_str("DataError"), + lexbor_str("Provided data is inadequate.") + }, + { + lexbor_str("TransactionInactiveError"), + lexbor_str("A request was placed against a transaction which is currently" + " not active, or which is finished.") + }, + { + lexbor_str("ReadOnlyError"), + lexbor_str("The mutating operation was attempted in a \"readonly\" transaction.") + }, + { + lexbor_str("VersionError"), + lexbor_str("An attempt was made to open a database using a lower version" + " than the existing version.") + }, + { + lexbor_str("OperationError"), + lexbor_str("The operation failed for an operation-specific reason.") + }, + { + lexbor_str("NotAllowedError"), + lexbor_str("The request is not allowed by the user agent or the platform" + " in the current context, possibly because the user denied permission.") + }, + { + lexbor_str("OptOutError"), + lexbor_str("The user opted out of the process.") + } +}; + + +lxb_dom_exception_t * +lxb_dom_exception_create(lxb_dom_document_t *document, + const lxb_char_t *message, size_t message_length, + const lxb_char_t *name, size_t name_length) +{ + lexbor_str_t *str; + const lxb_dom_exception_data_t *data; + lxb_dom_exception_t *exception; + + exception = lexbor_mraw_alloc(document->mraw, sizeof(lxb_dom_exception_t)); + if (exception == NULL) { + return NULL; + } + + exception->document = document; + + if (name != NULL && name_length > 0) { + exception->code = lxb_dom_exception_code_by_name(name, name_length); + } + else { + exception->code = LXB_DOM_EXCEPTION_ERR; + } + + /* Message. */ + + if (message == NULL || message_length == 0) { + data = &lxb_dom_exception_data[exception->code]; + exception->message = *((lexbor_str_t *) &data->message); + } + else { + str = &exception->message; + str->data = lexbor_mraw_alloc(document->mraw, message_length + 1); + if (str->data == NULL) { + goto failed; + } + + memcpy(str->data, message, message_length); + + str->data[message_length] = '\0'; + str->length = message_length; + } + + /* Name. */ + + if (exception->code != LXB_DOM_EXCEPTION_ERR + || name == NULL || name_length == 0) + { + data = &lxb_dom_exception_data[exception->code]; + exception->name = *((lexbor_str_t *) &data->name); + } + else { + str = &exception->name; + str->data = lexbor_mraw_alloc(document->mraw, name_length + 1); + if (str->data == NULL) { + if (exception->message.length != 0) { + lexbor_mraw_free(document->mraw, exception->message.data); + } + + goto failed; + } + + memcpy(str->data, name, name_length); + + str->data[name_length] = '\0'; + str->length = name_length; + } + + return exception; + +failed: + + lexbor_mraw_free(document->mraw, exception); + + return NULL; +} + +lxb_dom_exception_t * +lxb_dom_exception_create_by_code(lxb_dom_document_t *document, + const lxb_char_t *message, size_t length, + lxb_dom_exception_code_t code) { - return lxb_dom_exception_code_ref_set(var, code); + lexbor_str_t *str; + const lxb_dom_exception_data_t *data; + lxb_dom_exception_t *exception; + + if (code <= LXB_DOM_EXCEPTION_OK || code >= LXB_DOM_EXCEPTION__LAST_ENTRY) { + return NULL; + } + + exception = lexbor_mraw_alloc(document->mraw, sizeof(lxb_dom_exception_t)); + if (exception == NULL) { + return NULL; + } + + exception->document = document; + exception->code = code; + + data = &lxb_dom_exception_data[code]; + + /* Message. */ + + if (message == NULL || length == 0) { + exception->message = *((lexbor_str_t *) &data->message); + } + else { + str = &exception->message; + str->data = lexbor_mraw_alloc(document->mraw, length + 1); + if (str->data == NULL) { + goto failed; + } + + memcpy(str->data, message, length); + + str->data[length] = '\0'; + str->length = length; + } + + /* Name. */ + + exception->name = *((lexbor_str_t *) &data->name); + + return exception; + +failed: + + lexbor_mraw_free(document->mraw, exception); + + return NULL; +} + +lxb_dom_exception_t * +lxb_dom_exception_destroy(lxb_dom_exception_t *exception) +{ + const lxb_dom_exception_data_t *data; + lxb_dom_document_t *document = exception->document; + + data = &lxb_dom_exception_data[exception->code]; + + if (exception->message.data != NULL + && exception->message.data != data->message.data) + { + lexbor_mraw_free(document->mraw, exception->message.data); + } + + if (exception->name.data != NULL + && exception->name.data != data->name.data) + { + lexbor_mraw_free(document->mraw, exception->name.data); + } + + lexbor_mraw_free(document->mraw, exception); + + return NULL; +} + +const lexbor_str_t * +lxb_dom_exception_message_by_code(lxb_dom_exception_code_t code) +{ + if (code <= LXB_DOM_EXCEPTION_OK || code >= LXB_DOM_EXCEPTION__LAST_ENTRY) { + return NULL; + } + + return &lxb_dom_exception_data[code].message; +} + +const lexbor_str_t * +lxb_dom_exception_name_by_code(lxb_dom_exception_code_t code) +{ + if (code <= LXB_DOM_EXCEPTION_OK || code >= LXB_DOM_EXCEPTION__LAST_ENTRY) { + return NULL; + } + + return &lxb_dom_exception_data[code].name; +} + +lxb_dom_exception_code_t +lxb_dom_exception_code_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_str_t *str; + lxb_dom_exception_code_t code; + + for (code = 0; code < LXB_DOM_EXCEPTION__LAST_ENTRY; code++) { + str = &lxb_dom_exception_data[code].name; + + if (length == str->length + && lexbor_str_data_ncasecmp(str->data, name, length)) + { + return code; + } + } + + return LXB_DOM_EXCEPTION_ERR; } diff --git a/ext/lexbor/lexbor/dom/exception.h b/ext/lexbor/lexbor/dom/exception.h index 47a7cfee040c..b306ed1443a3 100644 --- a/ext/lexbor/lexbor/dom/exception.h +++ b/ext/lexbor/lexbor/dom/exception.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -12,58 +12,84 @@ extern "C" { #endif #include "lexbor/core/base.h" +#include "lexbor/core/str.h" +#include "lexbor/dom/interface.h" typedef enum { - LXB_DOM_INDEX_SIZE_ERR = 0x00, - LXB_DOM_DOMSTRING_SIZE_ERR, - LXB_DOM_HIERARCHY_REQUEST_ERR, - LXB_DOM_WRONG_DOCUMENT_ERR, - LXB_DOM_INVALID_CHARACTER_ERR, - LXB_DOM_NO_DATA_ALLOWED_ERR, - LXB_DOM_NO_MODIFICATION_ALLOWED_ERR, - LXB_DOM_NOT_FOUND_ERR, - LXB_DOM_NOT_SUPPORTED_ERR, - LXB_DOM_INUSE_ATTRIBUTE_ERR, - LXB_DOM_INVALID_STATE_ERR, - LXB_DOM_SYNTAX_ERR, - LXB_DOM_INVALID_MODIFICATION_ERR, - LXB_DOM_NAMESPACE_ERR, - LXB_DOM_INVALID_ACCESS_ERR, - LXB_DOM_VALIDATION_ERR, - LXB_DOM_TYPE_MISMATCH_ERR, - LXB_DOM_SECURITY_ERR, - LXB_DOM_NETWORK_ERR, - LXB_DOM_ABORT_ERR, - LXB_DOM_URL_MISMATCH_ERR, - LXB_DOM_QUOTA_EXCEEDED_ERR, - LXB_DOM_TIMEOUT_ERR, - LXB_DOM_INVALID_NODE_TYPE_ERR, - LXB_DOM_DATA_CLONE_ERR + LXB_DOM_EXCEPTION_OK = -1, + LXB_DOM_EXCEPTION_ERR = 0, + LXB_DOM_EXCEPTION_INDEX_SIZE_ERR = 1, /* Deprecated. */ + LXB_DOM_EXCEPTION_DOMSTRING_SIZE_ERR, + LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR, + LXB_DOM_EXCEPTION_WRONG_DOCUMENT_ERR, + LXB_DOM_EXCEPTION_INVALID_CHARACTER_ERR, + LXB_DOM_EXCEPTION_NO_DATA_ALLOWED_ERR, + LXB_DOM_EXCEPTION_NO_MODIFICATION_ALLOWED_ERR, + LXB_DOM_EXCEPTION_NOT_FOUND_ERR, + LXB_DOM_EXCEPTION_NOT_SUPPORTED_ERR, + LXB_DOM_EXCEPTION_INUSE_ATTRIBUTE_ERR, + LXB_DOM_EXCEPTION_INVALID_STATE_ERR, + LXB_DOM_EXCEPTION_SYNTAX_ERR, + LXB_DOM_EXCEPTION_INVALID_MODIFICATION_ERR, + LXB_DOM_EXCEPTION_NAMESPACE_ERR, + LXB_DOM_EXCEPTION_INVALID_ACCESS_ERR, /* Deprecated. */ + LXB_DOM_EXCEPTION_VALIDATION_ERR, + LXB_DOM_EXCEPTION_TYPE_MISMATCH_ERR, /* Deprecated. */ + LXB_DOM_EXCEPTION_SECURITY_ERR, + LXB_DOM_EXCEPTION_NETWORK_ERR, + LXB_DOM_EXCEPTION_ABORT_ERR, + LXB_DOM_EXCEPTION_URL_MISMATCH_ERR, /* Deprecated. */ + LXB_DOM_EXCEPTION_QUOTA_EXCEEDED_ERR, /* Deprecated. */ + LXB_DOM_EXCEPTION_TIMEOUT_ERR, + LXB_DOM_EXCEPTION_INVALID_NODE_TYPE_ERR, + LXB_DOM_EXCEPTION_DATA_CLONE_ERR, + LXB_DOM_EXCEPTION_ENCODING_ERR, + LXB_DOM_EXCEPTION_NOT_READABLE_ERR, + LXB_DOM_EXCEPTION_UNKNOWN_ERR, + LXB_DOM_EXCEPTION_CONSTRAINT_ERR, + LXB_DOM_EXCEPTION_DATA_ERR, + LXB_DOM_EXCEPTION_TRANSACTION_INACTIVE_ERR, + LXB_DOM_EXCEPTION_READ_ONLY_ERR, + LXB_DOM_EXCEPTION_VERSION_ERR, + LXB_DOM_EXCEPTION_OPERATION_ERR, + LXB_DOM_EXCEPTION_NOT_ALLOWED_ERR, + LXB_DOM_EXCEPTION_OPT_OUT_ERR, + LXB_DOM_EXCEPTION__LAST_ENTRY } lxb_dom_exception_code_t; - -/* - * Inline functions - */ -lxb_inline void * -lxb_dom_exception_code_ref_set(lxb_dom_exception_code_t *var, - lxb_dom_exception_code_t code) -{ - if (var != NULL) { - *var = code; - } - - return NULL; +typedef struct { + lexbor_str_t name; + lexbor_str_t message; + lxb_dom_exception_code_t code; + lxb_dom_document_t *document; } +lxb_dom_exception_t; -/* - * No inline functions for ABI. - */ -LXB_API void * -lxb_dom_exception_code_ref_set_noi(lxb_dom_exception_code_t *var, - lxb_dom_exception_code_t code); + +LXB_API lxb_dom_exception_t * +lxb_dom_exception_create(lxb_dom_document_t *document, + const lxb_char_t *message, size_t message_length, + const lxb_char_t *name, size_t name_length); + +LXB_API lxb_dom_exception_t * +lxb_dom_exception_create_by_code(lxb_dom_document_t *document, + const lxb_char_t *message, size_t length, + lxb_dom_exception_code_t code); + +LXB_API lxb_dom_exception_t * +lxb_dom_exception_destroy(lxb_dom_exception_t *exception); + + +LXB_API const lexbor_str_t * +lxb_dom_exception_message_by_code(lxb_dom_exception_code_t code); + +LXB_API const lexbor_str_t * +lxb_dom_exception_name_by_code(lxb_dom_exception_code_t code); + +LXB_API lxb_dom_exception_code_t +lxb_dom_exception_code_by_name(const lxb_char_t *name, size_t length); #ifdef __cplusplus diff --git a/ext/lexbor/lexbor/dom/interface.h b/ext/lexbor/lexbor/dom/interface.h index 3eb4b133e9cd..30753e0b43ab 100644 --- a/ext/lexbor/lexbor/dom/interface.h +++ b/ext/lexbor/lexbor/dom/interface.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -16,8 +16,6 @@ extern "C" { #include "lexbor/tag/const.h" #include "lexbor/ns/const.h" -#include "lexbor/dom/exception.h" - #define lxb_dom_interface_cdata_section(obj) ((lxb_dom_cdata_section_t *) (obj)) #define lxb_dom_interface_character_data(obj) ((lxb_dom_character_data_t *) (obj)) diff --git a/ext/lexbor/lexbor/dom/interfaces/attr_const.h b/ext/lexbor/lexbor/dom/interfaces/attr_const.h index 756ad5548e45..28afac5e0bdd 100644 --- a/ext/lexbor/lexbor/dom/interfaces/attr_const.h +++ b/ext/lexbor/lexbor/dom/interfaces/attr_const.h @@ -39,22 +39,23 @@ typedef enum { LXB_DOM_ATTR_ID = 0x0012, LXB_DOM_ATTR_IS = 0x0013, LXB_DOM_ATTR_MAXLENGTH = 0x0014, - LXB_DOM_ATTR_PLACEHOLDER = 0x0015, - LXB_DOM_ATTR_POOL = 0x0016, - LXB_DOM_ATTR_PUBLIC = 0x0017, - LXB_DOM_ATTR_READONLY = 0x0018, - LXB_DOM_ATTR_REQUIRED = 0x0019, - LXB_DOM_ATTR_SCHEME = 0x001a, - LXB_DOM_ATTR_SELECTED = 0x001b, - LXB_DOM_ATTR_SIZE = 0x001c, - LXB_DOM_ATTR_SLOT = 0x001d, - LXB_DOM_ATTR_SRC = 0x001e, - LXB_DOM_ATTR_STYLE = 0x001f, - LXB_DOM_ATTR_SYSTEM = 0x0020, - LXB_DOM_ATTR_TITLE = 0x0021, - LXB_DOM_ATTR_TYPE = 0x0022, - LXB_DOM_ATTR_WIDTH = 0x0023, - LXB_DOM_ATTR__LAST_ENTRY = 0x0024 + LXB_DOM_ATTR_MULTIPLE = 0x0015, + LXB_DOM_ATTR_PLACEHOLDER = 0x0016, + LXB_DOM_ATTR_POOL = 0x0017, + LXB_DOM_ATTR_PUBLIC = 0x0018, + LXB_DOM_ATTR_READONLY = 0x0019, + LXB_DOM_ATTR_REQUIRED = 0x001a, + LXB_DOM_ATTR_SCHEME = 0x001b, + LXB_DOM_ATTR_SELECTED = 0x001c, + LXB_DOM_ATTR_SIZE = 0x001d, + LXB_DOM_ATTR_SLOT = 0x001e, + LXB_DOM_ATTR_SRC = 0x001f, + LXB_DOM_ATTR_STYLE = 0x0020, + LXB_DOM_ATTR_SYSTEM = 0x0021, + LXB_DOM_ATTR_TITLE = 0x0022, + LXB_DOM_ATTR_TYPE = 0x0023, + LXB_DOM_ATTR_WIDTH = 0x0024, + LXB_DOM_ATTR__LAST_ENTRY = 0x0025 } lxb_dom_attr_id_enum_t; diff --git a/ext/lexbor/lexbor/dom/interfaces/attr_res.h b/ext/lexbor/lexbor/dom/interfaces/attr_res.h index 85aa2c5061fc..0796043cafd7 100644 --- a/ext/lexbor/lexbor/dom/interfaces/attr_res.h +++ b/ext/lexbor/lexbor/dom/interfaces/attr_res.h @@ -63,6 +63,8 @@ static const lxb_dom_attr_data_t lxb_dom_attr_res_data_default[LXB_DOM_ATTR__LAS LXB_DOM_ATTR_IS, 1, true}, {{.u.short_str = "maxlength", .length = 9, .next = NULL}, LXB_DOM_ATTR_MAXLENGTH, 1, true}, + {{.u.short_str = "multiple", .length = 8, .next = NULL}, + LXB_DOM_ATTR_MULTIPLE, 1, true}, {{.u.short_str = "placeholder", .length = 11, .next = NULL}, LXB_DOM_ATTR_PLACEHOLDER, 1, true}, {{.u.short_str = "pool", .length = 4, .next = NULL}, @@ -127,7 +129,7 @@ static const lexbor_shs_entry_t lxb_dom_attr_res_shs_data[40] = {"is", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_IS], 2, 0}, {"type", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_TYPE], 4, 0}, {"title", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_TITLE], 5, 0}, - {NULL, NULL, 0, 0}, + {"multiple", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_MULTIPLE], 8, 0}, {"for", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_FOR], 3, 0}, {"face", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_FACE], 4, 22}, {"alt", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_ALT], 3, 23}, @@ -135,7 +137,7 @@ static const lexbor_shs_entry_t lxb_dom_attr_res_shs_data[40] = {"charset", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_CHARSET], 7, 26}, {"maxlength", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_MAXLENGTH], 9, 0}, {NULL, NULL, 0, 0}, - {"checked", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_CHECKED], 7, 0}, + {"checked", (void *) &lxb_dom_attr_res_data_default[LXB_DOM_ATTR_CHECKED], 7, 30}, {NULL, NULL, 0, 0} }; diff --git a/ext/lexbor/lexbor/dom/interfaces/character_data.c b/ext/lexbor/lexbor/dom/interfaces/character_data.c index bbca1865b39d..12c7dfdd0d6c 100644 --- a/ext/lexbor/lexbor/dom/interfaces/character_data.c +++ b/ext/lexbor/lexbor/dom/interfaces/character_data.c @@ -22,7 +22,7 @@ lxb_dom_character_data_interface_create(lxb_dom_document_t *document) lxb_dom_node_t *node = lxb_dom_interface_node(element); node->owner_document = lxb_dom_document_owner(document); - node->type = LXB_DOM_NODE_TYPE_UNDEF; + node->type = LXB_DOM_NODE_TYPE_CHARACTER_DATA; return element; } diff --git a/ext/lexbor/lexbor/dom/interfaces/document_type.c b/ext/lexbor/lexbor/dom/interfaces/document_type.c index 8c7465f4d62b..46889162717f 100644 --- a/ext/lexbor/lexbor/dom/interfaces/document_type.c +++ b/ext/lexbor/lexbor/dom/interfaces/document_type.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -12,6 +12,10 @@ LXB_API lxb_dom_attr_data_t * lxb_dom_attr_qualified_name_append(lexbor_hash_t *hash, const lxb_char_t *name, size_t length); +LXB_API lxb_dom_attr_data_t * +lxb_dom_attr_local_name_append(lexbor_hash_t *hash, + const lxb_char_t *name, size_t length); + lxb_dom_document_type_t * lxb_dom_document_type_interface_create(lxb_dom_document_t *document) @@ -29,6 +33,8 @@ lxb_dom_document_type_interface_create(lxb_dom_document_t *document) node->owner_document = lxb_dom_document_owner(document); node->type = LXB_DOM_NODE_TYPE_DOCUMENT_TYPE; + element->name = LXB_DOM_ATTR_HTML; + return element; } @@ -105,6 +111,103 @@ lxb_dom_document_type_interface_destroy(lxb_dom_document_type_t *document_type) return NULL; } +lxb_dom_document_type_t * +lxb_dom_document_type_create(lxb_dom_document_t *document, + const lxb_char_t *name, size_t name_len, + const lxb_char_t *pub, size_t pub_len, + const lxb_char_t *sys, size_t sys_len, + lxb_dom_exception_code_t *code) +{ + lxb_dom_attr_data_t *data; + lxb_dom_document_type_t *doctype; + + if (!lxb_dom_document_type_valid_name(name, name_len)) { + if (code != NULL) { + *code = LXB_DOM_EXCEPTION_INVALID_CHARACTER_ERR; + } + + return NULL; + } + + doctype = lxb_dom_document_type_interface_create(document); + if (doctype == NULL) { + goto failed; + } + + data = lxb_dom_attr_local_name_append(document->attrs, name, name_len); + if (data == NULL) { + goto failed; + } + + doctype->name = data->attr_id; + + if (pub != NULL && pub_len != 0) { + doctype->public_id.data = lxb_dom_document_create_text(document, + pub_len + 1); + if (doctype->public_id.data == NULL) { + goto failed; + } + + (void) lexbor_str_copy_to_with_null(&doctype->public_id, pub, pub_len); + } + + if (sys != NULL && sys_len != 0) { + doctype->system_id.data = lxb_dom_document_create_text(document, + sys_len + 1); + if (doctype->system_id.data == NULL) { + goto failed; + } + + (void) lexbor_str_copy_to_with_null(&doctype->system_id, sys, sys_len); + } + + if (code != NULL) { + *code = LXB_DOM_EXCEPTION_OK; + } + + return doctype; + +failed: + + if (doctype != NULL && doctype->public_id.data != NULL) { + lxb_dom_document_destroy_text(document, doctype->public_id.data); + } + + if (code != NULL) { + *code = LXB_DOM_EXCEPTION_ERR; + } + + return NULL; +} + +bool +lxb_dom_document_type_valid_name(const lxb_char_t *name, size_t length) +{ + lxb_char_t c; + const lxb_char_t *end; + + if (name == NULL || length == 0) { + return false; + } + + end = name + length; + + while (name < end) { + c = *name++; + /* + * U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, or U+0020 SPACE, + * or U+0000 NULL, or U+003E (>) + */ + if (c == 0x09 || c == 0x0A || c == 0x0C || c == 0x0D || c == 0x20 + || c == 0x00 || c == 0x3E) + { + return false; + } + } + + return true; +} + /* * No inline functions for ABI. */ diff --git a/ext/lexbor/lexbor/dom/interfaces/document_type.h b/ext/lexbor/lexbor/dom/interfaces/document_type.h index 366aaba409ac..c7a1960af668 100644 --- a/ext/lexbor/lexbor/dom/interfaces/document_type.h +++ b/ext/lexbor/lexbor/dom/interfaces/document_type.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -37,6 +37,34 @@ lxb_dom_document_type_interface_clone(lxb_dom_document_t *document, LXB_API lxb_dom_document_type_t * lxb_dom_document_type_interface_destroy(lxb_dom_document_type_t *document_type); +/* + * Create DocumentType by specification. + * + * https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype + * + * @param[in] lxb_dom_document_t *. Not NULL. + * @param[in] const lxb_char_t *. Name. May be NULL, but then the return value + * will be NULL and an exception code will be recorded. + * @param[in] size_t. Length of name. May be 0, but then the return value + * will be NULL and an exception code will be recorded. + * @param[in] const lxb_char_t *. PublicID. Can be NULL. + * @param[in] size_t. Length of PublicID. Can be 0. + * @param[in] const lxb_char_t *. SystemID. Can be NULL. + * @param[in] size_t. Length of SystemID. Can be 0. + * @param[out] lxb_dom_exception_code_t. Can be NULL. If the variable is passed, + * the code will definitely be assigned. LXB_DOM_EXCEPTION_OK + * if successful. + * + * @return lxb_dom_document_type_t * if successful, otherwise NULL. + */ +LXB_API lxb_dom_document_type_t * +lxb_dom_document_type_create(lxb_dom_document_t *document, + const lxb_char_t *name, size_t name_len, + const lxb_char_t *pub, size_t pub_len, + const lxb_char_t *sys, size_t sys_len, + lxb_dom_exception_code_t *code); +LXB_API bool +lxb_dom_document_type_valid_name(const lxb_char_t *ame, size_t name_len); /* * Inline functions diff --git a/ext/lexbor/lexbor/dom/interfaces/element.c b/ext/lexbor/lexbor/dom/interfaces/element.c index 09d9736e5d8c..90d707d078bb 100644 --- a/ext/lexbor/lexbor/dom/interfaces/element.c +++ b/ext/lexbor/lexbor/dom/interfaces/element.c @@ -581,6 +581,18 @@ lxb_dom_element_is_set(lxb_dom_element_t *element, return LXB_STATUS_OK; } +lxb_dom_element_t * +lxb_dom_element_by_id(lxb_dom_element_t *root, + const lxb_char_t *qualified_name, size_t len) +{ + lxb_dom_node_t *node; + + node = lxb_dom_node_by_id(lxb_dom_interface_node(root), + qualified_name, len); + + return lxb_dom_interface_element(node); +} + lxb_status_t lxb_dom_elements_by_tag_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, diff --git a/ext/lexbor/lexbor/dom/interfaces/element.h b/ext/lexbor/lexbor/dom/interfaces/element.h index dd661d439cce..50d814fd3765 100644 --- a/ext/lexbor/lexbor/dom/interfaces/element.h +++ b/ext/lexbor/lexbor/dom/interfaces/element.h @@ -135,6 +135,10 @@ LXB_API lxb_status_t lxb_dom_element_is_set(lxb_dom_element_t *element, const lxb_char_t *is, size_t is_len); +LXB_API lxb_dom_element_t * +lxb_dom_element_by_id(lxb_dom_element_t *root, + const lxb_char_t *qualified_name, size_t len); + LXB_API lxb_status_t lxb_dom_elements_by_tag_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, diff --git a/ext/lexbor/lexbor/dom/interfaces/node.c b/ext/lexbor/lexbor/dom/interfaces/node.c index a588ed388e48..f2bbaa391e39 100644 --- a/ext/lexbor/lexbor/dom/interfaces/node.c +++ b/ext/lexbor/lexbor/dom/interfaces/node.c @@ -10,6 +10,7 @@ #include "lexbor/dom/interfaces/document_type.h" #include "lexbor/dom/interfaces/element.h" #include "lexbor/dom/interfaces/processing_instruction.h" +#include "lexbor/dom/interfaces/shadow_root.h" typedef struct lxb_dom_node_cb_ctx lxb_dom_node_cb_ctx_t; @@ -29,6 +30,13 @@ struct lxb_dom_node_cb_ctx { size_t value_length; }; +typedef struct { + lxb_dom_node_t *node; + const lxb_char_t *value; + size_t length; +} +lxb_dom_node_id_cb_ctx_t; + LXB_API lxb_dom_attr_data_t * lxb_dom_attr_local_name_append(lexbor_hash_t *hash, @@ -44,6 +52,9 @@ lxb_ns_append(lexbor_hash_t *hash, const lxb_char_t *link, size_t length); static lexbor_action_t lxb_dom_node_by_tag_name_cb(lxb_dom_node_t *node, void *ctx); +static lexbor_action_t +lxb_dom_node_by_id_cb(lxb_dom_node_t *node, void *ctx); + static lexbor_action_t lxb_dom_node_by_tag_name_cb_all(lxb_dom_node_t *node, void *ctx); @@ -443,6 +454,373 @@ lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node) } } +lxb_dom_exception_code_t +lxb_dom_node_pre_insert_validity(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child) +{ + size_t count; + lxb_dom_node_t *tmp; + + /* + * If parent is not a Document, DocumentFragment, or Element node, then + * throw a "HierarchyRequestError" DOMException. + */ + if (parent == NULL) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + switch (parent->type) { + case LXB_DOM_NODE_TYPE_ELEMENT: + case LXB_DOM_NODE_TYPE_DOCUMENT: + case LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT: + break; + + default: + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + if (lxb_dom_node_host_including_inclusive_ancestor(node, parent)) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + /* + * If child is non-null and its parent is not parent, + * then throw a "NotFoundError" DOMException. + */ + if (child != NULL && parent != child->parent) { + return LXB_DOM_EXCEPTION_NOT_FOUND_ERR; + } + + /* + * If node is not a DocumentFragment, DocumentType, Element, + * or CharacterData node, then throw a "HierarchyRequestError" DOMException. + */ + if (node == NULL) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + switch (parent->type) { + case LXB_DOM_NODE_TYPE_ELEMENT: + case LXB_DOM_NODE_TYPE_DOCUMENT: + case LXB_DOM_NODE_TYPE_DOCUMENT_TYPE: + case LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT: + case LXB_DOM_NODE_TYPE_CHARACTER_DATA: + case LXB_DOM_NODE_TYPE_TEXT: + break; + + default: + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + /* + * If either node is a Text node and parent is a document, or node is + * a doctype and parent is not a document, then throw + * a "HierarchyRequestError" DOMException. + */ + if ((node->type == LXB_DOM_NODE_TYPE_TEXT + && parent->type == LXB_DOM_NODE_TYPE_DOCUMENT) + || (node->type == LXB_DOM_NODE_TYPE_DOCUMENT_TYPE + && parent->type != LXB_DOM_NODE_TYPE_DOCUMENT)) + { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + if (parent->type != LXB_DOM_NODE_TYPE_DOCUMENT) { + return LXB_DOM_EXCEPTION_OK; + } + + switch (node->type) { + case LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT: + tmp = node->first_child; + + if (tmp == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + + count = 0; + + do { + if (tmp->type == LXB_DOM_NODE_TYPE_TEXT) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + else if (tmp->type == LXB_DOM_NODE_TYPE_ELEMENT) { + count += 1; + + if (count > 1) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + } + + tmp = tmp->next; + } + while (tmp != NULL); + + if (count != 1) { + return LXB_DOM_EXCEPTION_OK; + } + + /* Fall Through. */ + + case LXB_DOM_NODE_TYPE_ELEMENT: + tmp = parent->first_child; + + while (tmp != NULL) { + if (tmp->type == LXB_DOM_NODE_TYPE_ELEMENT) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + tmp = tmp->next; + } + + if (child == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + + if (child->type == LXB_DOM_NODE_TYPE_DOCUMENT_TYPE) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + tmp = child->next; + + while (tmp != NULL) { + if (tmp->type == LXB_DOM_NODE_TYPE_DOCUMENT_TYPE) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + tmp = tmp->next; + } + + break; + + case LXB_DOM_NODE_TYPE_DOCUMENT_TYPE: + tmp = parent->first_child; + + while (tmp != NULL) { + if (tmp->type == LXB_DOM_NODE_TYPE_DOCUMENT_TYPE) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + else if (tmp->type == LXB_DOM_NODE_TYPE_ELEMENT + && child == NULL) + { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + tmp = tmp->next; + } + + if (child == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + + tmp = child->prev; + + while (tmp != NULL) { + if (tmp->type == LXB_DOM_NODE_TYPE_ELEMENT) { + return LXB_DOM_EXCEPTION_HIERARCHY_REQUEST_ERR; + } + + tmp = tmp->prev; + } + + break; + + default: + break; + } + + return LXB_DOM_EXCEPTION_OK; +} + +lxb_dom_exception_code_t +lxb_dom_node_pre_insert(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child) +{ + lxb_dom_exception_code_t ex_code; + + ex_code = lxb_dom_node_pre_insert_validity(parent, node, child); + if (ex_code != LXB_DOM_EXCEPTION_OK) { + return ex_code; + } + + if (child == node) { + child = node->next; + } + + return lxb_dom_node_insert(parent, node, child, false); +} + +lxb_inline lxb_dom_exception_code_t +lxb_dom_node_insert_node(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child, bool suppress_observers) +{ + lxb_dom_exception_code_t code; + + code = lxb_dom_node_adopt(node); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + + if (child == NULL) { + lxb_dom_node_insert_child(parent, node); + } + else { + lxb_dom_node_insert_before(child, node); + } + + return LXB_DOM_EXCEPTION_OK; +} + +lxb_dom_exception_code_t +lxb_dom_node_insert(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child, bool suppress_observers) +{ + lxb_dom_node_t *tmp, *next; + lxb_dom_exception_code_t code; + + if (node->type == LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT) { + if (node->first_child == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + } + + /* TODO: live range. */ + + if (node->type != LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT) { + return lxb_dom_node_insert_node(parent, node, child, + suppress_observers); + } + + tmp = node->first_child; + + while (tmp != NULL) { + next = tmp->next; + + code = lxb_dom_node_insert_node(parent, tmp, child, + suppress_observers); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + + tmp = next; + } + + /* TODO: Shadow and queue a tree mutation record. */ + + return LXB_DOM_EXCEPTION_OK; +} + +lxb_dom_exception_code_t +lxb_dom_node_insert_before_spec(lxb_dom_node_t *dst, lxb_dom_node_t *node, + lxb_dom_node_t *child) +{ + return lxb_dom_node_pre_insert(dst, node, child); +} + +lxb_dom_exception_code_t +lxb_dom_node_append_child(lxb_dom_node_t *parent, lxb_dom_node_t *node) +{ + return lxb_dom_node_pre_insert(parent, node, NULL); +} + +lxb_dom_exception_code_t +lxb_dom_node_remove_child(lxb_dom_node_t *parent, lxb_dom_node_t *child) +{ + if (parent != child->parent) { + return LXB_DOM_EXCEPTION_NOT_FOUND_ERR; + } + + return lxb_dom_node_remove_spec(child, false); +} + +lxb_dom_exception_code_t +lxb_dom_node_replace_child(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child) +{ + lxb_dom_node_t *tmp, *next; + lxb_dom_node_t *before; + lxb_dom_exception_code_t code; + + code = lxb_dom_node_pre_insert_validity(parent, node, child); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + + before = child->prev; + if (before == NULL) { + before = child->next; + } + + if (child->parent != NULL) { + code = lxb_dom_node_remove_spec(child, true); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + } + + if (node->type != LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT) { + return lxb_dom_node_insert_node(parent, node, before, true); + } + + tmp = node->first_child; + + while (tmp != NULL) { + next = tmp->next; + + code = lxb_dom_node_insert_node(parent, tmp, before, true); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + + tmp = next; + } + + return LXB_DOM_EXCEPTION_OK; +} + +lxb_dom_exception_code_t +lxb_dom_node_replace_all_spec(lxb_dom_node_t *parent, lxb_dom_node_t *node) +{ + lxb_dom_node_t *child, *next; + lxb_dom_exception_code_t code; + + child = parent->first_child; + + while (child != NULL) { + next = child->next; + + code = lxb_dom_node_remove_spec(child, true); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + + child = next; + } + + return lxb_dom_node_append_child(parent, node); +} + +lxb_dom_exception_code_t +lxb_dom_node_remove_spec(lxb_dom_node_t *node, bool suppress_observers) +{ + if (node->parent == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + + /* TODO: 3. Run the live range pre-remove steps, given node. */ + + /* + * TODO: For each NodeIterator object iterator whose root’s node document + * is node’s node document, run the NodeIterator pre-remove steps given + * node and iterator. + */ + + lxb_dom_node_remove(node); + + /* TODO: finish everything else. */ + + return LXB_DOM_EXCEPTION_OK; +} + void lxb_dom_node_remove_wo_events(lxb_dom_node_t *node) { @@ -617,6 +995,52 @@ lxb_dom_node_prepare_by(lxb_dom_document_t *document, return LXB_STATUS_OK; } +lxb_dom_node_t * +lxb_dom_node_by_id(lxb_dom_node_t *root, + const lxb_char_t *qualified_name, size_t len) +{ + lxb_dom_node_id_cb_ctx_t ctx; + + ctx.node = NULL; + ctx.value = qualified_name; + ctx.length = len; + + lxb_dom_node_simple_walk(root, lxb_dom_node_by_id_cb, &ctx); + + return ctx.node; +} + +static lexbor_action_t +lxb_dom_node_by_id_cb(lxb_dom_node_t *node, void *ctx) +{ + lxb_dom_node_id_cb_ctx_t *context; + const lxb_dom_attr_t *attr_id; + + if (node->type != LXB_DOM_NODE_TYPE_ELEMENT) { + return LEXBOR_ACTION_OK; + } + + context = ctx; + attr_id = lxb_dom_interface_element(node)->attr_id; + + if (attr_id == NULL + || attr_id->value == NULL + || attr_id->value->length != context->length) + { + return LEXBOR_ACTION_OK; + } + + const lxb_char_t *data = attr_id->value->data; + size_t length = attr_id->value->length; + + if (lexbor_str_data_ncmp(context->value, data, length)) { + context->node = node; + return LEXBOR_ACTION_STOP; + } + + return LEXBOR_ACTION_OK; +} + lxb_status_t lxb_dom_node_by_tag_name(lxb_dom_node_t *root, lxb_dom_collection_t *collection, @@ -1278,6 +1702,47 @@ lxb_dom_node_is_empty(const lxb_dom_node_t *root) return true; } +bool +lxb_dom_node_host_including_inclusive_ancestor(const lxb_dom_node_t *node, + const lxb_dom_node_t *parent) +{ + const lxb_dom_shadow_root_t *root; + + while (parent != NULL) { + if (parent == node) { + return true; + } + + if (parent->type == LXB_DOM_NODE_TYPE_SHADOW_ROOT) { + root = lxb_dom_interface_shadow_root(parent); + parent = &root->host->node; + + continue; + } + + parent = parent->parent; + } + + return false; +} + +lxb_dom_exception_code_t +lxb_dom_node_adopt(lxb_dom_node_t *node) +{ + lxb_dom_exception_code_t code; + + if (node->parent != NULL) { + code = lxb_dom_node_remove_spec(node, false); + if (code != LXB_DOM_EXCEPTION_OK) { + return code; + } + } + + /* TODO: If document is not oldDocument steps. */ + + return LXB_DOM_EXCEPTION_OK; +} + lxb_tag_id_t lxb_dom_node_tag_id_noi(lxb_dom_node_t *node) { @@ -1313,3 +1778,9 @@ lxb_dom_node_last_child_noi(lxb_dom_node_t *node) { return lxb_dom_node_last_child(node); } + +lxb_dom_node_type_t +lxb_dom_node_type_noi(lxb_dom_node_t *node) +{ + return lxb_dom_node_type(node); +} diff --git a/ext/lexbor/lexbor/dom/interfaces/node.h b/ext/lexbor/lexbor/dom/interfaces/node.h index b5d2c5069f0d..b95373c51952 100644 --- a/ext/lexbor/lexbor/dom/interfaces/node.h +++ b/ext/lexbor/lexbor/dom/interfaces/node.h @@ -13,6 +13,7 @@ extern "C" { #include "lexbor/dom/interface.h" #include "lexbor/dom/collection.h" +#include "lexbor/dom/exception.h" #include "lexbor/dom/interfaces/event_target.h" @@ -59,7 +60,9 @@ typedef enum { LXB_DOM_NODE_TYPE_DOCUMENT_TYPE = 0x0A, LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT = 0x0B, LXB_DOM_NODE_TYPE_NOTATION = 0x0C, // historical - LXB_DOM_NODE_TYPE_LAST_ENTRY = 0x0D + LXB_DOM_NODE_TYPE_CHARACTER_DATA, + LXB_DOM_NODE_TYPE_SHADOW_ROOT, + LXB_DOM_NODE_TYPE_LAST_ENTRY } lxb_dom_node_type_t; @@ -135,12 +138,106 @@ lxb_dom_node_insert_after_wo_events(lxb_dom_node_t *to, lxb_dom_node_t *node); LXB_API void lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node); +LXB_API lxb_dom_exception_code_t +lxb_dom_node_pre_insert_validity(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child); + +LXB_API lxb_dom_exception_code_t +lxb_dom_node_pre_insert(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child); + +LXB_API lxb_dom_exception_code_t +lxb_dom_node_insert(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child, bool suppress_observers); + +/* + * Add a node as a child. + * + * Function according to specification. Node.appendChild(node). + * + * The function not only adds a node as a child, but also validates + * the possibility of adding it. + * For example, the lxb_dom_node_insert_child() function does not perform + * any validation. + * + * @param[in] lxb_dom_node_t *. Where to add. Not NULL. + * @param[in] lxb_dom_node_t *. Who to add. Not NULL. + * + * @return LXB_DOM_EXCEPTION_OK if successful, otherwise an error exception code. + */ +LXB_API lxb_dom_exception_code_t +lxb_dom_node_append_child(lxb_dom_node_t *parent, lxb_dom_node_t *node); + +/* + * Insert before child. + * + * Function according to specification. Node.insertBefore(node, child). + * + * The function not only insert a node as a child, but also validates + * the possibility of adding it. + * For example, the lxb_dom_node_insert_before() function does not perform + * any validation. + * + * @param[in] lxb_dom_node_t *. Where to add. Not NULL. + * @param[in] lxb_dom_node_t *. Who to add. Not NULL. + * @param[in] lxb_dom_node_t *. The child before need to insert. Not NULL. + * + * @return LXB_DOM_EXCEPTION_OK if successful, otherwise an error exception code. + */ +LXB_API lxb_dom_exception_code_t +lxb_dom_node_insert_before_spec(lxb_dom_node_t *dst, lxb_dom_node_t *node, + lxb_dom_node_t *child); + +LXB_API lxb_dom_exception_code_t +lxb_dom_node_remove_spec(lxb_dom_node_t *node, bool suppress_observers); + LXB_API void lxb_dom_node_remove_wo_events(lxb_dom_node_t *node); LXB_API void lxb_dom_node_remove(lxb_dom_node_t *node); +/* + * Removing a node. + * + * Function according to specification. Node.removeChild(node). + * + * The function not only removing a node, but also validates the possibility + * of adding it. + * For example, the lxb_dom_node_remove() function does not perform + * any validation. + * + * @param[in] lxb_dom_node_t *. Where remove. Not NULL. + * @param[in] lxb_dom_node_t *. Who remove. Not NULL. + * + * @return LXB_DOM_EXCEPTION_OK if successful, otherwise an error exception code. + */ +LXB_API lxb_dom_exception_code_t +lxb_dom_node_remove_child(lxb_dom_node_t *parent, lxb_dom_node_t *child); + +/* + * The function replaces the child with a node. + * + * Function according to specification. Node.replaceChild(node, child). + * + * The function not only replace a node, but also validates the possibility + * of adding it. + * For example, the lxb_dom_node_replace_all() function does not perform + * any validation. + * + * @param[in] lxb_dom_node_t *. Where replace. Not NULL. + * @param[in] lxb_dom_node_t *. Who replace. Not NULL. + * @param[in] lxb_dom_node_t *. Replaceable child. Not NULL. + * + * @return LXB_DOM_EXCEPTION_OK if successful, otherwise an error exception code. + */ +LXB_API lxb_dom_exception_code_t +lxb_dom_node_replace_child(lxb_dom_node_t *parent, lxb_dom_node_t *node, + lxb_dom_node_t *child); + +LXB_API lxb_dom_exception_code_t +lxb_dom_node_replace_all_spec(lxb_dom_node_t *parent, lxb_dom_node_t *node); + LXB_API lxb_status_t lxb_dom_node_replace_all(lxb_dom_node_t *parent, lxb_dom_node_t *node); @@ -148,6 +245,10 @@ LXB_API void lxb_dom_node_simple_walk(lxb_dom_node_t *root, lxb_dom_node_simple_walker_f walker_cb, void *ctx); +LXB_API lxb_dom_node_t * +lxb_dom_node_by_id(lxb_dom_node_t *root, + const lxb_char_t *qualified_name, size_t len); + LXB_API lxb_status_t lxb_dom_node_by_tag_name(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t len); @@ -193,6 +294,12 @@ lxb_dom_node_text_content_set(lxb_dom_node_t *node, LXB_API bool lxb_dom_node_is_empty(const lxb_dom_node_t *root); +LXB_API bool +lxb_dom_node_host_including_inclusive_ancestor(const lxb_dom_node_t *node, + const lxb_dom_node_t *parent); + +LXB_API lxb_dom_exception_code_t +lxb_dom_node_adopt(lxb_dom_node_t *node); /* * Inline functions @@ -233,6 +340,12 @@ lxb_dom_node_last_child(lxb_dom_node_t *node) return node->last_child; } +lxb_inline lxb_dom_node_type_t +lxb_dom_node_type(lxb_dom_node_t *node) +{ + return node->type; +} + /* * No inline functions for ABI. */ @@ -254,6 +367,9 @@ lxb_dom_node_first_child_noi(lxb_dom_node_t *node); LXB_API lxb_dom_node_t * lxb_dom_node_last_child_noi(lxb_dom_node_t *node); +LXB_API lxb_dom_node_type_t +lxb_dom_node_type_noi(lxb_dom_node_t *node); + #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/dom/interfaces/shadow_root.c b/ext/lexbor/lexbor/dom/interfaces/shadow_root.c index a7145bcec0d8..e2c332d58b28 100644 --- a/ext/lexbor/lexbor/dom/interfaces/shadow_root.c +++ b/ext/lexbor/lexbor/dom/interfaces/shadow_root.c @@ -22,7 +22,7 @@ lxb_dom_shadow_root_interface_create(lxb_dom_document_t *document) lxb_dom_node_t *node = lxb_dom_interface_node(element); node->owner_document = lxb_dom_document_owner(document); - node->type = LXB_DOM_NODE_TYPE_UNDEF; + node->type = LXB_DOM_NODE_TYPE_SHADOW_ROOT; return element; } diff --git a/ext/lexbor/lexbor/encoding/base.h b/ext/lexbor/lexbor/encoding/base.h index 88d74cc9bf8f..459287df3832 100644 --- a/ext/lexbor/lexbor/encoding/base.h +++ b/ext/lexbor/lexbor/encoding/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2024 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -16,7 +16,7 @@ extern "C" { #define LXB_ENCODING_VERSION_MAJOR 2 -#define LXB_ENCODING_VERSION_MINOR 2 +#define LXB_ENCODING_VERSION_MINOR 3 #define LXB_ENCODING_VERSION_PATCH 0 #define LXB_ENCODING_VERSION_STRING \ diff --git a/ext/lexbor/lexbor/encoding/encode.c b/ext/lexbor/lexbor/encoding/encode.c index 4377fb31f58a..f9a4f9f8effb 100644 --- a/ext/lexbor/lexbor/encoding/encode.c +++ b/ext/lexbor/lexbor/encoding/encode.c @@ -111,6 +111,122 @@ return 1 +lxb_inline uint16_t +lxb_encoding_multi_big5_index(lxb_codepoint_t cp) +{ + if (cp > 0x2F8A7) { + return UINT16_MAX; + } + + if (cp < 65518) { + if (cp >= 167 && cp < 1106) { + return lxb_encoding_multi_big5_167_1106_map[cp - 167]; + } + else if (cp >= 8211) { + if (cp < 40882) { + return lxb_encoding_multi_big5_8211_40882_map[cp - 8211]; + } + else if (cp >= 64012) { + return lxb_encoding_multi_big5_64012_65518_map[cp - 64012]; + } + } + } + else if (cp >= 131210) { + if (cp < 172369) { + return lxb_encoding_multi_big5_131210_172369_map[cp - 131210]; + } + else if (cp >= 194708) { + if (cp < 194727) { + return lxb_encoding_multi_big5_194708_194727_map[cp - 194708]; + } + } + } + + return UINT16_MAX; +} + +lxb_inline uint16_t +lxb_encoding_multi_euc_kr_index(lxb_codepoint_t cp) +{ + if (cp > 0xFFE7) { + return UINT16_MAX; + } + + if (cp < 13278) { + if (cp >= 161 && cp < 1106) { + return lxb_encoding_multi_euc_kr_161_1106_map[cp - 161]; + } + else if (cp >= 8213) { + return lxb_encoding_multi_euc_kr_8213_13278_map[cp - 8213]; + } + } + else if (cp >= 19968) { + if (cp < 55204) { + return lxb_encoding_multi_euc_kr_19968_55204_map[cp - 19968]; + } + else if (cp >= 63744) { + if (cp < 65511) { + return lxb_encoding_multi_euc_kr_63744_65511_map[cp - 63744]; + } + } + } + + return UINT16_MAX; +} + +lxb_inline uint16_t +lxb_encoding_multi_gb18030_index(lxb_codepoint_t cp) +{ + if (cp > 0xFFE6) { + return UINT16_MAX; + } + + if (cp < 40892) { + if (cp >= 164 && cp < 1106) { + return lxb_encoding_multi_gb18030_164_1106_map[cp - 164]; + } + else if (cp >= 7743) { + return lxb_encoding_multi_gb18030_7743_40892_map[cp - 7743]; + } + } + else if (cp >= 57344) { + if (cp < 65510) { + return lxb_encoding_multi_gb18030_57344_65510_map[cp - 57344]; + } + } + + return UINT16_MAX; +} + +lxb_inline uint16_t +lxb_encoding_multi_jis0208_index(lxb_codepoint_t cp) +{ + if (cp > 0xFFE6) { + return UINT16_MAX; + } + + if (cp < 13262) { + if (cp >= 167 && cp < 1106) { + return lxb_encoding_multi_jis0208_167_1106_map[cp - 167]; + } + else if (cp >= 8208) { + return lxb_encoding_multi_jis0208_8208_13262_map[cp - 8208]; + } + } + else if (cp >= 19968) { + if (cp < 40865) { + return lxb_encoding_multi_jis0208_19968_40865_map[cp - 19968]; + } + else if (cp >= 63785) { + if (cp < 65510) { + return lxb_encoding_multi_jis0208_63785_65510_map[cp - 63785]; + } + } + } + + return UINT16_MAX; +} + lxb_status_t lxb_encoding_encode_default(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cps, const lxb_codepoint_t *end) @@ -327,10 +443,10 @@ lxb_encoding_encode_iso_2022_jp(lxb_encoding_encode_t *ctx, const lxb_codepoint_ unsigned state; lxb_codepoint_t cp; - size = 0; state = ctx->state; for (; *cps < end; (*cps)++) { + size = 0; cp = **cps; begin: diff --git a/ext/lexbor/lexbor/encoding/encoding.c b/ext/lexbor/lexbor/encoding/encoding.c index 19d3a1474688..2a43f0fd70a2 100644 --- a/ext/lexbor/lexbor/encoding/encoding.c +++ b/ext/lexbor/lexbor/encoding/encoding.c @@ -55,6 +55,74 @@ lxb_encoding_data_by_pre_name(const lxb_char_t *name, size_t length) return entry->value; } +lxb_encoding_t +lxb_encoding_prescan_validate(const lxb_char_t *name, size_t length) +{ + const lxb_encoding_data_t *data; + + data = lxb_encoding_data_by_pre_name(name, length); + if (data == NULL) { + return LXB_ENCODING_DEFAULT; + } + + if (data->encoding == LXB_ENCODING_UTF_16BE + || data->encoding == LXB_ENCODING_UTF_16LE) + { + return LXB_ENCODING_UTF_8; + } + + if (data->encoding == LXB_ENCODING_X_USER_DEFINED) { + return LXB_ENCODING_WINDOWS_1252; + } + + return data->encoding; +} + +const lxb_encoding_data_t * +lxb_encoding_data_prescan_validate(const lxb_char_t *name, size_t length) +{ + const lxb_encoding_data_t *data; + + data = lxb_encoding_data_by_pre_name(name, length); + if (data == NULL) { + return NULL; + } + + if (data->encoding == LXB_ENCODING_UTF_16BE + || data->encoding == LXB_ENCODING_UTF_16LE) + { + return lxb_encoding_data(LXB_ENCODING_UTF_8); + } + + if (data->encoding == LXB_ENCODING_X_USER_DEFINED) { + return lxb_encoding_data(LXB_ENCODING_WINDOWS_1252); + } + + return data; +} + +lxb_encoding_t +lxb_encoding_bom_sniff(const lxb_char_t *begin, size_t length) +{ + if (length >= 3) { + if (begin[0] == 0xEF && begin[1] == 0xBB && begin[2] == 0xBF) { + return LXB_ENCODING_UTF_8; + } + } + + if (length >= 2) { + if (begin[0] == 0xFE && begin[1] == 0xFF) { + return LXB_ENCODING_UTF_16BE; + } + + if (begin[0] == 0xFF && begin[1] == 0xFE) { + return LXB_ENCODING_UTF_16LE; + } + } + + return LXB_ENCODING_DEFAULT; +} + void lxb_encoding_utf_8_skip_bom(const lxb_char_t **begin, size_t *length) { @@ -100,6 +168,54 @@ lxb_encoding_utf_16le_skip_bom(const lxb_char_t **begin, size_t *length) } } +const lxb_encoding_data_t * +lxb_encoding_data_by_name(const lxb_char_t *name, size_t length) +{ + const lexbor_shs_entry_t *entry; + + if (length == 0) { + return NULL; + } + + entry = lexbor_shs_entry_get_lower_static(lxb_encoding_res_shs_entities, + name, length); + if (entry == NULL) { + return NULL; + } + + return (const lxb_encoding_data_t *) entry->value; +} + +const lxb_encoding_data_t * +lxb_encoding_data(lxb_encoding_t encoding) +{ + if (encoding >= LXB_ENCODING_LAST_ENTRY) { + return NULL; + } + + return &lxb_encoding_res_map[encoding]; +} + +lxb_encoding_encode_f +lxb_encoding_encode_function(lxb_encoding_t encoding) +{ + if (encoding >= LXB_ENCODING_LAST_ENTRY) { + return NULL; + } + + return lxb_encoding_res_map[encoding].encode; +} + +lxb_encoding_decode_f +lxb_encoding_decode_function(lxb_encoding_t encoding) +{ + if (encoding >= LXB_ENCODING_LAST_ENTRY) { + return NULL; + } + + return lxb_encoding_res_map[encoding].decode; +} + /* * No inline functions for ABI. */ diff --git a/ext/lexbor/lexbor/encoding/encoding.h b/ext/lexbor/lexbor/encoding/encoding.h index 7bda3ba5f56c..7e08a3687993 100644 --- a/ext/lexbor/lexbor/encoding/encoding.h +++ b/ext/lexbor/lexbor/encoding/encoding.h @@ -27,9 +27,18 @@ extern "C" { LXB_API const lxb_encoding_data_t * lxb_encoding_data_by_pre_name(const lxb_char_t *name, size_t length); +LXB_API lxb_encoding_t +lxb_encoding_prescan_validate(const lxb_char_t *name, size_t length); + +LXB_API const lxb_encoding_data_t * +lxb_encoding_data_prescan_validate(const lxb_char_t *name, size_t length); + /* * To skip BOM. */ +LXB_API lxb_encoding_t +lxb_encoding_bom_sniff(const lxb_char_t *begin, size_t length); + LXB_API void lxb_encoding_utf_8_skip_bom(const lxb_char_t **begin, size_t *length); @@ -39,6 +48,20 @@ lxb_encoding_utf_16be_skip_bom(const lxb_char_t **begin, size_t *length); LXB_API void lxb_encoding_utf_16le_skip_bom(const lxb_char_t **begin, size_t *length); +/* + * Encoding data. + */ +LXB_API const lxb_encoding_data_t * +lxb_encoding_data_by_name(const lxb_char_t *name, size_t length); + +LXB_API const lxb_encoding_data_t * +lxb_encoding_data(lxb_encoding_t encoding); + +LXB_API lxb_encoding_encode_f +lxb_encoding_encode_function(lxb_encoding_t encoding); + +LXB_API lxb_encoding_decode_f +lxb_encoding_decode_function(lxb_encoding_t encoding); /* * Inline functions @@ -305,54 +328,6 @@ lxb_encoding_decode_finish_single(lxb_encoding_decode_t *decode) /* * Encoding data. */ -lxb_inline const lxb_encoding_data_t * -lxb_encoding_data_by_name(const lxb_char_t *name, size_t length) -{ - const lexbor_shs_entry_t *entry; - - if (length == 0) { - return NULL; - } - - entry = lexbor_shs_entry_get_lower_static(lxb_encoding_res_shs_entities, - name, length); - if (entry == NULL) { - return NULL; - } - - return (const lxb_encoding_data_t *) entry->value; -} - -lxb_inline const lxb_encoding_data_t * -lxb_encoding_data(lxb_encoding_t encoding) -{ - if (encoding >= LXB_ENCODING_LAST_ENTRY) { - return NULL; - } - - return &lxb_encoding_res_map[encoding]; -} - -lxb_inline lxb_encoding_encode_f -lxb_encoding_encode_function(lxb_encoding_t encoding) -{ - if (encoding >= LXB_ENCODING_LAST_ENTRY) { - return NULL; - } - - return lxb_encoding_res_map[encoding].encode; -} - -lxb_inline lxb_encoding_decode_f -lxb_encoding_decode_function(lxb_encoding_t encoding) -{ - if (encoding >= LXB_ENCODING_LAST_ENTRY) { - return NULL; - } - - return lxb_encoding_res_map[encoding].decode; -} - lxb_inline lxb_status_t lxb_encoding_data_call_encode(lxb_encoding_data_t *encoding_data, lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, const lxb_codepoint_t *end) diff --git a/ext/lexbor/lexbor/encoding/multi.c b/ext/lexbor/lexbor/encoding/multi.c index 78cd93ea82b1..2651648c5c96 100644 --- a/ext/lexbor/lexbor/encoding/multi.c +++ b/ext/lexbor/lexbor/encoding/multi.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/encoding/multi.h b/ext/lexbor/lexbor/encoding/multi.h index 4e6da7b4728b..a4c5def5ba6a 100644 --- a/ext/lexbor/lexbor/encoding/multi.h +++ b/ext/lexbor/lexbor/encoding/multi.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Alexander Borisov + * Copyright (C) 2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -19,7 +19,7 @@ extern "C" { #include "lexbor/encoding/base.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN LXB_EXTERN lxb_codepoint_t lxb_encoding_multi_big5_map[19782]; LXB_EXTERN lxb_codepoint_t lxb_encoding_multi_euc_kr_map[23750]; LXB_EXTERN lxb_codepoint_t lxb_encoding_multi_gb18030_map[23940]; @@ -53,161 +53,7 @@ LXB_EXTERN uint16_t lxb_encoding_multi_jis0208_167_1106_map[939]; LXB_EXTERN uint16_t lxb_encoding_multi_jis0208_8208_13262_map[5054]; LXB_EXTERN uint16_t lxb_encoding_multi_jis0208_19968_40865_map[20897]; LXB_EXTERN uint16_t lxb_encoding_multi_jis0208_63785_65510_map[1725]; - -lxb_inline uint16_t -lxb_encoding_multi_big5_index(lxb_codepoint_t cp) -{ - if (cp > 0x2F8A7) { - return UINT16_MAX; - } - - if (cp < 65518) { - if (cp >= 167 && cp < 1106) { - return lxb_encoding_multi_big5_167_1106_map[cp - 167]; - } - else if (cp >= 8211) { - if (cp < 40882) { - return lxb_encoding_multi_big5_8211_40882_map[cp - 8211]; - } - else if (cp >= 64012) { - return lxb_encoding_multi_big5_64012_65518_map[cp - 64012]; - } - } - } - else if (cp >= 131210) { - if (cp < 172369) { - return lxb_encoding_multi_big5_131210_172369_map[cp - 131210]; - } - else if (cp >= 194708) { - if (cp < 194727) { - return lxb_encoding_multi_big5_194708_194727_map[cp - 194708]; - } - } - } - - return UINT16_MAX; -} - -lxb_inline uint16_t -lxb_encoding_multi_euc_kr_index(lxb_codepoint_t cp) -{ - if (cp > 0xFFE7) { - return UINT16_MAX; - } - - if (cp < 13278) { - if (cp >= 161 && cp < 1106) { - return lxb_encoding_multi_euc_kr_161_1106_map[cp - 161]; - } - else if (cp >= 8213) { - return lxb_encoding_multi_euc_kr_8213_13278_map[cp - 8213]; - } - } - else if (cp >= 19968) { - if (cp < 55204) { - return lxb_encoding_multi_euc_kr_19968_55204_map[cp - 19968]; - } - else if (cp >= 63744) { - if (cp < 65511) { - return lxb_encoding_multi_euc_kr_63744_65511_map[cp - 63744]; - } - } - } - - return UINT16_MAX; -} - -lxb_inline uint16_t -lxb_encoding_multi_gb18030_index(lxb_codepoint_t cp) -{ - if (cp > 0xFFE6) { - return UINT16_MAX; - } - - if (cp < 40892) { - if (cp >= 164 && cp < 1106) { - return lxb_encoding_multi_gb18030_164_1106_map[cp - 164]; - } - else if (cp >= 7743) { - return lxb_encoding_multi_gb18030_7743_40892_map[cp - 7743]; - } - } - else if (cp >= 57344) { - if (cp < 65510) { - return lxb_encoding_multi_gb18030_57344_65510_map[cp - 57344]; - } - } - - return UINT16_MAX; -} - -lxb_inline uint16_t -lxb_encoding_multi_iso_2022_jp_katakana_index(lxb_codepoint_t cp) -{ - if (cp >= 12289 && cp < 12541) { - return lxb_encoding_multi_iso_2022_jp_katakana_12289_12541_map[cp - 12289]; - } - - return UINT16_MAX; -} - -lxb_inline uint16_t -lxb_encoding_multi_jis0212_index(lxb_codepoint_t cp) -{ - if (cp > 0xFF5F) { - return UINT16_MAX; - } - - if (cp < 8483) { - if (cp >= 161 && cp < 1120) { - return lxb_encoding_multi_jis0212_161_1120_map[cp - 161]; - } - else if (cp >= 8470) { - return lxb_encoding_multi_jis0212_8470_8483_map[cp - 8470]; - } - } - else if (cp >= 19970) { - if (cp < 40870) { - return lxb_encoding_multi_jis0212_19970_40870_map[cp - 19970]; - } - else if (cp >= 65374) { - if (cp < 65375) { - return lxb_encoding_multi_jis0212_65374_65375_map[cp - 65374]; - } - } - } - - return UINT16_MAX; -} - -lxb_inline uint16_t -lxb_encoding_multi_jis0208_index(lxb_codepoint_t cp) -{ - if (cp > 0xFFE6) { - return UINT16_MAX; - } - - if (cp < 13262) { - if (cp >= 167 && cp < 1106) { - return lxb_encoding_multi_jis0208_167_1106_map[cp - 167]; - } - else if (cp >= 8208) { - return lxb_encoding_multi_jis0208_8208_13262_map[cp - 8208]; - } - } - else if (cp >= 19968) { - if (cp < 40865) { - return lxb_encoding_multi_jis0208_19968_40865_map[cp - 19968]; - } - else if (cp >= 63785) { - if (cp < 65510) { - return lxb_encoding_multi_jis0208_63785_65510_map[cp - 63785]; - } - } - } - - return UINT16_MAX; -} +#endif /* !LEXBOR_DISABLE_INTERNAL_EXTERN */ #ifdef __cplusplus diff --git a/ext/lexbor/lexbor/encoding/range.h b/ext/lexbor/lexbor/encoding/range.h index 18b331034423..ed9833d1cce9 100644 --- a/ext/lexbor/lexbor/encoding/range.h +++ b/ext/lexbor/lexbor/encoding/range.h @@ -23,8 +23,9 @@ extern "C" { #define LXB_ENCODING_RANGE_INDEX_GB18030_SIZE 207 - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN LXB_EXTERN const lxb_encoding_range_index_t lxb_encoding_range_index_gb18030[207]; +#endif /* !LEXBOR_DISABLE_INTERNAL_EXTERN */ #ifdef __cplusplus diff --git a/ext/lexbor/lexbor/encoding/res.h b/ext/lexbor/lexbor/encoding/res.h index 46a9f91ae9a9..25334ebd27cf 100644 --- a/ext/lexbor/lexbor/encoding/res.h +++ b/ext/lexbor/lexbor/encoding/res.h @@ -22,10 +22,10 @@ extern "C" { #include "lexbor/encoding/base.h" #include "lexbor/core/shs.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN LXB_EXTERN const lxb_encoding_data_t lxb_encoding_res_map[LXB_ENCODING_LAST_ENTRY]; LXB_EXTERN const lexbor_shs_entry_t lxb_encoding_res_shs_entities[220]; - +#endif /* !LEXBOR_DISABLE_INTERNAL_EXTERN */ #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/encoding/single.h b/ext/lexbor/lexbor/encoding/single.h index 906279bf33e7..c2a4271ac90c 100644 --- a/ext/lexbor/lexbor/encoding/single.h +++ b/ext/lexbor/lexbor/encoding/single.h @@ -51,7 +51,7 @@ extern "C" { #define LXB_ENCODING_SINGLE_HASH_WINDOWS_874_SIZE 359 #define LXB_ENCODING_SINGLE_HASH_X_MAC_CYRILLIC_SIZE 373 - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN LXB_EXTERN const lxb_encoding_single_index_t lxb_encoding_single_index_ibm866[128]; LXB_EXTERN const lxb_encoding_single_index_t lxb_encoding_single_index_iso_8859_10[128]; LXB_EXTERN const lxb_encoding_single_index_t lxb_encoding_single_index_iso_8859_13[128]; @@ -107,6 +107,7 @@ LXB_EXTERN const lexbor_shs_hash_t lxb_encoding_single_hash_windows_1257[356]; LXB_EXTERN const lexbor_shs_hash_t lxb_encoding_single_hash_windows_1258[406]; LXB_EXTERN const lexbor_shs_hash_t lxb_encoding_single_hash_windows_874[360]; LXB_EXTERN const lexbor_shs_hash_t lxb_encoding_single_hash_x_mac_cyrillic[374]; +#endif /* !LEXBOR_DISABLE_INTERNAL_EXTERN */ #ifdef __cplusplus diff --git a/ext/lexbor/lexbor/html/base.h b/ext/lexbor/lexbor/html/base.h index a701dc35c680..570222c6de5e 100644 --- a/ext/lexbor/lexbor/html/base.h +++ b/ext/lexbor/lexbor/html/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -15,7 +15,7 @@ extern "C" { #define LXB_HTML_VERSION_MAJOR 2 -#define LXB_HTML_VERSION_MINOR 6 +#define LXB_HTML_VERSION_MINOR 8 #define LXB_HTML_VERSION_PATCH 0 #define LXB_HTML_VERSION_STRING LEXBOR_STRINGIZE(LXB_HTML_VERSION_MAJOR) "." \ diff --git a/ext/lexbor/lexbor/html/encoding.c b/ext/lexbor/lexbor/html/encoding.c index 5368400dab84..857661246b5c 100644 --- a/ext/lexbor/lexbor/html/encoding.c +++ b/ext/lexbor/lexbor/html/encoding.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -9,6 +9,31 @@ #include "lexbor/core/str.h" +typedef struct { + lexbor_str_t alias; + lexbor_str_t name; +} +lxb_html_encoding_name_t; + +static const lxb_html_encoding_name_t lxb_html_encoding_names[] = { + /* UTF-16BE */ + { lexbor_str("unicodefffe"), lexbor_str("UTF-8") }, + { lexbor_str("utf-16be"), lexbor_str("UTF-8") }, + + /* UTF-16LE */ + { lexbor_str("csunicode"), lexbor_str("UTF-8") }, + { lexbor_str("iso-10646-ucs-2"), lexbor_str("UTF-8") }, + { lexbor_str("ucs-2"), lexbor_str("UTF-8") }, + { lexbor_str("unicode"), lexbor_str("UTF-8") }, + { lexbor_str("unicodefeff"), lexbor_str("UTF-8") }, + { lexbor_str("utf-16"), lexbor_str("UTF-8") }, + { lexbor_str("utf-16le"), lexbor_str("UTF-8") }, + + /* x-user-defined */ + { lexbor_str("x-user-defined"), lexbor_str("windows-1252") } +}; + + static const lxb_char_t * lxb_html_encoding_meta(lxb_html_encoding_t *em, const lxb_char_t *data, const lxb_char_t *end); @@ -99,6 +124,73 @@ lxb_html_encoding_destroy(lxb_html_encoding_t *em, bool self_destroy) return em; } +const lxb_char_t * +lxb_html_encoding_prescan(lxb_html_encoding_t *em, const lxb_char_t *data, + const lxb_char_t *end, size_t *out_length) +{ + size_t len, length; + lxb_status_t status; + lxb_html_encoding_entry_t *entry; + const lxb_html_encoding_name_t *name; + + static const lexbor_str_t lxb_html_encoding_utf_16le = lexbor_str("UTF-16LE"); + static const lexbor_str_t lxb_html_encoding_utf_16be = lexbor_str("UTF-16BE"); + + len = end - data; + + /* Prescan for UTF-16 XML declarations: If position points to. */ + if (len >= 6) { + if (data[0] == 0x3C && data[1] == 0x00 && data[2] == 0x3F + && data[3] == 0x00 && data[4] == 0x78 && data[5] == 0x00) + { + *out_length = lxb_html_encoding_utf_16le.length; + return lxb_html_encoding_utf_16le.data; + } + + if (data[0] == 0x00 && data[1] == 0x3C && data[2] == 0x00 + && data[3] == 0x3F && data[4] == 0x00 && data[5] == 0x78) + { + *out_length = lxb_html_encoding_utf_16be.length; + return lxb_html_encoding_utf_16be.data; + } + } + + status = lxb_html_encoding_determine(em, data, end); + if (status != LXB_STATUS_OK) { + goto EMPTY; + } + + if (lxb_html_encoding_meta_length(em) == 0) { + goto EMPTY; + } + + entry = lxb_html_encoding_meta_entry(em, 0); + len = entry->end - entry->name; + length = sizeof(lxb_html_encoding_names) / sizeof(lxb_html_encoding_name_t); + + for (size_t i = 0; i < length; i++) { + name = &lxb_html_encoding_names[i]; + + if (len == name->alias.length + && lexbor_str_data_ncasecmp(entry->name, name->alias.data, + name->alias.length)) + { + *out_length = lxb_html_encoding_names[i].name.length; + return lxb_html_encoding_names[i].name.data; + } + } + + *out_length = entry->end - entry->name; + + return entry->name; + +EMPTY: + + *out_length = 0; + + return NULL; +} + lxb_status_t lxb_html_encoding_determine(lxb_html_encoding_t *em, const lxb_char_t *data, const lxb_char_t *end) @@ -381,12 +473,12 @@ lxb_html_encoding_content(const lxb_char_t *data, const lxb_char_t *end, for (; data < end; data++) { if (*data == **name_end) { - break; + *name_end = data; + goto done; } } - *name_end = data; - goto done; + return NULL; } name = data; diff --git a/ext/lexbor/lexbor/html/encoding.h b/ext/lexbor/lexbor/html/encoding.h index ec65778f715e..ad5a6198f945 100644 --- a/ext/lexbor/lexbor/html/encoding.h +++ b/ext/lexbor/lexbor/html/encoding.h @@ -1,5 +1,14 @@ /* - * Copyright (C) 2019 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov + * + * Functions for detecting encoding in an HTML byte stream. + * + * The HTML parser accepts only UTF-8 input. The detected encoding can be used + * with the Encoding module to convert the original byte stream from its + * encoding to UTF-8 before passing it to the parser. + * + * By specification: + * https://html.spec.whatwg.org/#determining-the-character-encoding * * Author: Alexander Borisov */ @@ -12,12 +21,13 @@ extern "C" { #endif #include "lexbor/html/base.h" - #include "lexbor/core/array_obj.h" typedef struct { + /* Pointer to the beginning of the encoding name in the original data. */ const lxb_char_t *name; + /* Pointer to the end of the encoding name in the original data. */ const lxb_char_t *end; } lxb_html_encoding_entry_t; @@ -29,17 +39,101 @@ typedef struct { lxb_html_encoding_t; +/* + * Initialization of the lxb_html_encoding_t object. + * + * The object can be allocated on the stack or created using + * lxb_html_encoding_create() function. + * + * @param[in] lxb_html_encoding_t * + * + * @return LXB_STATUS_OK if successful, otherwise an error status value. + */ LXB_API lxb_status_t lxb_html_encoding_init(lxb_html_encoding_t *em); +/* + * Destruction of the lxb_html_encoding_t object. + * + * Releases internal resources of the object. + * If the object was created using lxb_html_encoding_create(), set self_destroy + * to true. + * + * @param[in] lxb_html_encoding_t * + * @param[in] If true, the object itself will be freed. + * + * @return NULL if self_destroy is true. Pointer to the object if false. + */ LXB_API lxb_html_encoding_t * lxb_html_encoding_destroy(lxb_html_encoding_t *em, bool self_destroy); +/* + * Prescan a byte stream to determine its encoding. + * + * By specification: + * https://html.spec.whatwg.org/#prescan-a-byte-stream-to-determine-its-encoding + * + * Returns the validated encoding name if found, or NULL otherwise. + * + * Important: + * The returned pointer is not guaranteed to point into the input data stream. + * It may reference an internal static string (e.g. when the found encoding name + * is matched against a known alias). Do not assume the returned pointer lies + * within the [data, end) range. + * + * @param[in] lxb_html_encoding_t *. Not NULL. + * @param[in] Pointer to the beginning of the data. Not NULL. + * @param[in] Pointer to the end of the data. Not NULL. + * @param[out] Length of the returned encoding name. Not NULL. + * + * @return Pointer to the encoding name, or NULL if no encoding was found. + */ +LXB_API const lxb_char_t * +lxb_html_encoding_prescan(lxb_html_encoding_t *em, const lxb_char_t *data, + const lxb_char_t *end, size_t *out_length); +/* + * Prescan a byte stream to determine its encoding. + * + * Implementation of the HTML specification algorithm for extracting encoding + * from tags. Scans raw HTML bytes looking for and + * declarations. + * + * Results can be retrieved using lxb_html_encoding_meta_entry() and + * lxb_html_encoding_meta_length() functions. + * + * Important: + * The HTML specification requires that if the determined charset is + * UTF-16BE/LE, it must be replaced with UTF-8, and if it is x-user-defined, + * it must be replaced with windows-1252. This function does not perform these + * replacements because it returns pointers to the original data (start and end + * of the found encoding name), which can be useful for developers. To get the + * validated encoding according to the specification, use the + * lxb_encoding_data_prescan_validate()/lxb_encoding_prescan_validate() + * functions from the Encoding module, or handle these cases manually. + * + * @param[in] lxb_html_encoding_t *. Not NULL. + * @param[in] Pointer to the beginning of the data. Not NULL. + * @param[in] Pointer to the end of the data. Not NULL. + * + * @return LXB_STATUS_OK if successful, otherwise an error status value. + */ LXB_API lxb_status_t lxb_html_encoding_determine(lxb_html_encoding_t *em, const lxb_char_t *data, const lxb_char_t *end); +/* + * Extract encoding name from a Content-Type string. + * + * Parses the value of a content attribute looking for "charset=" + * pattern. For example, from "text/html; charset=utf-8" extracts "utf-8". + * + * @param[in] Pointer to the beginning of the content string. Not NULL. + * @param[in] Pointer to the end of the content string. Not NULL. + * @param[out] Pointer to the end of the encoding name. Not NULL. + * + * @return Pointer to the beginning of the encoding name, or NULL if not found. + */ LXB_API const lxb_char_t * lxb_html_encoding_content(const lxb_char_t *data, const lxb_char_t *end, const lxb_char_t **name_end); @@ -48,6 +142,14 @@ lxb_html_encoding_content(const lxb_char_t *data, const lxb_char_t *end, /* * Inline functions */ + +/* + * Create an lxb_html_encoding_t object on the heap. + * + * The object must be initialized using lxb_html_encoding_init() after creation. + * + * @return Pointer to a new object, or NULL if memory allocation failed. + */ lxb_inline lxb_html_encoding_t * lxb_html_encoding_create(void) { @@ -55,6 +157,14 @@ lxb_html_encoding_create(void) sizeof(lxb_html_encoding_t)); } +/* + * Clean the lxb_html_encoding_t object for reuse. + * + * Resets internal state so the object can be used for a new prescan without + * reallocation. Does not free memory. + * + * @param[in] lxb_html_encoding_t *. Not NULL. + */ lxb_inline void lxb_html_encoding_clean(lxb_html_encoding_t *em) { @@ -62,18 +172,45 @@ lxb_html_encoding_clean(lxb_html_encoding_t *em) lexbor_array_obj_clean(&em->result); } +/* + * Get an encoding entry from the results by index. + * + * Returns a pointer to the lxb_html_encoding_entry_t which contains pointers + * to the beginning and end of the encoding name in the original data. + * + * @param[in] lxb_html_encoding_t *. Not NULL. + * @param[in] Index of the entry. + * + * @return Pointer to the entry, or NULL if the index is out of bounds. + */ lxb_inline lxb_html_encoding_entry_t * lxb_html_encoding_meta_entry(lxb_html_encoding_t *em, size_t idx) { return (lxb_html_encoding_entry_t *) lexbor_array_obj_get(&em->result, idx); } +/* + * Get the number of encoding entries found. + * + * @param[in] lxb_html_encoding_t *. Not NULL. + * + * @return Number of entries in the result. + */ lxb_inline size_t lxb_html_encoding_meta_length(lxb_html_encoding_t *em) { return lexbor_array_obj_length(&em->result); } +/* + * Get the result array object directly. + * + * Returns the internal array of lxb_html_encoding_entry_t entries. + * + * @param[in] lxb_html_encoding_t *. Not NULL. + * + * @return Pointer to the lexbor_array_obj_t with results. + */ lxb_inline lexbor_array_obj_t * lxb_html_encoding_meta_result(lxb_html_encoding_t *em) { diff --git a/ext/lexbor/lexbor/html/interface.c b/ext/lexbor/lexbor/html/interface.c index 1e7156d92a41..1b2a57c813e9 100644 --- a/ext/lexbor/lexbor/html/interface.c +++ b/ext/lexbor/lexbor/html/interface.c @@ -26,30 +26,33 @@ lxb_html_interface_create(lxb_html_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns) { lxb_dom_node_t *node; + lxb_dom_element_t *domel; + lxb_html_unknown_element_t *unel; if (tag_id >= LXB_TAG__LAST_ENTRY) { if (ns == LXB_NS_HTML) { - lxb_html_unknown_element_t *unel; - unel = lxb_html_unknown_element_interface_create(document); node = lxb_dom_interface_node(unel); } else if (ns == LXB_NS_SVG) { /* TODO: For this need implement SVGElement */ - lxb_dom_element_t *domel; domel = lxb_dom_element_interface_create(&document->dom_document); node = lxb_dom_interface_node(domel); } else { - lxb_dom_element_t *domel; - domel = lxb_dom_element_interface_create(&document->dom_document); node = lxb_dom_interface_node(domel); } } else { - node = lxb_html_interface_res_constructors[tag_id][ns](document); + if (ns < LXB_NS__LAST_ENTRY) { + node = lxb_html_interface_res_constructors[tag_id][ns](document); + } + else { + domel = lxb_dom_element_interface_create(&document->dom_document); + node = lxb_dom_interface_node(domel); + } } if (node == NULL) { diff --git a/ext/lexbor/lexbor/html/interface.h b/ext/lexbor/lexbor/html/interface.h index a58a9e7474d7..503bef6345ac 100644 --- a/ext/lexbor/lexbor/html/interface.h +++ b/ext/lexbor/lexbor/html/interface.h @@ -71,6 +71,7 @@ extern "C" { #define lxb_html_interface_quote(obj) ((lxb_html_quote_element_t *) (obj)) #define lxb_html_interface_script(obj) ((lxb_html_script_element_t *) (obj)) #define lxb_html_interface_select(obj) ((lxb_html_select_element_t *) (obj)) +#define lxb_html_interface_selectedcontent(obj) ((lxb_html_selectedcontent_element_t *) obj) #define lxb_html_interface_slot(obj) ((lxb_html_slot_element_t *) (obj)) #define lxb_html_interface_source(obj) ((lxb_html_source_element_t *) (obj)) #define lxb_html_interface_span(obj) ((lxb_html_span_element_t *) (obj)) @@ -146,6 +147,8 @@ typedef struct lxb_html_progress_element lxb_html_progress_element_t; typedef struct lxb_html_quote_element lxb_html_quote_element_t; typedef struct lxb_html_script_element lxb_html_script_element_t; typedef struct lxb_html_select_element lxb_html_select_element_t; +typedef struct lxb_html_selectedcontent_element lxb_html_selectedcontent_element_t; +typedef struct lxb_html_search_element lxb_html_search_element_t; typedef struct lxb_html_slot_element lxb_html_slot_element_t; typedef struct lxb_html_source_element lxb_html_source_element_t; typedef struct lxb_html_span_element lxb_html_span_element_t; diff --git a/ext/lexbor/lexbor/html/interface_res.h b/ext/lexbor/lexbor/html/interface_res.h index 980be3c7de01..8a2f765c30ff 100644 --- a/ext/lexbor/lexbor/html/interface_res.h +++ b/ext/lexbor/lexbor/html/interface_res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2025 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -14,12 +14,10 @@ #ifndef LXB_HTML_INTERFACE_RES_H #define LXB_HTML_INTERFACE_RES_H -#endif /* LXB_HTML_INTERFACE_RES_H */ - #ifdef LXB_TAG_CONST_VERSION -#ifndef LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 +#ifndef LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 #error Mismatched tags version! See "lexbor/tag/const.h". -#endif /* LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 */ +#endif /* LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 */ #else #error You need to include "lexbor/tag/const.h". #endif /* LXB_TAG_CONST_VERSION */ @@ -97,7 +95,9 @@ #include "lexbor/html/interfaces/progress_element.h" #include "lexbor/html/interfaces/quote_element.h" #include "lexbor/html/interfaces/script_element.h" +#include "lexbor/html/interfaces/search_element.h" #include "lexbor/html/interfaces/select_element.h" +#include "lexbor/html/interfaces/selectedcontent_element.h" #include "lexbor/html/interfaces/slot_element.h" #include "lexbor/html/interfaces/source_element.h" #include "lexbor/html/interfaces/span_element.h" @@ -130,18 +130,6 @@ lxb_dom_element_interface_destroy_wrapper(void *interface) return lxb_dom_element_interface_destroy(interface); } -lxb_inline void * -lxb_html_unknown_element_interface_create_wrapper(void *interface) -{ - return lxb_html_unknown_element_interface_create(interface); -} - -lxb_inline void * -lxb_html_unknown_element_interface_destroy_wrapper(void *interface) -{ - return lxb_html_unknown_element_interface_destroy(interface); -} - lxb_inline void * lxb_html_element_interface_create_wrapper(void *interface) { @@ -166,6 +154,18 @@ lxb_dom_text_interface_destroy_wrapper(void *interface) return lxb_dom_text_interface_destroy(interface); } +lxb_inline void * +lxb_dom_document_interface_create_wrapper(void *interface) +{ + return lxb_dom_document_interface_create(interface); +} + +lxb_inline void * +lxb_dom_document_interface_destroy_wrapper(void *interface) +{ + return lxb_dom_document_interface_destroy(interface); +} + lxb_inline void * lxb_html_document_interface_create_wrapper(void *interface) { @@ -214,6 +214,18 @@ lxb_html_anchor_element_interface_destroy_wrapper(void *interface) return lxb_html_anchor_element_interface_destroy(interface); } +lxb_inline void * +lxb_html_unknown_element_interface_create_wrapper(void *interface) +{ + return lxb_html_unknown_element_interface_create(interface); +} + +lxb_inline void * +lxb_html_unknown_element_interface_destroy_wrapper(void *interface) +{ + return lxb_html_unknown_element_interface_destroy(interface); +} + lxb_inline void * lxb_html_area_element_interface_create_wrapper(void *interface) { @@ -826,6 +838,18 @@ lxb_html_script_element_interface_destroy_wrapper(void *interface) return lxb_html_script_element_interface_destroy(interface); } +lxb_inline void * +lxb_html_search_element_interface_create_wrapper(void *interface) +{ + return lxb_html_search_element_interface_create(interface); +} + +lxb_inline void * +lxb_html_search_element_interface_destroy_wrapper(void *interface) +{ + return lxb_html_search_element_interface_destroy(interface); +} + lxb_inline void * lxb_html_select_element_interface_create_wrapper(void *interface) { @@ -838,6 +862,18 @@ lxb_html_select_element_interface_destroy_wrapper(void *interface) return lxb_html_select_element_interface_destroy(interface); } +lxb_inline void * +lxb_html_selectedcontent_element_interface_create_wrapper(void *interface) +{ + return lxb_html_selectedcontent_element_interface_create(interface); +} + +lxb_inline void * +lxb_html_selectedcontent_element_interface_destroy_wrapper(void *interface) +{ + return lxb_html_selectedcontent_element_interface_destroy(interface); +} + lxb_inline void * lxb_html_slot_element_interface_create_wrapper(void *interface) { @@ -1019,15 +1055,12 @@ lxb_html_video_element_interface_destroy_wrapper(void *interface) } -#ifdef LXB_HTML_INTERFACE_RES_CONSTRUCTORS -#ifndef LXB_HTML_INTERFACE_RES_CONSTRUCTORS_ENABLED -#define LXB_HTML_INTERFACE_RES_CONSTRUCTORS_ENABLED static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY] = { /* LXB_TAG__UNDEF */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1037,8 +1070,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG__END_OF_FILE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1048,52 +1081,52 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG__TEXT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper + (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_text_interface_create_wrapper }, /* LXB_TAG__DOCUMENT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_document_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_interface_create_wrapper }, /* LXB_TAG__EM_COMMENT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper + (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_comment_interface_create_wrapper }, /* LXB_TAG__EM_DOCTYPE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_document_type_interface_create_wrapper }, /* LXB_TAG_A */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_anchor_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1103,8 +1136,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ABBR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1114,8 +1147,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ACRONYM */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1125,8 +1158,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ADDRESS */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1136,8 +1169,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ALTGLYPH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1147,8 +1180,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ALTGLYPHDEF */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1158,8 +1191,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ALTGLYPHITEM */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1169,8 +1202,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ANIMATECOLOR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1180,8 +1213,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ANIMATEMOTION */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1191,8 +1224,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ANIMATETRANSFORM */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1202,8 +1235,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ANNOTATION_XML */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1213,8 +1246,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_APPLET */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1224,8 +1257,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_AREA */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_area_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1235,8 +1268,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ARTICLE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1246,8 +1279,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ASIDE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1257,8 +1290,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_AUDIO */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_audio_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1268,8 +1301,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_B */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1279,8 +1312,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BASE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_base_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1290,8 +1323,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BASEFONT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1301,8 +1334,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BDI */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1312,8 +1345,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BDO */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1323,8 +1356,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BGSOUND */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1334,8 +1367,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BIG */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1345,8 +1378,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BLINK */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1356,8 +1389,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BLOCKQUOTE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_quote_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1367,8 +1400,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BODY */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_body_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1378,8 +1411,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_br_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1389,8 +1422,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_BUTTON */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_button_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1400,8 +1433,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_CANVAS */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_canvas_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1411,8 +1444,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_CAPTION */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_caption_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1422,8 +1455,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_CENTER */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1433,8 +1466,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_CITE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1444,8 +1477,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_CLIPPATH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1455,8 +1488,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_CODE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1466,8 +1499,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_COL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_col_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1477,8 +1510,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_COLGROUP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_col_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1488,8 +1521,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DATA */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_data_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1499,8 +1532,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DATALIST */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_data_list_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1510,8 +1543,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DD */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1521,8 +1554,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DEL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_mod_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1532,8 +1565,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DESC */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1543,8 +1576,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DETAILS */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_details_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1554,8 +1587,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DFN */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1565,8 +1598,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DIALOG */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_dialog_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1576,8 +1609,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DIR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_directory_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1587,8 +1620,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DIV */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_div_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1598,8 +1631,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_d_list_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1609,8 +1642,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_DT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1620,8 +1653,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_EM */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1631,8 +1664,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_EMBED */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_embed_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1642,8 +1675,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEBLEND */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1653,8 +1686,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FECOLORMATRIX */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1664,8 +1697,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FECOMPONENTTRANSFER */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1675,8 +1708,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FECOMPOSITE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1686,8 +1719,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FECONVOLVEMATRIX */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1697,8 +1730,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEDIFFUSELIGHTING */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1708,8 +1741,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEDISPLACEMENTMAP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1719,8 +1752,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEDISTANTLIGHT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1730,8 +1763,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEDROPSHADOW */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1741,8 +1774,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEFLOOD */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1752,8 +1785,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEFUNCA */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1763,8 +1796,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEFUNCB */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1774,8 +1807,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEFUNCG */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1785,8 +1818,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEFUNCR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1796,8 +1829,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEGAUSSIANBLUR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1807,8 +1840,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEIMAGE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1818,8 +1851,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEMERGE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1829,8 +1862,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEMERGENODE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1840,8 +1873,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEMORPHOLOGY */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1851,8 +1884,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEOFFSET */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1862,8 +1895,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FEPOINTLIGHT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1873,8 +1906,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FESPECULARLIGHTING */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1884,8 +1917,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FESPOTLIGHT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1895,8 +1928,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FETILE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1906,8 +1939,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FETURBULENCE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1917,8 +1950,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FIELDSET */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_field_set_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1928,8 +1961,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FIGCAPTION */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1939,8 +1972,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FIGURE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1950,8 +1983,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FONT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_font_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1961,8 +1994,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FOOTER */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1972,8 +2005,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FOREIGNOBJECT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1983,8 +2016,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FORM */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_form_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -1994,8 +2027,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FRAME */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_frame_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2005,8 +2038,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_FRAMESET */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_frame_set_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2016,8 +2049,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_GLYPHREF */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2027,8 +2060,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_H1 */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_heading_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2038,8 +2071,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_H2 */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_heading_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2049,8 +2082,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_H3 */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_heading_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2060,8 +2093,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_H4 */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_heading_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2071,8 +2104,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_H5 */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_heading_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2082,8 +2115,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_H6 */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_heading_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2093,8 +2126,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_HEAD */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_head_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2104,8 +2137,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_HEADER */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2115,8 +2148,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_HGROUP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2126,8 +2159,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_HR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_hr_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2137,8 +2170,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_HTML */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2148,8 +2181,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_I */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2159,8 +2192,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_IFRAME */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_iframe_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2170,8 +2203,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_IMAGE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_image_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2181,8 +2214,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_IMG */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_image_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2192,8 +2225,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_INPUT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_input_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2203,8 +2236,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_INS */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_mod_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2214,8 +2247,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_ISINDEX */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2225,8 +2258,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_KBD */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2236,8 +2269,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_KEYGEN */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2247,8 +2280,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_LABEL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_label_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2258,8 +2291,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_LEGEND */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_legend_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2269,8 +2302,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_LI */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_li_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2280,8 +2313,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_LINEARGRADIENT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2291,8 +2324,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_LINK */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_link_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2302,8 +2335,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_LISTING */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_pre_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2313,8 +2346,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MAIN */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2324,8 +2357,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MALIGNMARK */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2335,8 +2368,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MAP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_map_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2346,8 +2379,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MARK */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2357,8 +2390,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MARQUEE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_marquee_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2368,8 +2401,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MATH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2379,8 +2412,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MENU */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_menu_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2390,8 +2423,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_META */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_meta_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2401,8 +2434,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_METER */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_meter_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2412,8 +2445,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MFENCED */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2423,8 +2456,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MGLYPH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2434,8 +2467,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MI */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2445,8 +2478,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MN */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2456,8 +2489,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MO */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2467,8 +2500,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MS */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2478,8 +2511,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MTEXT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2489,8 +2522,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_MULTICOL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2500,8 +2533,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_NAV */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2511,8 +2544,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_NEXTID */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2522,8 +2555,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_NOBR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2533,8 +2566,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_NOEMBED */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2544,8 +2577,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_NOFRAMES */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2555,8 +2588,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_NOSCRIPT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2566,8 +2599,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_OBJECT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_object_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2577,8 +2610,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_OL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_o_list_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2588,8 +2621,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_OPTGROUP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_opt_group_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2599,8 +2632,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_OPTION */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_option_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2610,8 +2643,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_OUTPUT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_output_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2621,8 +2654,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_P */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_paragraph_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2632,8 +2665,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_PARAM */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_param_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2643,8 +2676,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_PATH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2654,8 +2687,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_PICTURE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_picture_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2665,8 +2698,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_PLAINTEXT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2676,8 +2709,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_PRE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_pre_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2687,8 +2720,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_PROGRESS */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_progress_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2698,8 +2731,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_Q */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_quote_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2709,8 +2742,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_RADIALGRADIENT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2720,8 +2753,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_RB */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2731,8 +2764,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_RP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2742,8 +2775,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_RT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2753,8 +2786,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_RTC */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2764,8 +2797,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_RUBY */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2775,8 +2808,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_S */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2786,8 +2819,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SAMP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2797,8 +2830,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SCRIPT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_script_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2806,10 +2839,21 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper }, + /* LXB_TAG_SEARCH */ + { + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_html_search_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper + }, /* LXB_TAG_SECTION */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2819,8 +2863,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SELECT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_select_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2828,10 +2872,21 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper }, + /* LXB_TAG_SELECTEDCONTENT */ + { + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_html_selectedcontent_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper + }, /* LXB_TAG_SLOT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_slot_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2841,8 +2896,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SMALL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2852,8 +2907,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SOURCE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_source_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2863,8 +2918,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SPACER */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2874,8 +2929,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SPAN */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_span_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2885,8 +2940,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_STRIKE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2896,8 +2951,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_STRONG */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2907,8 +2962,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_STYLE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_style_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2918,8 +2973,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SUB */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2929,8 +2984,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SUMMARY */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2940,8 +2995,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SUP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2951,8 +3006,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_SVG */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2962,8 +3017,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TABLE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2973,8 +3028,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TBODY */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_section_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2984,8 +3039,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TD */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_cell_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -2995,8 +3050,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TEMPLATE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_template_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3006,8 +3061,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TEXTAREA */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_text_area_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3017,8 +3072,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TEXTPATH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3028,8 +3083,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TFOOT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_section_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3039,8 +3094,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TH */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_cell_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3050,8 +3105,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_THEAD */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_section_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3061,8 +3116,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TIME */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_time_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3072,8 +3127,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TITLE */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_title_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3083,8 +3138,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_table_row_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3094,8 +3149,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TRACK */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_track_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3105,8 +3160,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_TT */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3116,8 +3171,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_U */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3127,8 +3182,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_UL */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_u_list_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3138,8 +3193,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_VAR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3149,8 +3204,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_VIDEO */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_video_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3160,8 +3215,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_WBR */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3171,8 +3226,8 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ }, /* LXB_TAG_XMP */ { - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, - (lxb_dom_interface_constructor_f) lxb_html_unknown_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, + (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_html_pre_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper, @@ -3181,18 +3236,13 @@ static lxb_dom_interface_constructor_f lxb_html_interface_res_constructors[LXB_ (lxb_dom_interface_constructor_f) lxb_dom_element_interface_create_wrapper } }; -#endif /* LXB_HTML_INTERFACE_RES_CONSTRUCTORS_ENABLED */ -#endif /* LXB_HTML_INTERFACE_RES_CONSTRUCTORS */ -#ifdef LXB_HTML_INTERFACE_RES_DESTRUCTOR -#ifndef LXB_HTML_INTERFACE_RES_DESTRUCTOR_ENABLED -#define LXB_HTML_INTERFACE_RES_DESTRUCTOR_ENABLED static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY] = { /* LXB_TAG__UNDEF */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3202,8 +3252,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG__END_OF_FILE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3213,52 +3263,52 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG__TEXT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper + (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_text_interface_destroy_wrapper }, /* LXB_TAG__DOCUMENT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_document_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_interface_destroy_wrapper }, /* LXB_TAG__EM_COMMENT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper + (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_comment_interface_destroy_wrapper }, /* LXB_TAG__EM_DOCTYPE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_document_type_interface_destroy_wrapper }, /* LXB_TAG_A */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_anchor_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3268,8 +3318,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ABBR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3279,8 +3329,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ACRONYM */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3290,8 +3340,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ADDRESS */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3301,8 +3351,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ALTGLYPH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3312,8 +3362,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ALTGLYPHDEF */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3323,8 +3373,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ALTGLYPHITEM */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3334,8 +3384,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ANIMATECOLOR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3345,8 +3395,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ANIMATEMOTION */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3356,8 +3406,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ANIMATETRANSFORM */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3367,8 +3417,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ANNOTATION_XML */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3378,8 +3428,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_APPLET */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3389,8 +3439,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_AREA */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_area_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3400,8 +3450,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ARTICLE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3411,8 +3461,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ASIDE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3422,8 +3472,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_AUDIO */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_audio_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3433,8 +3483,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_B */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3444,8 +3494,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BASE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_base_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3455,8 +3505,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BASEFONT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3466,8 +3516,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BDI */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3477,8 +3527,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BDO */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3488,8 +3538,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BGSOUND */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3499,8 +3549,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BIG */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3510,8 +3560,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BLINK */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3521,8 +3571,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BLOCKQUOTE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_quote_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3532,8 +3582,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BODY */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_body_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3543,8 +3593,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_br_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3554,8 +3604,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_BUTTON */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_button_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3565,8 +3615,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_CANVAS */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_canvas_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3576,8 +3626,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_CAPTION */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_caption_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3587,8 +3637,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_CENTER */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3598,8 +3648,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_CITE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3609,8 +3659,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_CLIPPATH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3620,8 +3670,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_CODE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3631,8 +3681,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_COL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_col_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3642,8 +3692,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_COLGROUP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_col_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3653,8 +3703,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DATA */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_data_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3664,8 +3714,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DATALIST */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_data_list_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3675,8 +3725,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DD */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3686,8 +3736,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DEL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_mod_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3697,8 +3747,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DESC */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3708,8 +3758,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DETAILS */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_details_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3719,8 +3769,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DFN */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3730,8 +3780,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DIALOG */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_dialog_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3741,8 +3791,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DIR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_directory_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3752,8 +3802,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DIV */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_div_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3763,8 +3813,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_d_list_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3774,8 +3824,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_DT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3785,8 +3835,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_EM */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3796,8 +3846,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_EMBED */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_embed_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3807,8 +3857,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEBLEND */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3818,8 +3868,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FECOLORMATRIX */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3829,8 +3879,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FECOMPONENTTRANSFER */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3840,8 +3890,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FECOMPOSITE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3851,8 +3901,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FECONVOLVEMATRIX */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3862,8 +3912,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEDIFFUSELIGHTING */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3873,8 +3923,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEDISPLACEMENTMAP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3884,8 +3934,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEDISTANTLIGHT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3895,8 +3945,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEDROPSHADOW */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3906,8 +3956,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEFLOOD */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3917,8 +3967,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEFUNCA */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3928,8 +3978,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEFUNCB */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3939,8 +3989,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEFUNCG */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3950,8 +4000,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEFUNCR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3961,8 +4011,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEGAUSSIANBLUR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3972,8 +4022,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEIMAGE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3983,8 +4033,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEMERGE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -3994,8 +4044,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEMERGENODE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4005,8 +4055,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEMORPHOLOGY */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4016,8 +4066,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEOFFSET */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4027,8 +4077,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FEPOINTLIGHT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4038,8 +4088,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FESPECULARLIGHTING */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4049,8 +4099,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FESPOTLIGHT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4060,8 +4110,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FETILE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4071,8 +4121,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FETURBULENCE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4082,8 +4132,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FIELDSET */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_field_set_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4093,8 +4143,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FIGCAPTION */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4104,8 +4154,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FIGURE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4115,8 +4165,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FONT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_font_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4126,8 +4176,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FOOTER */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4137,8 +4187,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FOREIGNOBJECT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4148,8 +4198,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FORM */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_form_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4159,8 +4209,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FRAME */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_frame_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4170,8 +4220,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_FRAMESET */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_frame_set_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4181,8 +4231,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_GLYPHREF */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4192,8 +4242,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_H1 */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_heading_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4203,8 +4253,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_H2 */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_heading_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4214,8 +4264,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_H3 */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_heading_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4225,8 +4275,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_H4 */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_heading_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4236,8 +4286,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_H5 */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_heading_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4247,8 +4297,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_H6 */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_heading_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4258,8 +4308,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_HEAD */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_head_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4269,8 +4319,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_HEADER */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4280,8 +4330,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_HGROUP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4291,8 +4341,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_HR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_hr_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4302,8 +4352,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_HTML */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4313,8 +4363,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_I */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4324,8 +4374,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_IFRAME */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_iframe_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4335,8 +4385,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_IMAGE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_image_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4346,8 +4396,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_IMG */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_image_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4357,8 +4407,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_INPUT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_input_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4368,8 +4418,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_INS */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_mod_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4379,8 +4429,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_ISINDEX */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4390,8 +4440,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_KBD */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4401,8 +4451,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_KEYGEN */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4412,8 +4462,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_LABEL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_label_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4423,8 +4473,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_LEGEND */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_legend_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4434,8 +4484,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_LI */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_li_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4445,8 +4495,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_LINEARGRADIENT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4456,8 +4506,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_LINK */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_link_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4467,8 +4517,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_LISTING */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_pre_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4478,8 +4528,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MAIN */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4489,8 +4539,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MALIGNMARK */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4500,8 +4550,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MAP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_map_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4511,8 +4561,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MARK */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4522,8 +4572,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MARQUEE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_marquee_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4533,8 +4583,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MATH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4544,8 +4594,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MENU */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_menu_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4555,8 +4605,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_META */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_meta_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4566,8 +4616,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_METER */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_meter_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4577,8 +4627,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MFENCED */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4588,8 +4638,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MGLYPH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4599,8 +4649,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MI */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4610,8 +4660,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MN */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4621,8 +4671,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MO */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4632,8 +4682,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MS */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4643,8 +4693,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MTEXT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4654,8 +4704,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_MULTICOL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4665,8 +4715,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_NAV */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4676,8 +4726,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_NEXTID */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4687,8 +4737,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_NOBR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4698,8 +4748,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_NOEMBED */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4709,8 +4759,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_NOFRAMES */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4720,8 +4770,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_NOSCRIPT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4731,8 +4781,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_OBJECT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_object_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4742,8 +4792,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_OL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_o_list_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4753,8 +4803,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_OPTGROUP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_opt_group_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4764,8 +4814,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_OPTION */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_option_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4775,8 +4825,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_OUTPUT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_output_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4786,8 +4836,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_P */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_paragraph_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4797,8 +4847,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_PARAM */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_param_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4808,8 +4858,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_PATH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4819,8 +4869,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_PICTURE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_picture_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4830,8 +4880,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_PLAINTEXT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4841,8 +4891,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_PRE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_pre_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4852,8 +4902,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_PROGRESS */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_progress_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4863,8 +4913,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_Q */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_quote_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4874,8 +4924,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_RADIALGRADIENT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4885,8 +4935,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_RB */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4896,8 +4946,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_RP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4907,8 +4957,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_RT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4918,8 +4968,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_RTC */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4929,8 +4979,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_RUBY */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4940,8 +4990,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_S */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4951,8 +5001,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SAMP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4962,8 +5012,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SCRIPT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_script_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4971,10 +5021,21 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper }, + /* LXB_TAG_SEARCH */ + { + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_html_search_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper + }, /* LXB_TAG_SECTION */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4984,8 +5045,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SELECT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_select_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -4993,10 +5054,21 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper }, + /* LXB_TAG_SELECTEDCONTENT */ + { + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_html_selectedcontent_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper + }, /* LXB_TAG_SLOT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_slot_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5006,8 +5078,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SMALL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5017,8 +5089,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SOURCE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_source_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5028,8 +5100,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SPACER */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5039,8 +5111,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SPAN */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_span_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5050,8 +5122,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_STRIKE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5061,8 +5133,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_STRONG */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5072,8 +5144,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_STYLE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_style_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5083,8 +5155,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SUB */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5094,8 +5166,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SUMMARY */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5105,8 +5177,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SUP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5116,8 +5188,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_SVG */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5127,8 +5199,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TABLE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5138,8 +5210,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TBODY */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_section_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5149,8 +5221,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TD */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_cell_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5160,8 +5232,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TEMPLATE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_template_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5171,8 +5243,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TEXTAREA */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_text_area_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5182,8 +5254,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TEXTPATH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5193,8 +5265,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TFOOT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_section_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5204,8 +5276,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TH */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_cell_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5215,8 +5287,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_THEAD */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_section_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5226,8 +5298,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TIME */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_time_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5237,8 +5309,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TITLE */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_title_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5248,8 +5320,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_table_row_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5259,8 +5331,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TRACK */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_track_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5270,8 +5342,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_TT */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5281,8 +5353,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_U */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5292,8 +5364,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_UL */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_u_list_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5303,8 +5375,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_VAR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5314,8 +5386,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_VIDEO */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_video_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5325,8 +5397,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_WBR */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5336,8 +5408,8 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG }, /* LXB_TAG_XMP */ { - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, - (lxb_dom_interface_destructor_f) lxb_html_unknown_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, + (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_html_pre_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper, @@ -5346,5 +5418,5 @@ static lxb_dom_interface_destructor_f lxb_html_interface_res_destructor[LXB_TAG (lxb_dom_interface_destructor_f) lxb_dom_element_interface_destroy_wrapper } }; -#endif /* LXB_HTML_INTERFACE_RES_DESTRUCTOR_ENABLED */ -#endif /* LXB_HTML_INTERFACE_RES_DESTRUCTOR */ + +#endif /* LXB_HTML_INTERFACE_RES_H */ diff --git a/ext/lexbor/lexbor/html/interfaces/document.c b/ext/lexbor/lexbor/html/interfaces/document.c index 34a2c6db0e5a..b40c6c8692f1 100644 --- a/ext/lexbor/lexbor/html/interfaces/document.c +++ b/ext/lexbor/lexbor/html/interfaces/document.c @@ -11,16 +11,18 @@ #include "lexbor/html/interfaces/style_element.h" #include "lexbor/html/node.h" #include "lexbor/html/parser.h" +#include "lexbor/html/tokenizer.h" #include "lexbor/tag/tag.h" #include "lexbor/dom/interfaces/text.h" #include "lexbor/dom/interfaces/element.h" -#define LXB_HTML_TAG_RES_DATA -#define LXB_HTML_TAG_RES_SHS_DATA -#include "lexbor/html/tag_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN lxb_html_tag_category_t lxb_html_tag_res_cats[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY]; + LXB_EXTERN lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY]; +#endif lxb_status_t lxb_html_parse_chunk_prepare(lxb_html_parser_t *parser, @@ -34,7 +36,7 @@ lxb_html_document_title_walker(lxb_dom_node_t *node, void *ctx); lxb_inline lxb_dom_interface_t * -lxb_html_document_interface_create_wrapper(lxb_dom_document_t *document, +lxb_html_document_interface_create_handler(lxb_dom_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns) { return lxb_html_interface_create(lxb_html_interface_document(document), @@ -60,7 +62,7 @@ lxb_html_document_interface_create(lxb_html_document_t *document) } status = lxb_dom_document_init(doc, lxb_dom_interface_document(document), - lxb_html_document_interface_create_wrapper, + lxb_html_document_interface_create_handler, lxb_html_interface_clone, lxb_html_interface_destroy, LXB_DOM_DOCUMENT_DTYPE_HTML, LXB_NS_HTML); @@ -267,6 +269,7 @@ lxb_html_document_parser_prepare(lxb_html_document_t *document) { lxb_status_t status; lxb_dom_document_t *doc; + lxb_html_parser_t *parser; doc = lxb_dom_interface_document(document); @@ -278,6 +281,10 @@ lxb_html_document_parser_prepare(lxb_html_document_t *document) lxb_html_parser_destroy(doc->parser); return status; } + + parser = doc->parser; + + lxb_html_tokenizer_keep_duplicate_set(parser->tkz, true); } else if (lxb_html_parser_state(doc->parser) != LXB_HTML_PARSER_STATE_BEGIN) { lxb_html_parser_clean(doc->parser); diff --git a/ext/lexbor/lexbor/html/interfaces/option_element.c b/ext/lexbor/lexbor/html/interfaces/option_element.c index 77e1e23d3878..19f085da0423 100644 --- a/ext/lexbor/lexbor/html/interfaces/option_element.c +++ b/ext/lexbor/lexbor/html/interfaces/option_element.c @@ -5,6 +5,8 @@ */ #include "lexbor/html/interfaces/option_element.h" +#include "lexbor/html/interfaces/select_element.h" +#include "lexbor/html/interfaces/selectedcontent_element.h" #include "lexbor/html/interfaces/document.h" @@ -33,3 +35,48 @@ lxb_html_option_element_interface_destroy(lxb_html_option_element_t *option_elem (void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(option_element)); return NULL; } + +lxb_dom_exception_code_t +lxb_html_option_maybe_clone_to_selectedcontent(lxb_html_option_element_t *option) +{ + bool is; + lxb_dom_node_t *select; + lxb_html_select_element_t *select_el; + lxb_html_selectedcontent_element_t *sel_content; + + is = lxb_html_option_element_selectedness(lxb_html_interface_option(option)); + if (!is) { + return LXB_DOM_EXCEPTION_OK; + } + + select = lxb_dom_interface_node(option); + + do { + select = select->parent; + + if (select == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + } + while (select->local_name != LXB_TAG_SELECT || select->ns != LXB_NS_HTML); + + select_el = lxb_html_interface_select(select); + + sel_content = lxb_html_select_get_enabled_selectedcontent(select_el); + if (sel_content == NULL) { + return LXB_DOM_EXCEPTION_OK; + } + + return lxb_html_selectedcontent_clone_option(sel_content, option); +} + +bool +lxb_html_option_element_selectedness(lxb_html_option_element_t *option) +{ + lxb_dom_attr_t *selected; + + selected = lxb_dom_element_attr_by_id(lxb_dom_interface_element(option), + LXB_DOM_ATTR_SELECTED); + + return selected != NULL; +} diff --git a/ext/lexbor/lexbor/html/interfaces/option_element.h b/ext/lexbor/lexbor/html/interfaces/option_element.h index a59763898def..99d4977aa031 100644 --- a/ext/lexbor/lexbor/html/interfaces/option_element.h +++ b/ext/lexbor/lexbor/html/interfaces/option_element.h @@ -27,6 +27,13 @@ LXB_API lxb_html_option_element_t * lxb_html_option_element_interface_destroy(lxb_html_option_element_t *option_element); +LXB_API lxb_dom_exception_code_t +lxb_html_option_maybe_clone_to_selectedcontent(lxb_html_option_element_t *option); + +LXB_API bool +lxb_html_option_element_selectedness(lxb_html_option_element_t *option); + + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/ext/lexbor/lexbor/html/interfaces/search_element.c b/ext/lexbor/lexbor/html/interfaces/search_element.c new file mode 100644 index 000000000000..00ca2a6ba3fc --- /dev/null +++ b/ext/lexbor/lexbor/html/interfaces/search_element.c @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2018 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/html/interfaces/search_element.h" +#include "lexbor/html/interfaces/document.h" + + +lxb_html_search_element_t * +lxb_html_search_element_interface_create(lxb_html_document_t *document) +{ + lxb_html_search_element_t *element; + + element = lexbor_mraw_calloc(document->dom_document.mraw, + sizeof(lxb_html_search_element_t)); + if (element == NULL) { + return NULL; + } + + lxb_dom_node_t *node = lxb_dom_interface_node(element); + + node->owner_document = lxb_html_document_original_ref(document); + node->type = LXB_DOM_NODE_TYPE_ELEMENT; + + return element; +} + +lxb_html_search_element_t * +lxb_html_search_element_interface_destroy(lxb_html_search_element_t *search_element) +{ + (void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(search_element)); + return NULL; +} diff --git a/ext/lexbor/lexbor/html/interfaces/search_element.h b/ext/lexbor/lexbor/html/interfaces/search_element.h new file mode 100644 index 000000000000..a42862176409 --- /dev/null +++ b/ext/lexbor/lexbor/html/interfaces/search_element.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#ifndef LEXBOR_HTML_SEARCH_ELEMENT_H +#define LEXBOR_HTML_SEARCH_ELEMENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lexbor/html/interface.h" +#include "lexbor/html/interfaces/element.h" + + +struct lxb_html_search_element { + lxb_html_element_t element; +}; + + +LXB_API lxb_html_search_element_t * +lxb_html_search_element_interface_create(lxb_html_document_t *document); + +LXB_API lxb_html_search_element_t * +lxb_html_search_element_interface_destroy(lxb_html_search_element_t *search_element); + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* LEXBOR_HTML_SEARCH_ELEMENT_H */ diff --git a/ext/lexbor/lexbor/html/interfaces/select_element.c b/ext/lexbor/lexbor/html/interfaces/select_element.c index 69f8abe8dd51..8b338dc76da7 100644 --- a/ext/lexbor/lexbor/html/interfaces/select_element.c +++ b/ext/lexbor/lexbor/html/interfaces/select_element.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -8,6 +8,10 @@ #include "lexbor/html/interfaces/document.h" +static lexbor_action_t +lxb_html_select_find_selectedcontent_cb(lxb_dom_node_t *node, void *ctx); + + lxb_html_select_element_t * lxb_html_select_element_interface_create(lxb_html_document_t *document) { @@ -33,3 +37,44 @@ lxb_html_select_element_interface_destroy(lxb_html_select_element_t *select_elem (void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(select_element)); return NULL; } + +lxb_html_selectedcontent_element_t * +lxb_html_select_get_enabled_selectedcontent(lxb_html_select_element_t *el) +{ + lxb_dom_attr_t *multiple; + lxb_dom_node_t *selectedcontent, *node; + + multiple = lxb_dom_element_attr_by_id(lxb_dom_interface_element(el), + LXB_DOM_ATTR_MULTIPLE); + if (multiple != NULL) { + return NULL; + } + + selectedcontent = NULL; + node = lxb_dom_interface_node(el); + + lxb_dom_node_simple_walk(node, lxb_html_select_find_selectedcontent_cb, + &selectedcontent); + if (selectedcontent == NULL) { + return NULL; + } + + return lxb_html_interface_selectedcontent(selectedcontent); +} + +static lexbor_action_t +lxb_html_select_find_selectedcontent_cb(lxb_dom_node_t *node, void *ctx) +{ + lxb_dom_node_t **selectedcontent; + + if (node->local_name == LXB_TAG_SELECTEDCONTENT + && node->ns == LXB_NS_HTML) + { + selectedcontent = ctx; + *selectedcontent = node; + + return LEXBOR_ACTION_STOP; + } + + return LEXBOR_ACTION_OK; +} diff --git a/ext/lexbor/lexbor/html/interfaces/select_element.h b/ext/lexbor/lexbor/html/interfaces/select_element.h index 8676db5da902..03e20d197cd3 100644 --- a/ext/lexbor/lexbor/html/interfaces/select_element.h +++ b/ext/lexbor/lexbor/html/interfaces/select_element.h @@ -26,6 +26,8 @@ lxb_html_select_element_interface_create(lxb_html_document_t *document); LXB_API lxb_html_select_element_t * lxb_html_select_element_interface_destroy(lxb_html_select_element_t *select_element); +LXB_API lxb_html_selectedcontent_element_t * +lxb_html_select_get_enabled_selectedcontent(lxb_html_select_element_t *el); #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/html/interfaces/selectedcontent_element.c b/ext/lexbor/lexbor/html/interfaces/selectedcontent_element.c new file mode 100644 index 000000000000..41b1c0d58b8f --- /dev/null +++ b/ext/lexbor/lexbor/html/interfaces/selectedcontent_element.c @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2025 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/dom/interfaces/document_fragment.h" +#include "lexbor/html/interfaces/selectedcontent_element.h" +#include "lexbor/html/interfaces/document.h" + + +lxb_html_selectedcontent_element_t * +lxb_html_selectedcontent_element_interface_create(lxb_html_document_t *document) +{ + lxb_html_selectedcontent_element_t *element; + + element = lexbor_mraw_calloc(document->dom_document.mraw, + sizeof(lxb_html_selectedcontent_element_t)); + if (element == NULL) { + return NULL; + } + + lxb_dom_node_t *node = lxb_dom_interface_node(element); + + node->owner_document = lxb_html_document_original_ref(document); + node->type = LXB_DOM_NODE_TYPE_ELEMENT; + + return element; +} + +lxb_html_selectedcontent_element_t * +lxb_html_selectedcontent_element_interface_destroy(lxb_html_selectedcontent_element_t *selectedcontent_element) +{ + (void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(selectedcontent_element)); + return NULL; +} + +lxb_dom_exception_code_t +lxb_html_selectedcontent_clone_option(lxb_html_selectedcontent_element_t *sc, + lxb_html_option_element_t *option) +{ + lxb_dom_node_t *node, *child, *opt_node; + lxb_dom_document_fragment_t fragment; + + memset(&fragment, 0x00, sizeof(lxb_dom_document_fragment_t)); + + opt_node = lxb_dom_interface_node(option); + + fragment.node.type = LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT; + fragment.node.owner_document = opt_node->owner_document; + + node = opt_node->first_child; + + while (node != NULL) { + child = lxb_dom_node_clone(node, true); + if (child == NULL) { + return LXB_DOM_EXCEPTION_ERR; + } + + lxb_dom_node_insert_child_wo_events(lxb_dom_interface_node(&fragment), + child); + node = node->next; + } + + return lxb_dom_node_replace_all_spec(lxb_dom_interface_node(sc), + lxb_dom_interface_node(&fragment)); +} diff --git a/ext/lexbor/lexbor/html/interfaces/selectedcontent_element.h b/ext/lexbor/lexbor/html/interfaces/selectedcontent_element.h new file mode 100644 index 000000000000..5d38b59f501c --- /dev/null +++ b/ext/lexbor/lexbor/html/interfaces/selectedcontent_element.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2025 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#ifndef LEXBOR_HTML_SELECTEDCONTENT_ELEMENT_H +#define LEXBOR_HTML_SELECTEDCONTENT_ELEMENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lexbor/html/interface.h" +#include "lexbor/html/interfaces/element.h" + + +struct lxb_html_selectedcontent_element { + lxb_html_element_t element; +}; + + +LXB_API lxb_html_selectedcontent_element_t * +lxb_html_selectedcontent_element_interface_create(lxb_html_document_t *document); + +LXB_API lxb_html_selectedcontent_element_t * +lxb_html_selectedcontent_element_interface_destroy(lxb_html_selectedcontent_element_t *selectedcontent_element); + +LXB_API lxb_dom_exception_code_t +lxb_html_selectedcontent_clone_option(lxb_html_selectedcontent_element_t *sc, + lxb_html_option_element_t *option); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* LEXBOR_HTML_SELECTEDCONTENT_ELEMENT_H */ diff --git a/ext/lexbor/lexbor/html/parser.c b/ext/lexbor/lexbor/html/parser.c index caca15e4be26..7d051045101e 100644 --- a/ext/lexbor/lexbor/html/parser.c +++ b/ext/lexbor/lexbor/html/parser.c @@ -13,9 +13,10 @@ #include "lexbor/html/tree/template_insertion.h" #include "lexbor/html/tree/insertion_mode.h" -#define LXB_HTML_TAG_RES_DATA -#define LXB_HTML_TAG_RES_SHS_DATA -#include "lexbor/html/tag_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN lxb_html_tag_category_t lxb_html_tag_res_cats[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY]; + LXB_EXTERN lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY]; +#endif static void @@ -43,6 +44,8 @@ lxb_html_parser_init(lxb_html_parser_t *parser) return status; } + lxb_html_tokenizer_keep_duplicate_set(parser->tkz, true); + /* Tree */ parser->tree = lxb_html_tree_create(); status = lxb_html_tree_init(parser->tree, parser->tkz); @@ -339,7 +342,9 @@ lxb_html_parse_fragment_chunk_destroy(lxb_html_parser_t *parser) parser->tree->fragment = NULL; } - if (lxb_html_document_is_original(parser->tree->document) == false) { + if (parser->tree->document != NULL + && lxb_html_document_is_original(parser->tree->document) == false) + { if (parser->root != NULL) { doc = lxb_dom_interface_node(parser->tree->document)->owner_document; parser->root->parent = &doc->node; diff --git a/ext/lexbor/lexbor/html/style.c b/ext/lexbor/lexbor/html/style.c deleted file mode 100644 index b07dbf12cae0..000000000000 --- a/ext/lexbor/lexbor/html/style.c +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2022-2023 Alexander Borisov - * - * Author: Alexander Borisov - */ - -#include "lexbor/html/style.h" - - -uintptr_t -lxb_html_style_id_by_name(lxb_html_document_t *doc, - const lxb_char_t *name, size_t size) -{ - const lxb_css_entry_data_t *data; - - data = lxb_css_property_by_name(name, size); - - if (data == NULL) { - return lxb_html_document_css_customs_find_id(doc, name, size); - } - - return data->unique; -} diff --git a/ext/lexbor/lexbor/html/style.h b/ext/lexbor/lexbor/html/style.h deleted file mode 100644 index 10800bcd6593..000000000000 --- a/ext/lexbor/lexbor/html/style.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2022-2023 Alexander Borisov - * - * Author: Alexander Borisov - */ - -#ifndef LEXBOR_HTML_STYLE_H -#define LEXBOR_HTML_STYLE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "lexbor/core/avl.h" -#include "lexbor/css/selectors/selector.h" -#include "lexbor/html/interfaces/document.h" - - -typedef struct lxb_html_style_weak lxb_html_style_weak_t; - -struct lxb_html_style_weak { - void *value; - lxb_css_selector_specificity_t sp; - - lxb_html_style_weak_t *next; -}; - -typedef struct { - lexbor_avl_node_t entry; - lxb_html_style_weak_t *weak; - - lxb_css_selector_specificity_t sp; -} -lxb_html_style_node_t; - - -LXB_API uintptr_t -lxb_html_style_id_by_name(lxb_html_document_t *doc, - const lxb_char_t *name, size_t size); - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* LEXBOR_HTML_STYLE_H */ diff --git a/ext/lexbor/lexbor/html/tag.c b/ext/lexbor/lexbor/html/tag.c new file mode 100644 index 000000000000..48f894963c56 --- /dev/null +++ b/ext/lexbor/lexbor/html/tag.c @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2026 Alexander Borisov + * + * Author: Alexander Borisov + */ + +#include "lexbor/html/tag.h" +#include "lexbor/html/tag_res.h" + + +bool +lxb_html_tag_is_category(lxb_tag_id_t tag_id, lxb_ns_id_t ns, + lxb_html_tag_category_t cat) +{ + if (tag_id < LXB_TAG__LAST_ENTRY && ns < LXB_NS__LAST_ENTRY) { + return lxb_html_tag_res_cats[tag_id][ns] & cat; + } + + return (LXB_HTML_TAG_CATEGORY_ORDINARY) & cat; +} + +const lxb_html_tag_fixname_t * +lxb_html_tag_fixname_svg(lxb_tag_id_t tag_id) +{ + if (tag_id >= LXB_TAG__LAST_ENTRY) { + return NULL; + } + + return &lxb_html_tag_res_fixname_svg[tag_id]; +} diff --git a/ext/lexbor/lexbor/html/tag.h b/ext/lexbor/lexbor/html/tag.h index 6570d7d40b7c..b559d31f6882 100644 --- a/ext/lexbor/lexbor/html/tag.h +++ b/ext/lexbor/lexbor/html/tag.h @@ -28,8 +28,7 @@ enum lxb_html_tag_category { LXB_HTML_TAG_CATEGORY_SCOPE = 0x0008, LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM = 0x0010, LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON = 0x0020, - LXB_HTML_TAG_CATEGORY_SCOPE_TABLE = 0x0040, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT = 0x0080, + LXB_HTML_TAG_CATEGORY_SCOPE_TABLE = 0x0040 }; typedef struct { @@ -39,35 +38,17 @@ typedef struct { lxb_html_tag_fixname_t; -#define LXB_HTML_TAG_RES_CATS -#define LXB_HTML_TAG_RES_FIXNAME_SVG -#include "lexbor/html/tag_res.h" +LXB_API bool +lxb_html_tag_is_category(lxb_tag_id_t tag_id, lxb_ns_id_t ns, + lxb_html_tag_category_t cat); + +LXB_API const lxb_html_tag_fixname_t * +lxb_html_tag_fixname_svg(lxb_tag_id_t tag_id); /* * Inline functions */ -lxb_inline bool -lxb_html_tag_is_category(lxb_tag_id_t tag_id, lxb_ns_id_t ns, - lxb_html_tag_category_t cat) -{ - if (tag_id < LXB_TAG__LAST_ENTRY && ns < LXB_NS__LAST_ENTRY) { - return lxb_html_tag_res_cats[tag_id][ns] & cat; - } - - return (LXB_HTML_TAG_CATEGORY_ORDINARY|LXB_HTML_TAG_CATEGORY_SCOPE_SELECT) & cat; -} - -lxb_inline const lxb_html_tag_fixname_t * -lxb_html_tag_fixname_svg(lxb_tag_id_t tag_id) -{ - if (tag_id >= LXB_TAG__LAST_ENTRY) { - return NULL; - } - - return &lxb_html_tag_res_fixname_svg[tag_id]; -} - lxb_inline bool lxb_html_tag_is_void(lxb_tag_id_t tag_id) { diff --git a/ext/lexbor/lexbor/html/tag_res.h b/ext/lexbor/lexbor/html/tag_res.h index 97c28640ccd1..5e2453a59f2a 100644 --- a/ext/lexbor/lexbor/html/tag_res.h +++ b/ext/lexbor/lexbor/html/tag_res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -14,14 +14,10 @@ #ifndef LXB_HTML_TAG_RES_H #define LXB_HTML_TAG_RES_H -#include "lexbor/html/tag.h" - -#endif /* LXB_HTML_TAG_RES_H */ - #ifdef LXB_TAG_CONST_VERSION -#ifndef LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 +#ifndef LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 #error Mismatched tags version! See "lexbor/tag/const.h". -#endif /* LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 */ +#endif /* LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 */ #else #error You need to include "lexbor/tag/const.h". #endif /* LXB_TAG_CONST_VERSION */ @@ -34,1835 +30,1476 @@ #error You need to include "lexbor/ns/const.h". #endif /* LXB_NS_CONST_VERSION */ -#ifdef LXB_HTML_TAG_RES_CATS -#ifndef LXB_HTML_TAG_RES_CATS_ENABLED -#define LXB_HTML_TAG_RES_CATS_ENABLED -static lxb_html_tag_category_t lxb_html_tag_res_cats[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY] = +LXB_API lxb_html_tag_category_t lxb_html_tag_res_cats[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY] = { /* LXB_TAG__UNDEF */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG__END_OF_FILE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG__TEXT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY }, /* LXB_TAG__DOCUMENT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY }, /* LXB_TAG__EM_COMMENT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY }, /* LXB_TAG__EM_DOCTYPE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY_ORDINARY }, /* LXB_TAG_A */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ABBR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ACRONYM */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ADDRESS */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ALTGLYPH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ALTGLYPHDEF */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ALTGLYPHITEM */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ANIMATECOLOR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ANIMATEMOTION */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ANIMATETRANSFORM */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ANNOTATION_XML */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_APPLET */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_AREA */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ARTICLE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ASIDE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_AUDIO */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_B */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BASE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BASEFONT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BDI */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BDO */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BGSOUND */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BIG */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BLINK */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BLOCKQUOTE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BODY */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_BUTTON */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_CANVAS */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_CAPTION */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_CENTER */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_CITE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_CLIPPATH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_CODE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_COL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_COLGROUP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DATA */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DATALIST */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DD */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DEL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DESC */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DETAILS */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DFN */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DIALOG */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DIR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DIV */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_DT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_EM */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_EMBED */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEBLEND */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FECOLORMATRIX */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FECOMPONENTTRANSFER */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FECOMPOSITE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FECONVOLVEMATRIX */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEDIFFUSELIGHTING */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEDISPLACEMENTMAP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEDISTANTLIGHT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEDROPSHADOW */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEFLOOD */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEFUNCA */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEFUNCB */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEFUNCG */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEFUNCR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEGAUSSIANBLUR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEIMAGE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEMERGE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEMERGENODE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEMORPHOLOGY */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEOFFSET */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FEPOINTLIGHT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FESPECULARLIGHTING */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FESPOTLIGHT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FETILE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FETURBULENCE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FIELDSET */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FIGCAPTION */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FIGURE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FONT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FOOTER */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FOREIGNOBJECT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FORM */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FRAME */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_FRAMESET */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_GLYPHREF */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_H1 */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_H2 */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_H3 */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_H4 */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_H5 */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_H6 */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_HEAD */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_HEADER */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_HGROUP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_HR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_HTML */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SCOPE_TABLE |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_I */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_IFRAME */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_IMAGE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_IMG */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_INPUT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_INS */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_ISINDEX */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_KBD */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_KEYGEN */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_LABEL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_LEGEND */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_LI */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_LINEARGRADIENT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_LINK */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_LISTING */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MAIN */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MALIGNMARK */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_ORDINARY, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MAP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MARK */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MARQUEE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MATH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MENU */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_META */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_METER */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MFENCED */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MGLYPH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_ORDINARY, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_ORDINARY, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MI */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MN */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MO */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MS */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MTEXT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_MULTICOL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_NAV */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_NEXTID */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_NOBR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_NOEMBED */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_NOFRAMES */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_NOSCRIPT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_OBJECT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_OL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_OPTGROUP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_OPTION */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_OUTPUT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_P */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_PARAM */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_PATH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_PICTURE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_PLAINTEXT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_PRE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_PROGRESS */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_Q */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_RADIALGRADIENT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_RB */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_RP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_RT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_RTC */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_RUBY */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_S */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SAMP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SCRIPT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF + }, + /* LXB_TAG_SEARCH */ + { + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SECTION */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SELECT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SCOPE + |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON + |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF + }, + /* LXB_TAG_SELECTEDCONTENT */ + { + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SLOT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SMALL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SOURCE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SPACER */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SPAN */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_STRIKE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_STRONG */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_STYLE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SUB */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SUMMARY */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SUP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_SVG */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TABLE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SCOPE_TABLE |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TBODY */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TD */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TEMPLATE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SCOPE_TABLE |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TEXTAREA */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TEXTPATH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TFOOT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TH */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_THEAD */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TIME */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TITLE */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE |LXB_HTML_TAG_CATEGORY_SCOPE_BUTTON |LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TRACK */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_TT */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_U */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_FORMATTING - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_FORMATTING,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_UL */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY_SCOPE_LIST_ITEM - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_VAR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_VIDEO */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_ORDINARY - |LXB_HTML_TAG_CATEGORY_SCOPE_SELECT, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_ORDINARY,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_WBR */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF }, /* LXB_TAG_XMP */ { - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT - |LXB_HTML_TAG_CATEGORY_SPECIAL, - LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF, - LXB_HTML_TAG_CATEGORY__UNDEF, LXB_HTML_TAG_CATEGORY__UNDEF + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY_SPECIAL,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF, + LXB_HTML_TAG_CATEGORY__UNDEF,LXB_HTML_TAG_CATEGORY__UNDEF } }; -#endif /* LXB_HTML_TAG_RES_CATS_ENABLED */ -#endif /* LXB_HTML_TAG_RES_CATS */ -#ifdef LXB_HTML_TAG_RES_FIXNAME_SVG -#ifndef LXB_HTML_TAG_RES_FIXNAME_SVG_ENABLED -#define LXB_HTML_TAG_RES_FIXNAME_SVG_ENABLED -static lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY] = +LXB_API lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY] = { /* LXB_TAG__UNDEF */ {NULL, 0}, @@ -2188,10 +1825,14 @@ static lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY] {NULL, 0}, /* LXB_TAG_SCRIPT */ {NULL, 0}, + /* LXB_TAG_SEARCH */ + {NULL, 0}, /* LXB_TAG_SECTION */ {NULL, 0}, /* LXB_TAG_SELECT */ {NULL, 0}, + /* LXB_TAG_SELECTEDCONTENT */ + {NULL, 0}, /* LXB_TAG_SLOT */ {NULL, 0}, /* LXB_TAG_SMALL */ @@ -2256,7 +1897,7 @@ static lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY] {NULL, 0}, /* LXB_TAG_XMP */ {NULL, 0}, - + }; -#endif /* LXB_HTML_TAG_RES_FIXNAME_SVG_ENABLED */ -#endif /* LXB_HTML_TAG_RES_FIXNAME_SVG */ + +#endif /* LXB_HTML_TAG_RES_H */ diff --git a/ext/lexbor/lexbor/html/token.c b/ext/lexbor/lexbor/html/token.c index 0f5d076adf59..d4ab1bbb767d 100644 --- a/ext/lexbor/lexbor/html/token.c +++ b/ext/lexbor/lexbor/html/token.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,11 +7,12 @@ #include "lexbor/html/token.h" #include "lexbor/html/tokenizer.h" -#define LEXBOR_STR_RES_MAP_LOWERCASE -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#define LEXBOR_STR_RES_MAP_HEX -#define LEXBOR_STR_RES_MAP_NUM -#include "lexbor/core/str_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_num[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; +#endif #include "lexbor/dom/interfaces/document_type.h" diff --git a/ext/lexbor/lexbor/html/tokenizer.c b/ext/lexbor/lexbor/html/tokenizer.c index 0bd9aec504f0..1d9f3781255d 100644 --- a/ext/lexbor/lexbor/html/tokenizer.c +++ b/ext/lexbor/lexbor/html/tokenizer.c @@ -11,19 +11,20 @@ #include "lexbor/html/tokenizer/state_script.h" #include "lexbor/html/tree.h" -#define LXB_HTML_TAG_RES_DATA -#define LXB_HTML_TAG_RES_SHS_DATA -#include "lexbor/html/tag_res.h" + +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN lxb_html_tag_category_t lxb_html_tag_res_cats[LXB_TAG__LAST_ENTRY][LXB_NS__LAST_ENTRY]; + LXB_EXTERN lxb_html_tag_fixname_t lxb_html_tag_res_fixname_svg[LXB_TAG__LAST_ENTRY]; +#endif #define LXB_HTML_TKZ_TEMP_SIZE (4096 * 4) enum { - LXB_HTML_TOKENIZER_OPT_UNDEF = 0x00, - LXB_HTML_TOKENIZER_OPT_TAGS_SELF = 0x01, - LXB_HTML_TOKENIZER_OPT_ATTRS_SELF = 0x02, - LXB_HTML_TOKENIZER_OPT_ATTRS_MRAW_SELF = 0x04 + LXB_HTML_TOKENIZER_OPT_TAGS_SELF = 1 << 0, + LXB_HTML_TOKENIZER_OPT_ATTRS_SELF = 1 << 1, + LXB_HTML_TOKENIZER_OPT_ATTRS_MRAW_SELF = 1 << 2 }; @@ -206,6 +207,8 @@ lxb_html_tokenizer_clean(lxb_html_tokenizer_t *tkz) tkz->is_eof = false; tkz->status = LXB_STATUS_OK; + tkz->utf8_buf_len = 0; + tkz->pos = tkz->start; lexbor_mraw_clean(tkz->mraw); @@ -304,12 +307,268 @@ lxb_html_tokenizer_begin(lxb_html_tokenizer_t *tkz) return LXB_STATUS_OK; } +/* + * Input stream validation. + * + * Per the HTML spec §13.2.3.5: surrogates, noncharacters, and controls + * (other than ASCII whitespace and NULL) in the input stream are parse errors. + * + * This is a fast linear scan that only fires when + * LXB_HTML_TOKENIZER_OPT_VALIDATE_INPUT is set. + */ + +/* + * Lookup: 1 if the byte is a single-byte control that needs reporting. + * Covers 0x01–0x08, 0x0B, 0x0E–0x1F, 0x7F. + * Excludes 0x00 (handled by tokenizer as UNNUCH), 0x09 (TAB), 0x0A (LF), + * 0x0C (FF), 0x0D (CR), 0x20 (SPACE). + */ +static const lxb_char_t +lxb_html_tkz_validate_ctl[256] = +{ +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ +/* 0 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, +/* 1 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +/* 2 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 3 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 4 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 5 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 6 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, +/* 8+ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static void +lxb_html_tokenizer_validate_codepoint(lxb_html_tokenizer_t *tkz, + uint32_t cp, const lxb_char_t *pos) +{ + /* C1 controls: U+0080–U+009F */ + if (cp >= 0x0080 && cp <= 0x009F) { + lxb_html_tokenizer_error_add(tkz->parse_errors, pos, + LXB_HTML_TOKENIZER_ERROR_COCHININST); + return; + } + + /* Surrogates: U+D800–U+DFFF */ + if (cp >= 0xD800 && cp <= 0xDFFF) { + lxb_html_tokenizer_error_add(tkz->parse_errors, pos, + LXB_HTML_TOKENIZER_ERROR_SUININST); + return; + } + + /* Noncharacters: U+FDD0–U+FDEF */ + if (cp >= 0xFDD0 && cp <= 0xFDEF) { + lxb_html_tokenizer_error_add(tkz->parse_errors, pos, + LXB_HTML_TOKENIZER_ERROR_NOININST); + return; + } + + /* Noncharacters: U+xFFFE and U+xFFFF on every plane */ + if ((cp & 0xFFFE) == 0xFFFE && cp <= 0x10FFFF) { + lxb_html_tokenizer_error_add(tkz->parse_errors, pos, + LXB_HTML_TOKENIZER_ERROR_NOININST); + } +} + +static void +lxb_html_tokenizer_validate_flush_utf8(lxb_html_tokenizer_t *tkz, + const lxb_char_t *pos) +{ + uint32_t cp; + unsigned len = tkz->utf8_buf_len; + const lxb_char_t *b = tkz->utf8_buf; + + if (len < 2) { + goto done; + } + + if ((b[0] & 0xE0) == 0xC0) { + cp = ((uint32_t)(b[0] & 0x1F) << 6) | (b[1] & 0x3F); + lxb_html_tokenizer_validate_codepoint(tkz, cp, pos); + goto done; + } + + if (len < 3) { + goto done; + } + + if ((b[0] & 0xF0) == 0xE0) { + cp = ((uint32_t)(b[0] & 0x0F) << 12) + | ((uint32_t)(b[1] & 0x3F) << 6) + | (b[2] & 0x3F); + lxb_html_tokenizer_validate_codepoint(tkz, cp, pos); + goto done; + } + + if (len < 4) { + goto done; + } + + if ((b[0] & 0xF8) == 0xF0) { + cp = ((uint32_t)(b[0] & 0x07) << 18) + | ((uint32_t)(b[1] & 0x3F) << 12) + | ((uint32_t)(b[2] & 0x3F) << 6) + | (b[3] & 0x3F); + lxb_html_tokenizer_validate_codepoint(tkz, cp, pos); + } + +done: + + tkz->utf8_buf_len = 0; +} + +static void +lxb_html_tokenizer_validate_input(lxb_html_tokenizer_t *tkz, + const lxb_char_t *data, size_t size) +{ + uint32_t cp; + unsigned need, len; + const lxb_char_t *p, *end; + + p = data; + end = data + size; + + /* Continue incomplete UTF-8 sequence from previous chunk. */ + if (tkz->utf8_buf_len > 0) { + lxb_char_t lead = tkz->utf8_buf[0]; + + if ((lead & 0xE0) == 0xC0) { + need = 2; + } + else if ((lead & 0xF0) == 0xE0) { + need = 3; + } + else { + need = 4; + } + + while (tkz->utf8_buf_len < need && p < end) { + if ((*p & 0xC0) != 0x80) { + /* Broken sequence, skip. */ + tkz->utf8_buf_len = 0; + break; + } + + tkz->utf8_buf[tkz->utf8_buf_len++] = *p++; + } + + if (tkz->utf8_buf_len == need) { + lxb_html_tokenizer_validate_flush_utf8(tkz, data); + } + else if (p >= end) { + /* Still incomplete, wait for more data. */ + return; + } + else { + /* Broken sequence was reset above. */ + } + } + + while (p < end) { + lxb_char_t b = *p; + + /* Fast path: printable ASCII (0x20–0x7E), TAB, LF, FF, CR, NULL. */ + if (b < 0x80) { + if (lxb_html_tkz_validate_ctl[b]) { + lxb_html_tokenizer_error_add(tkz->parse_errors, p, + LXB_HTML_TOKENIZER_ERROR_COCHININST); + } + + p++; + continue; + } + + /* Multi-byte UTF-8. Determine expected length. */ + if ((b & 0xE0) == 0xC0) { + need = 2; + } + else if ((b & 0xF0) == 0xE0) { + need = 3; + } + else if ((b & 0xF8) == 0xF0) { + need = 4; + } + else { + /* Invalid lead byte or continuation byte, skip. */ + p++; + continue; + } + + /* Check if the full sequence is available in this chunk. */ + if ((unsigned)(end - p) < need) { + /* Save partial sequence for next chunk. */ + len = (unsigned)(end - p); + memcpy(tkz->utf8_buf, p, len); + tkz->utf8_buf_len = len; + return; + } + + /* Quick filter: only decode if lead byte can start a bad codepoint. + * + * 0xC2 -> C1 controls (U+0080–U+009F): second byte 0x80–0x9F + * 0xED -> surrogates (U+D800–U+DFFF): second byte 0xA0–0xBF + * 0xEF -> nonchars U+FDD0–U+FDEF (0xEF 0xB7 0x90–0xAF) + * and U+FFFE/U+FFFF (0xEF 0xBF 0xBE/0xBF) + * 0xF0–0xF4 -> nonchars U+xFFFE/U+xFFFF on planes 1–16 + */ + if (b == 0xC2) { + if (p[1] <= 0x9F) { + cp = ((uint32_t)(b & 0x1F) << 6) | (p[1] & 0x3F); + lxb_html_tokenizer_validate_codepoint(tkz, cp, p); + } + } + else if (b == 0xED) { + if (p[1] >= 0xA0) { + cp = ((uint32_t)(b & 0x0F) << 12) + | ((uint32_t)(p[1] & 0x3F) << 6) + | (p[2] & 0x3F); + lxb_html_tokenizer_validate_codepoint(tkz, cp, p); + } + } + else if (b == 0xEF) { + if (p[1] == 0xB7 && p[2] >= 0x90 && p[2] <= 0xAF) { + /* U+FDD0–U+FDEF */ + lxb_html_tokenizer_error_add(tkz->parse_errors, p, + LXB_HTML_TOKENIZER_ERROR_NOININST); + } + else if (p[1] == 0xBF && (p[2] == 0xBE || p[2] == 0xBF)) { + /* U+FFFE, U+FFFF */ + lxb_html_tokenizer_error_add(tkz->parse_errors, p, + LXB_HTML_TOKENIZER_ERROR_NOININST); + } + } + else if (b >= 0xF0 && b <= 0xF4) { + /* 4-byte: check for xFFFE/xFFFF. */ + if (p[2] == 0xBF && (p[3] == 0xBE || p[3] == 0xBF)) { + cp = ((uint32_t)(b & 0x07) << 18) + | ((uint32_t)(p[1] & 0x3F) << 12) + | ((uint32_t)(p[2] & 0x3F) << 6) + | (p[3] & 0x3F); + lxb_html_tokenizer_validate_codepoint(tkz, cp, p); + } + } + + p += need; + } +} + lxb_status_t lxb_html_tokenizer_chunk(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, size_t size) { const lxb_char_t *end = data + size; + if (tkz->opt & LXB_HTML_TOKENIZER_OPT_VALIDATE_INPUT) { + lxb_html_tokenizer_validate_input(tkz, data, size); + } + tkz->is_eof = false; tkz->status = LXB_STATUS_OK; tkz->last = end; @@ -457,6 +716,46 @@ lxb_html_tokenizer_set_state_by_tag(lxb_html_tokenizer_t *tkz, bool scripting, } } +void +lxb_html_tokenizer_attr_last_duplicate(lxb_html_tokenizer_t *tkz) +{ + lxb_html_token_t *token; + lxb_html_token_attr_t *attr, *last; + + token = tkz->token; + attr = token->attr_first; + last = token->attr_last; + + while (attr != last) { + if (attr->name == last->name) { + lxb_html_tokenizer_error_add(tkz->parse_errors, last->name_begin, + LXB_HTML_TOKENIZER_ERROR_DUAT); + + lxb_html_token_attr_remove(token, last); + lxb_html_token_attr_destroy(last, tkz->dobj_token_attr); + return; + } + + attr = attr->next; + } +} + +void +lxb_html_tokenizer_validate_close_tag(lxb_html_tokenizer_t *tkz) +{ + if (tkz->token->attr_last != NULL) { + lxb_html_tokenizer_error_add(tkz->parse_errors, + tkz->token->attr_last->name_begin, + LXB_HTML_TOKENIZER_ERROR_ENTAWIAT); + } + + if (tkz->token->type & LXB_HTML_TOKEN_TYPE_CLOSE_SELF) { + lxb_html_tokenizer_error_add(tkz->parse_errors, tkz->token->end, + LXB_HTML_TOKENIZER_ERROR_ENTAWITRSO); + } +} + + /* * No inline functions for ABI. */ @@ -508,6 +807,13 @@ lxb_html_tokenizer_tree_set_noi(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_tree_set(tkz, tree); } +void +lxb_html_tokenizer_input_validation_set_noi(lxb_html_tokenizer_t *tkz, + bool enabled) +{ + lxb_html_tokenizer_input_validation_set(tkz, enabled); +} + lexbor_mraw_t * lxb_html_tokenizer_mraw_noi(lxb_html_tokenizer_t *tkz) { @@ -519,3 +825,10 @@ lxb_html_tokenizer_tags_noi(lxb_html_tokenizer_t *tkz) { return lxb_html_tokenizer_tags(tkz); } + +void +lxb_html_tokenizer_keep_duplicate_set_noi(lxb_html_tokenizer_t *tkz, + bool keep) +{ + lxb_html_tokenizer_keep_duplicate_set(tkz, keep); +} diff --git a/ext/lexbor/lexbor/html/tokenizer.h b/ext/lexbor/lexbor/html/tokenizer.h index 74bb55ef0fd7..aa1ac37d996d 100644 --- a/ext/lexbor/lexbor/html/tokenizer.h +++ b/ext/lexbor/lexbor/html/tokenizer.h @@ -21,6 +21,12 @@ extern "C" { #include "lexbor/ns/ns.h" +enum { + LXB_HTML_TOKENIZER_OPT_UNDEF = 0x00, + LXB_HTML_TOKENIZER_OPT_VALIDATE_INPUT = 1 << 3, + LXB_HTML_TOKENIZER_OPT_ATTR_KEEP_DUPLICATE = 1 << 4 +}; + /* State */ typedef const lxb_char_t * (*lxb_html_tokenizer_state_f)(lxb_html_tokenizer_t *tkz, @@ -90,6 +96,10 @@ struct lxb_html_tokenizer { lxb_status_t status; bool is_eof; + /* Input stream validation (for cross-chunk UTF-8). */ + lxb_char_t utf8_buf[4]; + unsigned utf8_buf_len; + lxb_html_tokenizer_t *base; size_t ref_count; }; @@ -97,8 +107,9 @@ struct lxb_html_tokenizer { #include "lexbor/html/tokenizer/error.h" - -extern const lxb_char_t *lxb_html_tokenizer_eof; +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t *lxb_html_tokenizer_eof; +#endif LXB_API lxb_html_tokenizer_t * lxb_html_tokenizer_create(void); @@ -156,6 +167,11 @@ LXB_API void lxb_html_tokenizer_set_state_by_tag(lxb_html_tokenizer_t *tkz, bool scripting, lxb_tag_id_t tag_id, lxb_ns_id_t ns); +LXB_API void +lxb_html_tokenizer_attr_last_duplicate(lxb_html_tokenizer_t *tkz); + +LXB_API void +lxb_html_tokenizer_validate_close_tag(lxb_html_tokenizer_t *tkz); /* * Inline functions @@ -250,6 +266,28 @@ lxb_html_tokenizer_mraw(lxb_html_tokenizer_t *tkz) return tkz->mraw; } +lxb_inline void +lxb_html_tokenizer_input_validation_set(lxb_html_tokenizer_t *tkz, bool enabled) +{ + if (enabled) { + tkz->opt |= LXB_HTML_TOKENIZER_OPT_VALIDATE_INPUT; + } + else { + tkz->opt &= ~LXB_HTML_TOKENIZER_OPT_VALIDATE_INPUT; + } +} + +lxb_inline void +lxb_html_tokenizer_keep_duplicate_set(lxb_html_tokenizer_t *tkz, bool keep) +{ + if (keep) { + tkz->opt |= LXB_HTML_TOKENIZER_OPT_ATTR_KEEP_DUPLICATE; + } + else { + tkz->opt &= ~LXB_HTML_TOKENIZER_OPT_ATTR_KEEP_DUPLICATE; + } +} + lxb_inline lxb_status_t lxb_html_tokenizer_temp_realloc(lxb_html_tokenizer_t *tkz, size_t size) { @@ -331,12 +369,20 @@ LXB_API void lxb_html_tokenizer_tree_set_noi(lxb_html_tokenizer_t *tkz, lxb_html_tree_t *tree); +LXB_API void +lxb_html_tokenizer_input_validation_set_noi(lxb_html_tokenizer_t *tkz, + bool enabled); + LXB_API lexbor_mraw_t * lxb_html_tokenizer_mraw_noi(lxb_html_tokenizer_t *tkz); LXB_API lexbor_hash_t * lxb_html_tokenizer_tags_noi(lxb_html_tokenizer_t *tkz); +LXB_API void +lxb_html_tokenizer_keep_duplicate_set_noi(lxb_html_tokenizer_t *tkz, + bool keep); + #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/html/tokenizer/error.c b/ext/lexbor/lexbor/html/tokenizer/error.c index c2381ad97c87..241fac509768 100644 --- a/ext/lexbor/lexbor/html/tokenizer/error.c +++ b/ext/lexbor/lexbor/html/tokenizer/error.c @@ -1,9 +1,10 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ +#include "lexbor/core/str.h" #include "lexbor/html/tokenizer/error.h" @@ -26,3 +27,76 @@ lxb_html_tokenizer_error_add(lexbor_array_obj_t *parse_errors, return entry; } + +const lxb_char_t * +lxb_html_tokenizer_error_to_string(lxb_html_tokenizer_error_id_t id, + size_t *len) +{ + static const lexbor_str_t unknown = lexbor_str("unknown error"); + + static const lexbor_str_t errors[LXB_HTML_TOKENIZER_ERROR_LAST_ENTRY] = { + lexbor_str("abrupt closing of empty comment"), + lexbor_str("abrupt doctype public identifier"), + lexbor_str("abrupt doctype system identifier"), + lexbor_str("absence of digits in numeric character reference"), + lexbor_str("cdata in html content"), + lexbor_str("character reference outside unicode range"), + lexbor_str("control character in input stream"), + lexbor_str("control character reference"), + lexbor_str("end tag with attributes"), + lexbor_str("duplicate attribute"), + lexbor_str("end tag with trailing solidus"), + lexbor_str("eof before tag name"), + lexbor_str("eof in cdata"), + lexbor_str("eof in comment"), + lexbor_str("eof in doctype"), + lexbor_str("eof in script html comment like text"), + lexbor_str("eof in tag"), + lexbor_str("incorrectly closed comment"), + lexbor_str("incorrectly opened comment"), + lexbor_str("invalid character sequence after doctype name"), + lexbor_str("invalid first character of tag name"), + lexbor_str("missing attribute value"), + lexbor_str("missing doctype name"), + lexbor_str("missing doctype public identifier"), + lexbor_str("missing doctype system identifier"), + lexbor_str("missing end tag name"), + lexbor_str("missing quote before doctype public identifier"), + lexbor_str("missing quote before doctype system identifier"), + lexbor_str("missing semicolon after character reference"), + lexbor_str("missing whitespace after doctype public keyword"), + lexbor_str("missing whitespace after doctype system keyword"), + lexbor_str("missing whitespace before doctype name"), + lexbor_str("missing whitespace between attributes"), + lexbor_str("missing whitespace between doctype public and system identifiers"), + lexbor_str("nested comment"), + lexbor_str("noncharacter character reference"), + lexbor_str("noncharacter in input stream"), + lexbor_str("non void html element start tag with trailing solidus"), + lexbor_str("null character reference"), + lexbor_str("surrogate character reference"), + lexbor_str("surrogate in input stream"), + lexbor_str("unexpected character after doctype system identifier"), + lexbor_str("unexpected character in attribute name"), + lexbor_str("unexpected character in unquoted attribute value"), + lexbor_str("unexpected equals sign before attribute name"), + lexbor_str("unexpected null character"), + lexbor_str("unexpected question mark instead of tag name"), + lexbor_str("unexpected solidus in tag"), + lexbor_str("unknown named character reference") + }; + + if (id >= (sizeof(errors) / sizeof(lexbor_str_t))) { + if (len != NULL) { + *len = unknown.length; + } + + return unknown.data; + } + + if (len != NULL) { + *len = errors[id].length; + } + + return errors[id].data; +} diff --git a/ext/lexbor/lexbor/html/tokenizer/error.h b/ext/lexbor/lexbor/html/tokenizer/error.h index 2685f039d510..617ff636935b 100644 --- a/ext/lexbor/lexbor/html/tokenizer/error.h +++ b/ext/lexbor/lexbor/html/tokenizer/error.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -21,102 +21,103 @@ typedef enum { /* abrupt-closing-of-empty-comment */ LXB_HTML_TOKENIZER_ERROR_ABCLOFEMCO = 0x0000, /* abrupt-doctype-public-identifier */ - LXB_HTML_TOKENIZER_ERROR_ABDOPUID = 0x0001, + LXB_HTML_TOKENIZER_ERROR_ABDOPUID, /* abrupt-doctype-system-identifier */ - LXB_HTML_TOKENIZER_ERROR_ABDOSYID = 0x0002, + LXB_HTML_TOKENIZER_ERROR_ABDOSYID, /* absence-of-digits-in-numeric-character-reference */ - LXB_HTML_TOKENIZER_ERROR_ABOFDIINNUCHRE = 0x0003, + LXB_HTML_TOKENIZER_ERROR_ABOFDIINNUCHRE, /* cdata-in-html-content */ - LXB_HTML_TOKENIZER_ERROR_CDINHTCO = 0x0004, + LXB_HTML_TOKENIZER_ERROR_CDINHTCO, /* character-reference-outside-unicode-range */ - LXB_HTML_TOKENIZER_ERROR_CHREOUUNRA = 0x0005, + LXB_HTML_TOKENIZER_ERROR_CHREOUUNRA, /* control-character-in-input-stream */ - LXB_HTML_TOKENIZER_ERROR_COCHININST = 0x0006, + LXB_HTML_TOKENIZER_ERROR_COCHININST, /* control-character-reference */ - LXB_HTML_TOKENIZER_ERROR_COCHRE = 0x0007, + LXB_HTML_TOKENIZER_ERROR_COCHRE, /* end-tag-with-attributes */ - LXB_HTML_TOKENIZER_ERROR_ENTAWIAT = 0x0008, + LXB_HTML_TOKENIZER_ERROR_ENTAWIAT, /* duplicate-attribute */ - LXB_HTML_TOKENIZER_ERROR_DUAT = 0x0009, + LXB_HTML_TOKENIZER_ERROR_DUAT, /* end-tag-with-trailing-solidus */ - LXB_HTML_TOKENIZER_ERROR_ENTAWITRSO = 0x000A, + LXB_HTML_TOKENIZER_ERROR_ENTAWITRSO, /* eof-before-tag-name */ - LXB_HTML_TOKENIZER_ERROR_EOBETANA = 0x000B, + LXB_HTML_TOKENIZER_ERROR_EOBETANA, /* eof-in-cdata */ - LXB_HTML_TOKENIZER_ERROR_EOINCD = 0x000C, + LXB_HTML_TOKENIZER_ERROR_EOINCD, /* eof-in-comment */ - LXB_HTML_TOKENIZER_ERROR_EOINCO = 0x000D, + LXB_HTML_TOKENIZER_ERROR_EOINCO, /* eof-in-doctype */ - LXB_HTML_TOKENIZER_ERROR_EOINDO = 0x000E, + LXB_HTML_TOKENIZER_ERROR_EOINDO, /* eof-in-script-html-comment-like-text */ - LXB_HTML_TOKENIZER_ERROR_EOINSCHTCOLITE = 0x000F, + LXB_HTML_TOKENIZER_ERROR_EOINSCHTCOLITE, /* eof-in-tag */ - LXB_HTML_TOKENIZER_ERROR_EOINTA = 0x0010, + LXB_HTML_TOKENIZER_ERROR_EOINTA, /* incorrectly-closed-comment */ - LXB_HTML_TOKENIZER_ERROR_INCLCO = 0x0011, + LXB_HTML_TOKENIZER_ERROR_INCLCO, /* incorrectly-opened-comment */ - LXB_HTML_TOKENIZER_ERROR_INOPCO = 0x0012, + LXB_HTML_TOKENIZER_ERROR_INOPCO, /* invalid-character-sequence-after-doctype-name */ - LXB_HTML_TOKENIZER_ERROR_INCHSEAFDONA = 0x0013, + LXB_HTML_TOKENIZER_ERROR_INCHSEAFDONA, /* invalid-first-character-of-tag-name */ - LXB_HTML_TOKENIZER_ERROR_INFICHOFTANA = 0x0014, + LXB_HTML_TOKENIZER_ERROR_INFICHOFTANA, /* missing-attribute-value */ - LXB_HTML_TOKENIZER_ERROR_MIATVA = 0x0015, + LXB_HTML_TOKENIZER_ERROR_MIATVA, /* missing-doctype-name */ - LXB_HTML_TOKENIZER_ERROR_MIDONA = 0x0016, + LXB_HTML_TOKENIZER_ERROR_MIDONA, /* missing-doctype-public-identifier */ - LXB_HTML_TOKENIZER_ERROR_MIDOPUID = 0x0017, + LXB_HTML_TOKENIZER_ERROR_MIDOPUID, /* missing-doctype-system-identifier */ - LXB_HTML_TOKENIZER_ERROR_MIDOSYID = 0x0018, + LXB_HTML_TOKENIZER_ERROR_MIDOSYID, /* missing-end-tag-name */ - LXB_HTML_TOKENIZER_ERROR_MIENTANA = 0x0019, + LXB_HTML_TOKENIZER_ERROR_MIENTANA, /* missing-quote-before-doctype-public-identifier */ - LXB_HTML_TOKENIZER_ERROR_MIQUBEDOPUID = 0x001A, + LXB_HTML_TOKENIZER_ERROR_MIQUBEDOPUID, /* missing-quote-before-doctype-system-identifier */ - LXB_HTML_TOKENIZER_ERROR_MIQUBEDOSYID = 0x001B, + LXB_HTML_TOKENIZER_ERROR_MIQUBEDOSYID, /* missing-semicolon-after-character-reference */ - LXB_HTML_TOKENIZER_ERROR_MISEAFCHRE = 0x001C, + LXB_HTML_TOKENIZER_ERROR_MISEAFCHRE, /* missing-whitespace-after-doctype-public-keyword */ - LXB_HTML_TOKENIZER_ERROR_MIWHAFDOPUKE = 0x001D, + LXB_HTML_TOKENIZER_ERROR_MIWHAFDOPUKE, /* missing-whitespace-after-doctype-system-keyword */ - LXB_HTML_TOKENIZER_ERROR_MIWHAFDOSYKE = 0x001E, + LXB_HTML_TOKENIZER_ERROR_MIWHAFDOSYKE, /* missing-whitespace-before-doctype-name */ - LXB_HTML_TOKENIZER_ERROR_MIWHBEDONA = 0x001F, + LXB_HTML_TOKENIZER_ERROR_MIWHBEDONA, /* missing-whitespace-between-attributes */ - LXB_HTML_TOKENIZER_ERROR_MIWHBEAT = 0x0020, + LXB_HTML_TOKENIZER_ERROR_MIWHBEAT, /* missing-whitespace-between-doctype-public-and-system-identifiers */ - LXB_HTML_TOKENIZER_ERROR_MIWHBEDOPUANSYID = 0x0021, + LXB_HTML_TOKENIZER_ERROR_MIWHBEDOPUANSYID, /* nested-comment */ - LXB_HTML_TOKENIZER_ERROR_NECO = 0x0022, + LXB_HTML_TOKENIZER_ERROR_NECO, /* noncharacter-character-reference */ - LXB_HTML_TOKENIZER_ERROR_NOCHRE = 0x0023, + LXB_HTML_TOKENIZER_ERROR_NOCHRE, /* noncharacter-in-input-stream */ - LXB_HTML_TOKENIZER_ERROR_NOININST = 0x0024, + LXB_HTML_TOKENIZER_ERROR_NOININST, /* non-void-html-element-start-tag-with-trailing-solidus */ - LXB_HTML_TOKENIZER_ERROR_NOVOHTELSTTAWITRSO = 0x0025, + LXB_HTML_TOKENIZER_ERROR_NOVOHTELSTTAWITRSO, /* null-character-reference */ - LXB_HTML_TOKENIZER_ERROR_NUCHRE = 0x0026, + LXB_HTML_TOKENIZER_ERROR_NUCHRE, /* surrogate-character-reference */ - LXB_HTML_TOKENIZER_ERROR_SUCHRE = 0x0027, + LXB_HTML_TOKENIZER_ERROR_SUCHRE, /* surrogate-in-input-stream */ - LXB_HTML_TOKENIZER_ERROR_SUININST = 0x0028, + LXB_HTML_TOKENIZER_ERROR_SUININST, /* unexpected-character-after-doctype-system-identifier */ - LXB_HTML_TOKENIZER_ERROR_UNCHAFDOSYID = 0x0029, + LXB_HTML_TOKENIZER_ERROR_UNCHAFDOSYID, /* unexpected-character-in-attribute-name */ - LXB_HTML_TOKENIZER_ERROR_UNCHINATNA = 0x002A, + LXB_HTML_TOKENIZER_ERROR_UNCHINATNA, /* unexpected-character-in-unquoted-attribute-value */ - LXB_HTML_TOKENIZER_ERROR_UNCHINUNATVA = 0x002B, + LXB_HTML_TOKENIZER_ERROR_UNCHINUNATVA, /* unexpected-equals-sign-before-attribute-name */ - LXB_HTML_TOKENIZER_ERROR_UNEQSIBEATNA = 0x002C, + LXB_HTML_TOKENIZER_ERROR_UNEQSIBEATNA, /* unexpected-null-character */ - LXB_HTML_TOKENIZER_ERROR_UNNUCH = 0x002D, + LXB_HTML_TOKENIZER_ERROR_UNNUCH, /* unexpected-question-mark-instead-of-tag-name */ - LXB_HTML_TOKENIZER_ERROR_UNQUMAINOFTANA = 0x002E, + LXB_HTML_TOKENIZER_ERROR_UNQUMAINOFTANA, /* unexpected-solidus-in-tag */ - LXB_HTML_TOKENIZER_ERROR_UNSOINTA = 0x002F, + LXB_HTML_TOKENIZER_ERROR_UNSOINTA, /* unknown-named-character-reference */ - LXB_HTML_TOKENIZER_ERROR_UNNACHRE = 0x0030, - LXB_HTML_TOKENIZER_ERROR_LAST_ENTRY = 0x0031, + LXB_HTML_TOKENIZER_ERROR_UNNACHRE, + + LXB_HTML_TOKENIZER_ERROR_LAST_ENTRY } lxb_html_tokenizer_error_id_t; @@ -132,10 +133,13 @@ lxb_html_tokenizer_error_add(lexbor_array_obj_t *parse_errors, const lxb_char_t *pos, lxb_html_tokenizer_error_id_t id); +LXB_API const lxb_char_t * +lxb_html_tokenizer_error_to_string(lxb_html_tokenizer_error_id_t id, + size_t *len); + #ifdef __cplusplus } /* extern "C" */ #endif #endif /* LEXBOR_HTML_TOKENIZER_ERROR_H */ - diff --git a/ext/lexbor/lexbor/html/tokenizer/res.h b/ext/lexbor/lexbor/html/tokenizer/res.h index 5ec5c68bf65d..55c77f9e6c39 100644 --- a/ext/lexbor/lexbor/html/tokenizer/res.h +++ b/ext/lexbor/lexbor/html/tokenizer/res.h @@ -1,12 +1,12 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ /* - * Caution!!! Important!!! - * This file is generated by the script + * Important! + * This file generated by the script * "utils/lexbor/html/tokenizer_entities_bst.py"! * Do not change this file! */ @@ -15,12 +15,6 @@ #ifndef LXB_HTML_TOKENIZER_RES_H #define LXB_HTML_TOKENIZER_RES_H -#endif /* LXB_HTML_TOKENIZER_RES */ - - -#ifdef LXB_HTML_TOKENIZER_RES_ENTITIES_SBST -#ifndef LXB_HTML_TOKENIZER_RES_ENTITIES_SBST_ENABLED -#define LXB_HTML_TOKENIZER_RES_ENTITIES_SBST_ENABLED static const lexbor_sbst_entry_static_t lxb_html_tokenizer_res_entities_sbst[] = { {0x00, {0}, 0, 0, 0, 0}, {0x61, {0}, 0, 3, 2, 53}, @@ -4951,6 +4945,6 @@ static const lexbor_sbst_entry_static_t lxb_html_tokenizer_res_entities_sbst[] = {0x3b, "\xd1\x8e", 2, 0, 0, 0}, {0x70, {0}, 0, 0, 0, 9852}, {0x66, {0}, 0, 0, 0, 9853}, {0x3b, "\xf0\x9d\x95\xaa", 4, 0, 0, 0} }; -#endif /* LXB_HTML_TOKENIZER_RES_ENTITIES_SBST_ENABLED */ -#endif /* LXB_HTML_TOKENIZER_RES_ENTITIES_SBST */ + +#endif /* LXB_HTML_TOKENIZER_RES */ diff --git a/ext/lexbor/lexbor/html/tokenizer/state.c b/ext/lexbor/lexbor/html/tokenizer/state.c index 207b909a1892..6c3cbebe92a3 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state.c +++ b/ext/lexbor/lexbor/html/tokenizer/state.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -8,16 +8,16 @@ #include "lexbor/html/tokenizer/state_comment.h" #include "lexbor/html/tokenizer/state_doctype.h" -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#define LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER -#define LEXBOR_STR_RES_REPLACEMENT_CHARACTER -#define LEXBOR_STR_RES_ALPHA_CHARACTER -#define LEXBOR_STR_RES_MAP_HEX -#define LEXBOR_STR_RES_MAP_NUM -#include "lexbor/core/str_res.h" -#include "lexbor/core/swar.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_num[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const size_t lexbor_str_res_alphanumeric_character[256]; + LXB_EXTERN const size_t lexbor_str_res_alpha_character[256]; + LXB_EXTERN const size_t lexbor_str_res_replacement_character[160]; +#endif -#define LXB_HTML_TOKENIZER_RES_ENTITIES_SBST +#include "lexbor/core/swar.h" #include "lexbor/html/tokenizer/res.h" @@ -123,11 +123,6 @@ lxb_html_tokenizer_state_markup_declaration_cdata(lxb_html_tokenizer_t *tkz, const lxb_char_t *end); /* CDATA Section */ -static const lxb_char_t * -lxb_html_tokenizer_state_cdata_section_before(lxb_html_tokenizer_t *tkz, - const lxb_char_t *data, - const lxb_char_t *end); - static const lxb_char_t * lxb_html_tokenizer_state_cdata_section(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, @@ -282,7 +277,7 @@ lxb_html_tokenizer_state_data(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_state_token_set_end_eof(tkz); } - if (tkz->token->begin != tkz->token->end) { + if (tkz->pos != tkz->start) { tkz->token->tag_id = LXB_TAG__TEXT; lxb_html_tokenizer_state_append_data_m(tkz, data); @@ -381,7 +376,7 @@ lxb_html_tokenizer_state_plaintext(lxb_html_tokenizer_t *tkz, } lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -1451,8 +1446,8 @@ lxb_html_tokenizer_state_markup_declaration_open(lxb_html_tokenizer_t *tkz, else if (*data == 0x5B) { if ((end - data) < 7) { tkz->markup = (lxb_char_t *) "[CDATA["; - tkz->state = lxb_html_tokenizer_state_markup_declaration_cdata; + return data; } @@ -1469,6 +1464,9 @@ lxb_html_tokenizer_state_markup_declaration_open(lxb_html_tokenizer_t *tkz, return data; } + lxb_html_tokenizer_error_add(tkz->parse_errors, data, + LXB_HTML_TOKENIZER_ERROR_CDINHTCO); + tkz->state = lxb_html_tokenizer_state_bogus_comment_before; return data; @@ -1504,6 +1502,8 @@ lxb_html_tokenizer_state_markup_declaration_comment(lxb_html_tokenizer_t *tkz, return (data + 1); } + lxb_html_tokenizer_state_append_m(tkz, "-", 1); + lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_INOPCO); @@ -1538,6 +1538,8 @@ lxb_html_tokenizer_state_markup_declaration_doctype(lxb_html_tokenizer_t *tkz, return data; } + lxb_html_tokenizer_state_append_m(tkz, data, (end - data)); + tkz->markup = pos; return end; @@ -1575,6 +1577,9 @@ lxb_html_tokenizer_state_markup_declaration_cdata(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_state_append_m(tkz, "[CDATA", 6); + lxb_html_tokenizer_error_add(tkz->parse_errors, data, + LXB_HTML_TOKENIZER_ERROR_CDINHTCO); + tkz->state = lxb_html_tokenizer_state_bogus_comment_before; return data; } @@ -1587,7 +1592,7 @@ lxb_html_tokenizer_state_markup_declaration_cdata(lxb_html_tokenizer_t *tkz, /* * Helper function. No in the specification. For 12.2.5.69 */ -static const lxb_char_t * +const lxb_char_t * lxb_html_tokenizer_state_cdata_section_before(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, const lxb_char_t *end) @@ -1661,7 +1666,7 @@ lxb_html_tokenizer_state_cdata_section(lxb_html_tokenizer_t *tkz, } lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -1726,7 +1731,7 @@ lxb_html_tokenizer_state_cdata_section_end(lxb_html_tokenizer_t *tkz, tkz->state = lxb_html_tokenizer_state_data_before; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return (data + 1); } @@ -1857,9 +1862,28 @@ lxb_html_tokenizer_state_char_ref_named(lxb_html_tokenizer_t *tkz, */ /* U+003B SEMICOLON character (;) */ if (tkz->is_attribute && tkz->entity_match->key != 0x3B) { + lxb_char_t ch; + + /* + * The "next input character" per the spec is the character immediately + * after the matched entity, not the character that broke the SBST + * lookup. For example, for "¬i;" the match is "¬" + * and the next input character is 'i', not ';'. + * + * If there are trailing characters in the buffer after the match, + * the next input character is the first one after entity_end. + * Otherwise it is *data (the character that terminated the SBST). + */ + if (&tkz->start[tkz->entity_end + 1] < tkz->pos) { + ch = tkz->start[tkz->entity_end + 1]; + } + else { + ch = *data; + } + /* U+003D EQUALS SIGN character (=) or ASCII alphanumeric */ - if (*data == 0x3D - || lexbor_str_res_alphanumeric_character[*data] != LEXBOR_STR_RES_SLIP) + if (ch == 0x3D + || lexbor_str_res_alphanumeric_character[ch] != LEXBOR_STR_RES_SLIP) { return data; } @@ -1902,16 +1926,30 @@ lxb_html_tokenizer_state_char_ref_ambiguous_ampersand(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, const lxb_char_t *end) { - /* ASCII alphanumeric */ - /* Skipped, not need */ + const lxb_char_t *begin = data; - /* U+003B SEMICOLON (;) */ - if (*data == 0x3B) { - lxb_html_tokenizer_error_add(tkz->parse_errors, data, - LXB_HTML_TOKENIZER_ERROR_UNNACHRE); + while (data < end) { + /* Not ASCII alphanumeric */ + if (lexbor_str_res_alphanumeric_character[ *data ] == LEXBOR_STR_RES_SLIP) { + lxb_html_tokenizer_state_append_m(tkz, begin, (data - begin)); + + /* U+003B SEMICOLON (;) */ + if (*data == 0x3B) { + lxb_html_tokenizer_error_add(tkz->parse_errors, data, + LXB_HTML_TOKENIZER_ERROR_UNNACHRE); + } + + tkz->state = tkz->state_return; + + return data; + } + + data += 1; } - tkz->state = tkz->state_return; + if (begin < data) { + lxb_html_tokenizer_state_append_m(tkz, begin, (data - begin)); + } return data; } @@ -2002,6 +2040,10 @@ lxb_html_tokenizer_state_char_ref_hexademical(lxb_html_tokenizer_t *tkz, if (*data == ';') { data++; } + else { + lxb_html_tokenizer_error_add(tkz->parse_errors, data, + LXB_HTML_TOKENIZER_ERROR_MISEAFCHRE); + } return lxb_html_tokenizer_state_char_ref_numeric_end(tkz, data, end); } @@ -2032,6 +2074,10 @@ lxb_html_tokenizer_state_char_ref_decimal(lxb_html_tokenizer_t *tkz, if (*data == ';') { data++; } + else { + lxb_html_tokenizer_error_add(tkz->parse_errors, data, + LXB_HTML_TOKENIZER_ERROR_MISEAFCHRE); + } return lxb_html_tokenizer_state_char_ref_numeric_end(tkz, data, end); } diff --git a/ext/lexbor/lexbor/html/tokenizer/state.h b/ext/lexbor/lexbor/html/tokenizer/state.h index 5b095b4249d5..52eaa9a2c07b 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state.h +++ b/ext/lexbor/lexbor/html/tokenizer/state.h @@ -110,6 +110,10 @@ extern "C" { #define lxb_html_tokenizer_state_token_attr_add_m(tkz, attr, v_return) \ do { \ + if (!(tkz->opt & LXB_HTML_TOKENIZER_OPT_ATTR_KEEP_DUPLICATE)) { \ + lxb_html_tokenizer_attr_last_duplicate(tkz); \ + } \ + \ attr = lxb_html_token_attr_append(tkz->token, tkz->dobj_token_attr); \ if (attr == NULL) { \ tkz->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; \ @@ -145,6 +149,14 @@ extern "C" { (tkz->token->attr_last->value_end = tkz->last) #define _lxb_html_tokenizer_state_token_done_m(tkz, v_end) \ + if (!(tkz->opt & LXB_HTML_TOKENIZER_OPT_ATTR_KEEP_DUPLICATE)) { \ + lxb_html_tokenizer_attr_last_duplicate(tkz); \ + } \ + \ + if (tkz->token->type & LXB_HTML_TOKEN_TYPE_CLOSE) { \ + lxb_html_tokenizer_validate_close_tag(tkz); \ + } \ + \ tkz->token = tkz->callback_token_done(tkz, tkz->token, \ tkz->callback_token_ctx); \ if (tkz->token == NULL) { \ @@ -154,23 +166,32 @@ extern "C" { return v_end; \ } -#define lxb_html_tokenizer_state_token_done_m(tkz, v_end) \ +#define lxb_html_tokenizer_state_token_text_done_m(tkz, v_end) \ do { \ - if (tkz->token->begin != tkz->token->end) { \ - _lxb_html_tokenizer_state_token_done_m(tkz, v_end) \ + if (tkz->token->text_start != tkz->token->text_end) { \ + _lxb_html_tokenizer_state_token_done_m(tkz, v_end); \ } \ lxb_html_token_clean(tkz->token); \ tkz->pos = tkz->start; \ } \ while (0) -#define lxb_html_tokenizer_state_token_done_wo_check_m(tkz, v_end) \ +#define lxb_html_tokenizer_state_token_done_m(tkz, v_end) \ do { \ _lxb_html_tokenizer_state_token_done_m(tkz, v_end) \ lxb_html_token_clean(tkz->token); \ + tkz->pos = tkz->start; \ } \ while (0) +/* + * This macro is alias; it serves to ensure that when reading the code, + * we clearly understand where checks are not necessary, i.e., we are 100% sure + * that the token has been collected and is ready to be sent. + */ +#define lxb_html_tokenizer_state_token_done_wo_check_m(tkz, v_end) \ + lxb_html_tokenizer_state_token_done_m(tkz, v_end) + #define lxb_html_tokenizer_state_set_text(tkz) \ do { \ tkz->token->text_start = tkz->start; \ @@ -180,7 +201,7 @@ extern "C" { #define lxb_html_tokenizer_state_token_emit_text_not_empty_m(tkz, v_end) \ do { \ - if (tkz->token->begin != tkz->token->end) { \ + if (tkz->start != tkz->pos) { \ tkz->token->tag_id = LXB_TAG__TEXT; \ \ lxb_html_tokenizer_state_set_text(tkz); \ @@ -211,6 +232,11 @@ lxb_html_tokenizer_state_self_closing_start_tag(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, const lxb_char_t *end); +LXB_API const lxb_char_t * +lxb_html_tokenizer_state_cdata_section_before(lxb_html_tokenizer_t *tkz, + const lxb_char_t *data, + const lxb_char_t *end); + LXB_API const lxb_char_t * lxb_html_tokenizer_state_cr(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, const lxb_char_t *end); diff --git a/ext/lexbor/lexbor/html/tokenizer/state_comment.c b/ext/lexbor/lexbor/html/tokenizer/state_comment.c index fd1c2ead980b..870b54578c62 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state_comment.c +++ b/ext/lexbor/lexbor/html/tokenizer/state_comment.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,9 +7,9 @@ #include "lexbor/html/tokenizer/state_comment.h" #include "lexbor/html/tokenizer/state.h" -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN +LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; +#endif static const lxb_char_t * lxb_html_tokenizer_state_comment_start(lxb_html_tokenizer_t *tkz, @@ -143,8 +143,6 @@ lxb_html_tokenizer_state_comment_start_dash(lxb_html_tokenizer_t *tkz, /* EOF */ else if (*data == 0x00) { if (tkz->is_eof) { - lxb_html_tokenizer_state_append_m(tkz, "-", 1); - lxb_html_tokenizer_error_add(tkz->parse_errors, tkz->last, LXB_HTML_TOKENIZER_ERROR_EOINCO); @@ -452,8 +450,12 @@ lxb_html_tokenizer_state_comment_end_bang(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, const lxb_char_t *end) { + static const lexbor_str_t two = lexbor_str("--!"); + /* U+002D HYPHEN-MINUS (-) */ if (*data == 0x2D) { + lxb_html_tokenizer_state_append_m(tkz, two.data, two.length); + tkz->state = lxb_html_tokenizer_state_comment_end_dash; return (data + 1); @@ -481,6 +483,11 @@ lxb_html_tokenizer_state_comment_end_bang(lxb_html_tokenizer_t *tkz, return end; } + + lxb_html_tokenizer_state_append_m(tkz, two.data, two.length); + } + else { + lxb_html_tokenizer_state_append_m(tkz, two.data, two.length); } tkz->state = lxb_html_tokenizer_state_comment; diff --git a/ext/lexbor/lexbor/html/tokenizer/state_doctype.c b/ext/lexbor/lexbor/html/tokenizer/state_doctype.c index 90466789cc09..7ccb02e08b2a 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state_doctype.c +++ b/ext/lexbor/lexbor/html/tokenizer/state_doctype.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,10 +7,9 @@ #include "lexbor/html/tokenizer/state_doctype.h" #include "lexbor/html/tokenizer/state.h" - -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; +#endif lxb_dom_attr_data_t * lxb_dom_attr_local_name_append(lexbor_hash_t *hash, @@ -527,6 +526,7 @@ lxb_html_tokenizer_state_doctype_after_name_public(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_INCHSEAFDONA); + tkz->token->type |= LXB_HTML_TOKEN_TYPE_FORCE_QUIRKS; tkz->state = lxb_html_tokenizer_state_doctype_bogus; return data; @@ -577,6 +577,7 @@ lxb_html_tokenizer_state_doctype_after_name_system(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_INCHSEAFDONA); + tkz->token->type |= LXB_HTML_TOKEN_TYPE_FORCE_QUIRKS; tkz->state = lxb_html_tokenizer_state_doctype_bogus; return data; @@ -797,6 +798,7 @@ lxb_html_tokenizer_state_doctype_public_identifier_double_quoted(lxb_html_tokeni /* U+003E GREATER-THAN SIGN (>) */ case 0x3E: tkz->state = lxb_html_tokenizer_state_data_before; + tkz->token->type |= LXB_HTML_TOKEN_TYPE_FORCE_QUIRKS; lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_ABDOPUID); @@ -912,6 +914,7 @@ lxb_html_tokenizer_state_doctype_public_identifier_single_quoted(lxb_html_tokeni /* U+003E GREATER-THAN SIGN (>) */ case 0x3E: tkz->state = lxb_html_tokenizer_state_data_before; + tkz->token->type |= LXB_HTML_TOKEN_TYPE_FORCE_QUIRKS; lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_ABDOPUID); @@ -1350,6 +1353,7 @@ lxb_html_tokenizer_state_doctype_system_identifier_double_quoted(lxb_html_tokeni /* U+003E GREATER-THAN SIGN (>) */ case 0x3E: tkz->state = lxb_html_tokenizer_state_data_before; + tkz->token->type |= LXB_HTML_TOKEN_TYPE_FORCE_QUIRKS; lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_ABDOSYID); @@ -1465,6 +1469,7 @@ lxb_html_tokenizer_state_doctype_system_identifier_single_quoted(lxb_html_tokeni /* U+003E GREATER-THAN SIGN (>) */ case 0x3E: tkz->state = lxb_html_tokenizer_state_data_before; + tkz->token->type |= LXB_HTML_TOKEN_TYPE_FORCE_QUIRKS; lxb_html_tokenizer_error_add(tkz->parse_errors, data, LXB_HTML_TOKENIZER_ERROR_ABDOSYID); diff --git a/ext/lexbor/lexbor/html/tokenizer/state_rawtext.c b/ext/lexbor/lexbor/html/tokenizer/state_rawtext.c index 6629ca910342..456266b6e33a 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state_rawtext.c +++ b/ext/lexbor/lexbor/html/tokenizer/state_rawtext.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,10 +7,10 @@ #include "lexbor/html/tokenizer/state_rawtext.h" #include "lexbor/html/tokenizer/state.h" -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#define LEXBOR_STR_RES_ALPHA_CHARACTER -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const size_t lexbor_str_res_alpha_character[256]; +#endif const lxb_tag_data_t * lxb_tag_append_lower(lexbor_hash_t *hash, @@ -114,7 +114,7 @@ lxb_html_tokenizer_state_rawtext(lxb_html_tokenizer_t *tkz, tkz->token->tag_id = LXB_TAG__TEXT; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -246,7 +246,7 @@ lxb_html_tokenizer_state_rawtext_end_tag_name(lxb_html_tokenizer_t *tkz, tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; @@ -291,7 +291,7 @@ lxb_html_tokenizer_state_rawtext_end_tag_name(lxb_html_tokenizer_t *tkz, tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; diff --git a/ext/lexbor/lexbor/html/tokenizer/state_rcdata.c b/ext/lexbor/lexbor/html/tokenizer/state_rcdata.c index f47dc7e87a22..02e68b324546 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state_rcdata.c +++ b/ext/lexbor/lexbor/html/tokenizer/state_rcdata.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,10 +7,10 @@ #include "lexbor/html/tokenizer/state_rcdata.h" #include "lexbor/html/tokenizer/state.h" -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#define LEXBOR_STR_RES_ALPHA_CHARACTER -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const size_t lexbor_str_res_alpha_character[256]; +#endif const lxb_tag_data_t * lxb_tag_append_lower(lexbor_hash_t *hash, @@ -123,7 +123,7 @@ lxb_html_tokenizer_state_rcdata(lxb_html_tokenizer_t *tkz, tkz->token->tag_id = LXB_TAG__TEXT; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -255,7 +255,7 @@ lxb_html_tokenizer_state_rcdata_end_tag_name(lxb_html_tokenizer_t *tkz, tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; @@ -300,7 +300,7 @@ lxb_html_tokenizer_state_rcdata_end_tag_name(lxb_html_tokenizer_t *tkz, tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; diff --git a/ext/lexbor/lexbor/html/tokenizer/state_script.c b/ext/lexbor/lexbor/html/tokenizer/state_script.c index 4d56d18f7f3f..26e694f8f517 100644 --- a/ext/lexbor/lexbor/html/tokenizer/state_script.c +++ b/ext/lexbor/lexbor/html/tokenizer/state_script.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -7,12 +7,11 @@ #include "lexbor/html/tokenizer/state_script.h" #include "lexbor/html/tokenizer/state.h" -#define LEXBOR_STR_RES_ALPHA_CHARACTER -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#include "lexbor/core/str_res.h" - -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const size_t lexbor_str_res_alpha_character[256]; + LXB_EXTERN const size_t lexbor_str_res_replacement_character[160]; + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; +#endif const lxb_tag_data_t * lxb_tag_append_lower(lexbor_hash_t *hash, @@ -203,7 +202,7 @@ lxb_html_tokenizer_state_script_data(lxb_html_tokenizer_t *tkz, tkz->token->tag_id = LXB_TAG__TEXT; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -347,7 +346,7 @@ lxb_html_tokenizer_state_script_data_end_tag_name(lxb_html_tokenizer_t *tkz, tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; @@ -391,7 +390,7 @@ lxb_html_tokenizer_state_script_data_end_tag_name(lxb_html_tokenizer_t *tkz, tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; @@ -517,7 +516,7 @@ lxb_html_tokenizer_state_script_data_escaped(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_state_set_text(tkz); lxb_html_tokenizer_state_token_set_end_eof(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -581,7 +580,7 @@ lxb_html_tokenizer_state_script_data_escaped_dash(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_state_set_text(tkz); lxb_html_tokenizer_state_token_set_end_eof(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -758,7 +757,7 @@ lxb_html_tokenizer_state_script_data_escaped_end_tag_name( tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; @@ -802,7 +801,7 @@ lxb_html_tokenizer_state_script_data_escaped_end_tag_name( tkz->pos = &tkz->start[tkz->entity_start]; lxb_html_tokenizer_state_set_text(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); /* Init close token */ tkz->token->tag_id = tkz->tmp_tag_id; @@ -947,7 +946,7 @@ lxb_html_tokenizer_state_script_data_double_escaped(lxb_html_tokenizer_t *tkz, lxb_html_tokenizer_state_set_text(tkz); lxb_html_tokenizer_state_token_set_end_eof(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -1011,7 +1010,7 @@ lxb_html_tokenizer_state_script_data_double_escaped_dash(lxb_html_tokenizer_t *t lxb_html_tokenizer_state_set_text(tkz); lxb_html_tokenizer_state_token_set_end_eof(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } @@ -1077,7 +1076,7 @@ lxb_html_tokenizer_state_script_data_double_escaped_dash_dash( lxb_html_tokenizer_state_set_text(tkz); lxb_html_tokenizer_state_token_set_end_eof(tkz); - lxb_html_tokenizer_state_token_done_m(tkz, end); + lxb_html_tokenizer_state_token_text_done_m(tkz, end); return end; } diff --git a/ext/lexbor/lexbor/html/tree.c b/ext/lexbor/lexbor/html/tree.c index 91bfd17ee1db..3f4c18d7fa40 100644 --- a/ext/lexbor/lexbor/html/tree.c +++ b/ext/lexbor/lexbor/html/tree.c @@ -19,6 +19,7 @@ #include "lexbor/html/interface.h" #include "lexbor/html/interfaces/template_element.h" #include "lexbor/html/interfaces/unknown_element.h" +#include "lexbor/html/interfaces/option_element.h" #include "lexbor/html/tokenizer/state_rawtext.h" #include "lexbor/html/tokenizer/state_rcdata.h" @@ -390,7 +391,8 @@ lxb_html_tree_appropriate_place_inserting_node(lxb_html_tree_t *tree, lxb_html_element_t * lxb_html_tree_insert_foreign_element(lxb_html_tree_t *tree, - lxb_html_token_t *token, lxb_ns_id_t ns) + lxb_html_token_t *token, lxb_ns_id_t ns, + bool only_add_stack) { lxb_status_t status; lxb_dom_node_t *pos; @@ -407,7 +409,9 @@ lxb_html_tree_insert_foreign_element(lxb_html_tree_t *tree, return NULL; } - lxb_html_tree_insert_node(pos, lxb_dom_interface_node(element), ipos); + if (only_add_stack == false) { + lxb_html_tree_insert_node(pos, lxb_dom_interface_node(element), ipos); + } status = lxb_html_tree_open_elements_push(tree, lxb_dom_interface_node(element)); @@ -1033,44 +1037,7 @@ lxb_html_tree_reset_insertion_mode_appropriately(lxb_html_tree_t *tree) continue; } - /* Step 4 */ - if (node->local_name == LXB_TAG_SELECT) { - /* Step 4.1 */ - if (last) { - tree->mode = lxb_html_tree_insertion_mode_in_select; - return; - } - - /* Step 4.2 */ - size_t ancestor = idx; - - for (;;) { - /* Step 4.3 */ - if (ancestor == 0) { - tree->mode = lxb_html_tree_insertion_mode_in_select; - return; - } - - /* Step 4.4 */ - ancestor--; - - /* Step 4.5 */ - lxb_dom_node_t *ancestor_node = list[ancestor]; - - if(lxb_html_tree_node_is(ancestor_node, LXB_TAG_TEMPLATE)) { - tree->mode = lxb_html_tree_insertion_mode_in_select; - return; - } - - /* Step 4.6 */ - else if(lxb_html_tree_node_is(ancestor_node, LXB_TAG_TABLE)) { - tree->mode = lxb_html_tree_insertion_mode_in_select_in_table; - return; - } - } - } - - /* Step 5-15 */ + /* Step 4-15 */ switch (node->local_name) { case LXB_TAG_TD: case LXB_TAG_TH: @@ -1309,6 +1276,41 @@ lxb_html_tree_element_in_scope_td_th(lxb_html_tree_t *tree) return NULL; } +lxb_dom_node_t * +lxb_html_tree_element_in_scope_option_optgroup(lxb_html_tree_t *tree) +{ + lxb_dom_node_t *node; + + size_t idx = tree->open_elements->length; + void **list = tree->open_elements->list; + + while (idx != 0) { + idx--; + node = list[idx]; + + switch (node->local_name) { + case LXB_TAG_OPTION: + case LXB_TAG_OPTGROUP: + if (node->ns == LXB_NS_HTML) { + return node; + } + + break; + + default: + break; + } + + if (lxb_html_tag_is_category(node->local_name, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE)) + { + return NULL; + } + } + + return NULL; +} + bool lxb_html_tree_check_scope_element(lxb_html_tree_t *tree) { @@ -1362,8 +1364,6 @@ lxb_html_tree_close_p_element(lxb_html_tree_t *tree, lxb_html_token_t *token) true); } -#include "lexbor/html/serialize.h" - bool lxb_html_tree_adoption_agency_algorithm(lxb_html_tree_t *tree, lxb_html_token_t *token, diff --git a/ext/lexbor/lexbor/html/tree.h b/ext/lexbor/lexbor/html/tree.h index 8ad32a4c1bec..7b2c62030497 100644 --- a/ext/lexbor/lexbor/html/tree.h +++ b/ext/lexbor/lexbor/html/tree.h @@ -114,7 +114,8 @@ lxb_html_tree_appropriate_place_inserting_node(lxb_html_tree_t *tree, LXB_API lxb_html_element_t * lxb_html_tree_insert_foreign_element(lxb_html_tree_t *tree, - lxb_html_token_t *token, lxb_ns_id_t ns); + lxb_html_token_t *token, lxb_ns_id_t ns, + bool only_add_stack); LXB_API lxb_html_element_t * lxb_html_tree_create_element_for_token(lxb_html_tree_t *tree, @@ -201,6 +202,9 @@ lxb_html_tree_element_in_scope_tbody_thead_tfoot(lxb_html_tree_t *tree); LXB_API lxb_dom_node_t * lxb_html_tree_element_in_scope_td_th(lxb_html_tree_t *tree); +LXB_API lxb_dom_node_t * +lxb_html_tree_element_in_scope_option_optgroup(lxb_html_tree_t *tree); + LXB_API bool lxb_html_tree_check_scope_element(lxb_html_tree_t *tree); @@ -307,7 +311,8 @@ lxb_inline lxb_html_element_t * lxb_html_tree_insert_html_element(lxb_html_tree_t *tree, lxb_html_token_t *token) { - return lxb_html_tree_insert_foreign_element(tree, token, LXB_NS_HTML); + return lxb_html_tree_insert_foreign_element(tree, token, LXB_NS_HTML, + false); } lxb_inline void @@ -374,6 +379,21 @@ lxb_html_tree_attach_document(lxb_html_tree_t *tree, lxb_html_document_t *doc) tree->document = doc; } +lxb_inline bool +lxb_html_tree_is_fragment(lxb_html_tree_t *tree) +{ + return tree->fragment != NULL; +} + +lxb_inline bool +lxb_html_tree_is_fragment_element(lxb_html_tree_t *tree, + lxb_tag_id_t tag_id, lxb_ns_id_t ns) +{ + lxb_dom_node_t *fragment = tree->fragment; + + return lxb_html_tree_is_fragment(tree) + && fragment->local_name == tag_id && fragment->ns == ns; +} #ifdef __cplusplus } /* extern "C" */ diff --git a/ext/lexbor/lexbor/html/tree/error.c b/ext/lexbor/lexbor/html/tree/error.c index 88ad8c44795a..ef36eab8d228 100644 --- a/ext/lexbor/lexbor/html/tree/error.c +++ b/ext/lexbor/lexbor/html/tree/error.c @@ -1,9 +1,10 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ +#include "lexbor/core/str.h" #include "lexbor/html/tree/error.h" @@ -27,3 +28,68 @@ lxb_html_tree_error_add(lexbor_array_obj_t *parse_errors, return entry; } + +const lxb_char_t * +lxb_html_tree_error_to_string(lxb_html_tree_error_id_t id, size_t *len) +{ + static const lexbor_str_t unknown = lexbor_str("unknown error"); + + static const lexbor_str_t errors[LXB_HTML_RULES_ERROR_LAST_ENTRY] = { + lexbor_str("unexpected token"), + lexbor_str("unexpected closed token"), + lexbor_str("null character"), + lexbor_str("unexpected character token"), + lexbor_str("unexpected token in initial mode"), + lexbor_str("bad doctype token in initial mode"), + lexbor_str("doctype token in before html mode"), + lexbor_str("unexpected closed token in before html mode"), + lexbor_str("doctype token in before head mode"), + lexbor_str("unexpected closed token in before head mode"), + lexbor_str("doctype token in head mode"), + lexbor_str("non void html element start tag with trailing solidus"), + lexbor_str("head token in head mode"), + lexbor_str("unexpected closed token in head mode"), + lexbor_str("template closed token without opening in head mode"), + lexbor_str("template element is not current in head mode"), + lexbor_str("doctype token in head noscript mode"), + lexbor_str("doctype token after head mode"), + lexbor_str("head token after head mode"), + lexbor_str("doctype token in body mode"), + lexbor_str("bad ending open elements is wrong"), + lexbor_str("open elements is wrong"), + lexbor_str("unexpected element in open elements stack"), + lexbor_str("missing element in open elements stack"), + lexbor_str("no body element in scope"), + lexbor_str("missing element in scope"), + lexbor_str("unexpected element in scope"), + lexbor_str("unexpected element in active formatting stack"), + lexbor_str("unexpected end of file"), + lexbor_str("characters in table text"), + lexbor_str("doctype token in table mode"), + lexbor_str("doctype token in select mode"), + lexbor_str("doctype token after body mode"), + lexbor_str("doctype token in frameset mode"), + lexbor_str("doctype token after frameset mode"), + lexbor_str("doctype token foreign content mode"), + lexbor_str("select in scope"), + lexbor_str("fragment parsing select in context parse input"), + lexbor_str("fragment parsing select in context parse select"), + lexbor_str("hr parsing select option optgroup in scope"), + lexbor_str("option parsing option in scope"), + lexbor_str("optgroup parsing option optgroup in scope") + }; + + if (id >= (sizeof(errors) / sizeof(lexbor_str_t))) { + if (len != NULL) { + *len = unknown.length; + } + + return unknown.data; + } + + if (len != NULL) { + *len = errors[id].length; + } + + return errors[id].data; +} diff --git a/ext/lexbor/lexbor/html/tree/error.h b/ext/lexbor/lexbor/html/tree/error.h index ed1859f355a6..b1867725ef98 100644 --- a/ext/lexbor/lexbor/html/tree/error.h +++ b/ext/lexbor/lexbor/html/tree/error.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -90,6 +90,18 @@ typedef enum { LXB_HTML_RULES_ERROR_DOTOAFFRMO, /* doctype-token-foreign-content-mode */ LXB_HTML_RULES_ERROR_DOTOFOCOMO, + /* select-in-scope */ + LXB_HTML_RULES_ERROR_SEINSC, + /* fragment-parsing-select-in-context-parse-input */ + LXB_HTML_RULES_ERROR_FRPASEINCOPAIN, + /* fragment-parsing-select-in-context-parse-select */ + LXB_HTML_RULES_ERROR_FRPASEINCOPASE, + /* hr-parsing-select-option-optgroup-in-scope */ + LXB_HTML_RULES_ERROR_HRPASEOPOPINSC, + /* option-parsing-option-in-scope */ + LXB_HTML_RULES_ERROR_OPPAOPINSC, + /* optgroup-parsing-option-optgroup-in-scope */ + LXB_HTML_RULES_ERROR_OPPAOPOPINSC, LXB_HTML_RULES_ERROR_LAST_ENTRY } @@ -108,10 +120,12 @@ LXB_API lxb_html_tree_error_t * lxb_html_tree_error_add(lexbor_array_obj_t *parse_errors, lxb_html_token_t *token, lxb_html_tree_error_id_t id); +LXB_API const lxb_char_t * +lxb_html_tree_error_to_string(lxb_html_tree_error_id_t id, size_t *len); + #ifdef __cplusplus } /* extern "C" */ #endif #endif /* LEXBOR_HTML_TREE_ERROR_H */ - diff --git a/ext/lexbor/lexbor/html/tree/insertion_mode.h b/ext/lexbor/lexbor/html/tree/insertion_mode.h index 97cc29fa6aad..5817f3c015fd 100644 --- a/ext/lexbor/lexbor/html/tree/insertion_mode.h +++ b/ext/lexbor/lexbor/html/tree/insertion_mode.h @@ -91,14 +91,6 @@ LXB_API bool lxb_html_tree_insertion_mode_in_cell(lxb_html_tree_t *tree, lxb_html_token_t *token); -LXB_API bool -lxb_html_tree_insertion_mode_in_select(lxb_html_tree_t *tree, - lxb_html_token_t *token); - -LXB_API bool -lxb_html_tree_insertion_mode_in_select_in_table(lxb_html_tree_t *tree, - lxb_html_token_t *token); - LXB_API bool lxb_html_tree_insertion_mode_in_template(lxb_html_tree_t *tree, lxb_html_token_t *token); diff --git a/ext/lexbor/lexbor/html/tree/insertion_mode/foreign_content.c b/ext/lexbor/lexbor/html/tree/insertion_mode/foreign_content.c index 900557a59c33..7e546e34fd9c 100644 --- a/ext/lexbor/lexbor/html/tree/insertion_mode/foreign_content.c +++ b/ext/lexbor/lexbor/html/tree/insertion_mode/foreign_content.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -8,10 +8,10 @@ #include "lexbor/html/tree/open_elements.h" #include "lexbor/html/interfaces/element.h" -#define LEXBOR_TOKENIZER_CHARS_MAP -#define LEXBOR_STR_RES_ANSI_REPLACEMENT_CHARACTER -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_ansi_replacement_character[4]; + LXB_EXTERN const unsigned char lexbor_tokenizer_chars_map[256]; +#endif lxb_status_t lxb_dom_element_qualified_name_set(lxb_dom_element_t *element, @@ -87,7 +87,8 @@ lxb_html_tree_insertion_mode_foreign_content_anything_else(lxb_html_tree_t *tree tree->before_append_attr = lxb_html_tree_adjust_attributes_svg; } - element = lxb_html_tree_insert_foreign_element(tree, token, node->ns); + element = lxb_html_tree_insert_foreign_element(tree, token, node->ns, + false); if (element == NULL) { tree->before_append_attr = NULL; tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; @@ -259,22 +260,19 @@ lxb_html_tree_insertion_mode_foreign_content_all(lxb_html_tree_t *tree, lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNTO); - if (tree->fragment != NULL) { - return lxb_html_tree_insertion_mode_foreign_content_anything_else(tree, - token); - } + node = lxb_html_tree_current_node(tree); - do { + while (node != NULL && + !(lxb_html_tree_mathml_text_integration_point(node) + || lxb_html_tree_html_integration_point(node) + || node->ns == LXB_NS_HTML)) + { lxb_html_tree_open_elements_pop(tree); node = lxb_html_tree_current_node(tree); } - while (node && - !(lxb_html_tree_mathml_text_integration_point(node) - || lxb_html_tree_html_integration_point(node) - || node->ns == LXB_NS_HTML)); - return false; + return tree->mode(tree, token); } bool @@ -286,6 +284,10 @@ lxb_html_tree_insertion_mode_foreign_content(lxb_html_tree_t *tree, case LXB_TAG_SCRIPT: return lxb_html_tree_insertion_mode_foreign_content_script_closed(tree, token); + case LXB_TAG_P: + case LXB_TAG_BR: + return lxb_html_tree_insertion_mode_foreign_content_all(tree, + token); default: return lxb_html_tree_insertion_mode_foreign_content_anything_else_closed(tree, token); diff --git a/ext/lexbor/lexbor/html/tree/insertion_mode/in_body.c b/ext/lexbor/lexbor/html/tree/insertion_mode/in_body.c index 32cc40476948..38610c7cdd27 100644 --- a/ext/lexbor/lexbor/html/tree/insertion_mode/in_body.c +++ b/ext/lexbor/lexbor/html/tree/insertion_mode/in_body.c @@ -1,19 +1,25 @@ /* - * Copyright (C) 2018-2020 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ -#define LEXBOR_TOKENIZER_CHARS_MAP -#include "lexbor/core/str_res.h" - #include "lexbor/html/tree/insertion_mode.h" #include "lexbor/html/tree/open_elements.h" #include "lexbor/html/tree/active_formatting.h" #include "lexbor/html/interfaces/head_element.h" +#include "lexbor/html/interfaces/option_element.h" #include "lexbor/html/tokenizer/state.h" +#include "lexbor/html/parser.h" #include "lexbor/html/tokenizer/state_rcdata.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const unsigned char lexbor_tokenizer_chars_map[256]; +#endif + +static bool +lxb_html_tree_insertion_mode_in_body_anything_else_closed(lxb_html_tree_t *tree, + lxb_html_token_t *token); /* * User case insertion mode. @@ -691,7 +697,7 @@ lxb_html_tree_insertion_mode_in_body_button(lxb_html_tree_t *tree, * "address", "article", "aside", "blockquote", "button", "center", "details", * "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", * "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre", "section", - * "summary", "ul" + * "select", "summary", "ul" */ lxb_inline bool lxb_html_tree_insertion_mode_in_body_abcdfhlmnopsu_closed(lxb_html_tree_t *tree, @@ -1204,13 +1210,63 @@ lxb_html_tree_insertion_mode_in_body_br_closed(lxb_html_tree_t *tree, return lxb_html_tree_insertion_mode_in_body_abeikw(tree, token); } +lxb_inline bool +lxb_html_tree_insertion_mode_in_body_option_closed(lxb_html_tree_t *tree, + lxb_html_token_t *token) +{ + bool is; + size_t index; + lxb_dom_node_t *node; + lxb_html_option_element_t *option; + lxb_dom_exception_code_t code; + + node = lxb_html_tree_open_elements_find_reverse(tree, LXB_TAG_OPTION, + LXB_NS_HTML, &index); + + lxb_html_tree_insertion_mode_in_body_anything_else_closed(tree, token); + + if (node != NULL) { + is = lxb_html_tree_open_elements_find_by_node(tree, node, &index); + + if (!is) { + option = lxb_html_interface_option(node); + + code = lxb_html_option_maybe_clone_to_selectedcontent(option); + if (code != LXB_DOM_EXCEPTION_OK) { + tree->status = LXB_STATUS_ERROR; + + return lxb_html_tree_process_abort(tree); + } + } + } + + return true; +} + lxb_inline bool lxb_html_tree_insertion_mode_in_body_input(lxb_html_tree_t *tree, lxb_html_token_t *token) { + bool is; + lxb_dom_node_t *node; lxb_dom_attr_t *attr; lxb_html_element_t *element; + is = lxb_html_tree_is_fragment_element(tree, LXB_TAG_SELECT, LXB_NS_HTML); + if (is) { + lxb_html_tree_parse_error(tree, token, + LXB_HTML_RULES_ERROR_FRPASEINCOPAIN); + return true; + } + + node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE); + if (node != NULL) { + lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_SEINSC); + lxb_html_tree_open_elements_pop_until_node(tree, node, true); + } + + tree->status = lxb_html_tree_active_formatting_reconstruct_elements(tree); if (tree->status != LXB_STATUS_OK) { return lxb_html_tree_process_abort(tree); @@ -1277,6 +1333,19 @@ lxb_html_tree_insertion_mode_in_body_hr(lxb_html_tree_t *tree, lxb_html_tree_close_p_element(tree, token); } + node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE); + if (node != NULL) { + lxb_html_tree_generate_implied_end_tags(tree, LXB_TAG__UNDEF, + LXB_NS__UNDEF); + + node = lxb_html_tree_element_in_scope_option_optgroup(tree); + if (node != NULL) { + lxb_html_tree_parse_error(tree, token, + LXB_HTML_RULES_ERROR_HRPASEOPOPINSC); + } + } + element = lxb_html_tree_insert_html_element(tree, token); if (element == NULL) { tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; @@ -1396,8 +1465,25 @@ lxb_inline bool lxb_html_tree_insertion_mode_in_body_select(lxb_html_tree_t *tree, lxb_html_token_t *token) { + bool is; + lxb_dom_node_t *node; lxb_html_element_t *element; + is = lxb_html_tree_is_fragment_element(tree, LXB_TAG_SELECT, LXB_NS_HTML); + if (is) { + lxb_html_tree_parse_error(tree, token, + LXB_HTML_RULES_ERROR_FRPASEINCOPASE); + return true; + } + + node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE); + if (node != NULL) { + lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_SEINSC); + lxb_html_tree_open_elements_pop_until_node(tree, node, true); + return true; + } + tree->status = lxb_html_tree_active_formatting_reconstruct_elements(tree); if (tree->status != LXB_STATUS_OK) { return lxb_html_tree_process_abort(tree); @@ -1412,34 +1498,81 @@ lxb_html_tree_insertion_mode_in_body_select(lxb_html_tree_t *tree, tree->frameset_ok = false; - if (tree->mode == lxb_html_tree_insertion_mode_in_table - || tree->mode == lxb_html_tree_insertion_mode_in_caption - || tree->mode == lxb_html_tree_insertion_mode_in_table_body - || tree->mode == lxb_html_tree_insertion_mode_in_row - || tree->mode == lxb_html_tree_insertion_mode_in_cell) - { - tree->mode = lxb_html_tree_insertion_mode_in_select_in_table; + return true; +} + +/* + * "option" + */ +lxb_inline bool +lxb_html_tree_insertion_mode_in_body_option(lxb_html_tree_t *tree, + lxb_html_token_t *token) +{ + lxb_dom_node_t *node; + lxb_html_element_t *element; + + node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE); + if (node != NULL) { + lxb_html_tree_generate_implied_end_tags(tree, LXB_TAG_OPTGROUP, + LXB_NS_HTML); + + node = lxb_html_tree_element_in_scope(tree, LXB_TAG_OPTION, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE); + if (node != NULL) { + lxb_html_tree_parse_error(tree, token, + LXB_HTML_RULES_ERROR_OPPAOPINSC); + } } else { - tree->mode = lxb_html_tree_insertion_mode_in_select; + node = lxb_html_tree_current_node(tree); + if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { + lxb_html_tree_open_elements_pop(tree); + } + } + + tree->status = lxb_html_tree_active_formatting_reconstruct_elements(tree); + if (tree->status != LXB_STATUS_OK) { + return lxb_html_tree_process_abort(tree); + } + + element = lxb_html_tree_insert_html_element(tree, token); + if (element == NULL) { + tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; + + return lxb_html_tree_process_abort(tree); } return true; } /* - * "optgroup", "option" + * "optgroup" */ lxb_inline bool -lxb_html_tree_insertion_mode_in_body_optopt(lxb_html_tree_t *tree, - lxb_html_token_t *token) +lxb_html_tree_insertion_mode_in_body_optgroup(lxb_html_tree_t *tree, + lxb_html_token_t *token) { lxb_dom_node_t *node; lxb_html_element_t *element; - node = lxb_html_tree_current_node(tree); - if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { - lxb_html_tree_open_elements_pop(tree); + node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, + LXB_HTML_TAG_CATEGORY_SCOPE); + if (node != NULL) { + lxb_html_tree_generate_implied_end_tags(tree, LXB_TAG__UNDEF, + LXB_NS__UNDEF); + + node = lxb_html_tree_element_in_scope_option_optgroup(tree); + if (node != NULL) { + lxb_html_tree_parse_error(tree, token, + LXB_HTML_RULES_ERROR_OPPAOPOPINSC); + } + } + else { + node = lxb_html_tree_current_node(tree); + if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { + lxb_html_tree_open_elements_pop(tree); + } } tree->status = lxb_html_tree_active_formatting_reconstruct_elements(tree); @@ -1539,7 +1672,8 @@ lxb_html_tree_insertion_mode_in_body_math(lxb_html_tree_t *tree, tree->before_append_attr = lxb_html_tree_adjust_attributes_mathml; - element = lxb_html_tree_insert_foreign_element(tree, token, LXB_NS_MATH); + element = lxb_html_tree_insert_foreign_element(tree, token, LXB_NS_MATH, + false); if (element == NULL) { tree->before_append_attr = NULL; tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; @@ -1570,7 +1704,8 @@ lxb_html_tree_insertion_mode_in_body_svg(lxb_html_tree_t *tree, tree->before_append_attr = lxb_html_tree_adjust_attributes_svg; - element = lxb_html_tree_insert_foreign_element(tree, token, LXB_NS_SVG); + element = lxb_html_tree_insert_foreign_element(tree, token, LXB_NS_SVG, + false); if (element == NULL) { tree->before_append_attr = NULL; tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; @@ -1643,7 +1778,7 @@ lxb_html_tree_insertion_mode_in_body_noscript(lxb_html_tree_t *tree, return true; } -lxb_inline bool +static bool lxb_html_tree_insertion_mode_in_body_anything_else_closed(lxb_html_tree_t *tree, lxb_html_token_t *token) { @@ -1719,7 +1854,9 @@ lxb_html_tree_insertion_mode_in_body(lxb_html_tree_t *tree, case LXB_TAG_NAV: case LXB_TAG_OL: case LXB_TAG_PRE: + case LXB_TAG_SEARCH: case LXB_TAG_SECTION: + case LXB_TAG_SELECT: case LXB_TAG_SUMMARY: case LXB_TAG_UL: return lxb_html_tree_insertion_mode_in_body_abcdfhlmnopsu_closed(tree, @@ -1770,6 +1907,10 @@ lxb_html_tree_insertion_mode_in_body(lxb_html_tree_t *tree, return lxb_html_tree_insertion_mode_in_body_br_closed(tree, token); + case LXB_TAG_OPTION: + return lxb_html_tree_insertion_mode_in_body_option_closed(tree, + token); + default: return lxb_html_tree_insertion_mode_in_body_anything_else_closed(tree, token); @@ -1831,6 +1972,7 @@ lxb_html_tree_insertion_mode_in_body(lxb_html_tree_t *tree, case LXB_TAG_NAV: case LXB_TAG_OL: case LXB_TAG_P: + case LXB_TAG_SEARCH: case LXB_TAG_SECTION: case LXB_TAG_SUMMARY: case LXB_TAG_UL: @@ -1934,9 +2076,11 @@ lxb_html_tree_insertion_mode_in_body(lxb_html_tree_t *tree, case LXB_TAG_SELECT: return lxb_html_tree_insertion_mode_in_body_select(tree, token); - case LXB_TAG_OPTGROUP: case LXB_TAG_OPTION: - return lxb_html_tree_insertion_mode_in_body_optopt(tree, token); + return lxb_html_tree_insertion_mode_in_body_option(tree, token); + + case LXB_TAG_OPTGROUP: + return lxb_html_tree_insertion_mode_in_body_optgroup(tree, token); case LXB_TAG_RB: case LXB_TAG_RTC: diff --git a/ext/lexbor/lexbor/html/tree/insertion_mode/in_head_noscript.c b/ext/lexbor/lexbor/html/tree/insertion_mode/in_head_noscript.c index 78e4c5919fe7..1b40ecf62d86 100644 --- a/ext/lexbor/lexbor/html/tree/insertion_mode/in_head_noscript.c +++ b/ext/lexbor/lexbor/html/tree/insertion_mode/in_head_noscript.c @@ -101,6 +101,13 @@ lxb_html_tree_insertion_mode_in_head_noscript_closed(lxb_html_tree_t *tree, token); } + if (token->tag_id == LXB_TAG_NOSCRIPT) { + lxb_html_tree_open_elements_pop(tree); + tree->mode = lxb_html_tree_insertion_mode_in_head; + + return true; + } + lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNTO); return true; diff --git a/ext/lexbor/lexbor/html/tree/insertion_mode/in_select.c b/ext/lexbor/lexbor/html/tree/insertion_mode/in_select.c deleted file mode 100644 index b4eed2c5d3a8..000000000000 --- a/ext/lexbor/lexbor/html/tree/insertion_mode/in_select.c +++ /dev/null @@ -1,375 +0,0 @@ -/* - * Copyright (C) 2018-2020 Alexander Borisov - * - * Author: Alexander Borisov - */ - -#include "lexbor/html/tree/insertion_mode.h" -#include "lexbor/html/tree/open_elements.h" - - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_text(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lexbor_str_t str; - - if (token->null_count != 0) { - lxb_html_tree_parse_error(tree, token, - LXB_HTML_RULES_ERROR_NUCH); - - tree->status = lxb_html_token_make_text_drop_null(token, &str, - tree->document->dom_document.text); - } - else { - tree->status = lxb_html_token_make_text(token, &str, - tree->document->dom_document.text); - } - - if (tree->status != LXB_STATUS_OK) { - return lxb_html_tree_process_abort(tree); - } - - /* Can be zero only if all NULL are gone */ - if (str.length == 0) { - lexbor_str_destroy(&str, tree->document->dom_document.text, false); - - return true; - } - - tree->status = lxb_html_tree_insert_character_for_data(tree, &str, NULL); - if (tree->status != LXB_STATUS_OK) { - return lxb_html_tree_process_abort(tree); - } - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_comment(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_comment_t *comment; - - comment = lxb_html_tree_insert_comment(tree, token, NULL); - if (comment == NULL) { - tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; - - return lxb_html_tree_process_abort(tree); - } - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_doctype(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_DOTOINSEMO); - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_html(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - return lxb_html_tree_insertion_mode_in_body(tree, token); -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_option(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_element_t *element; - lxb_dom_node_t *node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { - lxb_html_tree_open_elements_pop(tree); - } - - element = lxb_html_tree_insert_html_element(tree, token); - if (element == NULL) { - tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; - - return lxb_html_tree_process_abort(tree); - } - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_optgroup(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_element_t *element; - lxb_dom_node_t *node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { - lxb_html_tree_open_elements_pop(tree); - } - - node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTGROUP)) { - lxb_html_tree_open_elements_pop(tree); - } - - element = lxb_html_tree_insert_html_element(tree, token); - if (element == NULL) { - tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; - - return lxb_html_tree_process_abort(tree); - } - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_hr(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_element_t *element; - lxb_dom_node_t *node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { - lxb_html_tree_open_elements_pop(tree); - } - - node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTGROUP)) { - lxb_html_tree_open_elements_pop(tree); - } - - element = lxb_html_tree_insert_html_element(tree, token); - if (element == NULL) { - tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; - - return lxb_html_tree_process_abort(tree); - } - - lxb_html_tree_open_elements_pop(tree); - - lxb_html_tree_acknowledge_token_self_closing(tree, token); - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_optgroup_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_node_t *node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTION) - && tree->open_elements->length > 1) - { - node = lxb_html_tree_open_elements_get(tree, - tree->open_elements->length - 2); - if (node != NULL && lxb_html_tree_node_is(node, LXB_TAG_OPTGROUP)) { - lxb_html_tree_open_elements_pop(tree); - } - } - - node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTGROUP) == false) { - lxb_html_tree_parse_error(tree, token, - LXB_HTML_RULES_ERROR_UNELINOPELST); - return true; - } - - lxb_html_tree_open_elements_pop(tree); - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_option_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_node_t *node = lxb_html_tree_current_node(tree); - - if (lxb_html_tree_node_is(node, LXB_TAG_OPTION) == false) { - lxb_html_tree_parse_error(tree, token, - LXB_HTML_RULES_ERROR_UNELINOPELST); - return true; - } - - lxb_html_tree_open_elements_pop(tree); - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_select_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_node_t *node; - - node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT); - if (node == NULL) { - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNCLTO); - - return true; - } - - lxb_html_tree_open_elements_pop_until_tag_id(tree, LXB_TAG_SELECT, - LXB_NS_HTML, true); - - lxb_html_tree_reset_insertion_mode_appropriately(tree); - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_select(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_node_t *node; - - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNTO); - - node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT); - if (node == NULL) { - return true; - } - - lxb_html_tree_open_elements_pop_until_tag_id(tree, LXB_TAG_SELECT, - LXB_NS_HTML, true); - - lxb_html_tree_reset_insertion_mode_appropriately(tree); - - return true; -} - -/* - * "input", "keygen", "textarea" - */ -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_ikt(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_node_t *node; - - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNTO); - - node = lxb_html_tree_element_in_scope(tree, LXB_TAG_SELECT, LXB_NS_HTML, - LXB_HTML_TAG_CATEGORY_SCOPE_SELECT); - if (node == NULL) { - return true; - } - - lxb_html_tree_open_elements_pop_until_tag_id(tree, LXB_TAG_SELECT, - LXB_NS_HTML, true); - - lxb_html_tree_reset_insertion_mode_appropriately(tree); - - return false; -} - -/* - * A start tag whose tag name is one of: "script", "template" - * An end tag whose tag name is "template" - */ -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_st_open_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - return lxb_html_tree_insertion_mode_in_head(tree, token); -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_end_of_file(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - return lxb_html_tree_insertion_mode_in_body(tree, token); -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_anything_else(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNTO); - - return true; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_anything_else_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNCLTO); - - return true; -} - -bool -lxb_html_tree_insertion_mode_in_select(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - if (token->type & LXB_HTML_TOKEN_TYPE_CLOSE) { - switch (token->tag_id) { - case LXB_TAG_OPTGROUP: - return lxb_html_tree_insertion_mode_in_select_optgroup_closed(tree, - token); - case LXB_TAG_OPTION: - return lxb_html_tree_insertion_mode_in_select_option_closed(tree, - token); - case LXB_TAG_SELECT: - return lxb_html_tree_insertion_mode_in_select_select_closed(tree, - token); - case LXB_TAG_TEMPLATE: - return lxb_html_tree_insertion_mode_in_select_st_open_closed(tree, - token); - default: - return lxb_html_tree_insertion_mode_in_select_anything_else_closed(tree, - token); - } - } - - switch (token->tag_id) { - case LXB_TAG__TEXT: - return lxb_html_tree_insertion_mode_in_select_text(tree, token); - - case LXB_TAG__EM_COMMENT: - return lxb_html_tree_insertion_mode_in_select_comment(tree, token); - - case LXB_TAG__EM_DOCTYPE: - return lxb_html_tree_insertion_mode_in_select_doctype(tree, token); - - case LXB_TAG_HTML: - return lxb_html_tree_insertion_mode_in_select_html(tree, token); - - case LXB_TAG_OPTION: - return lxb_html_tree_insertion_mode_in_select_option(tree, token); - - case LXB_TAG_OPTGROUP: - return lxb_html_tree_insertion_mode_in_select_optgroup(tree, token); - - case LXB_TAG_HR: - return lxb_html_tree_insertion_mode_in_select_hr(tree, token); - - case LXB_TAG_SELECT: - return lxb_html_tree_insertion_mode_in_select_select(tree, token); - - case LXB_TAG_INPUT: - case LXB_TAG_KEYGEN: - case LXB_TAG_TEXTAREA: - return lxb_html_tree_insertion_mode_in_select_ikt(tree, token); - - case LXB_TAG_SCRIPT: - case LXB_TAG_TEMPLATE: - return lxb_html_tree_insertion_mode_in_select_st_open_closed(tree, - token); - case LXB_TAG__END_OF_FILE: - return lxb_html_tree_insertion_mode_in_select_end_of_file(tree, - token); - default: - return lxb_html_tree_insertion_mode_in_select_anything_else(tree, - token); - } -} diff --git a/ext/lexbor/lexbor/html/tree/insertion_mode/in_select_in_table.c b/ext/lexbor/lexbor/html/tree/insertion_mode/in_select_in_table.c deleted file mode 100644 index 7db2e259191e..000000000000 --- a/ext/lexbor/lexbor/html/tree/insertion_mode/in_select_in_table.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2018-2019 Alexander Borisov - * - * Author: Alexander Borisov - */ - -#include "lexbor/html/tree/insertion_mode.h" -#include "lexbor/html/tree/open_elements.h" - - -/* - * "caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th" - */ -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_in_table_ct(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNTO); - - lxb_html_tree_open_elements_pop_until_tag_id(tree, LXB_TAG_SELECT, - LXB_NS_HTML, true); - - lxb_html_tree_reset_insertion_mode_appropriately(tree); - - return false; -} - -/* - * "caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th" - */ -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_in_table_ct_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - lxb_dom_node_t *node; - - lxb_html_tree_parse_error(tree, token, LXB_HTML_RULES_ERROR_UNCLTO); - - node = lxb_html_tree_element_in_scope(tree, token->tag_id, LXB_NS_HTML, - LXB_HTML_TAG_CATEGORY_SCOPE_TABLE); - if (node == NULL) { - return true; - } - - lxb_html_tree_open_elements_pop_until_tag_id(tree, LXB_TAG_SELECT, - LXB_NS_HTML, true); - - lxb_html_tree_reset_insertion_mode_appropriately(tree); - - return false; -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_in_table_anything_else(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - return lxb_html_tree_insertion_mode_in_select(tree, token); -} - -lxb_inline bool -lxb_html_tree_insertion_mode_in_select_in_table_anything_else_closed(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - return lxb_html_tree_insertion_mode_in_select_in_table_anything_else(tree, - token); -} - -bool -lxb_html_tree_insertion_mode_in_select_in_table(lxb_html_tree_t *tree, - lxb_html_token_t *token) -{ - if (token->tag_id >= LXB_TAG__LAST_ENTRY) { - if (token->type & LXB_HTML_TOKEN_TYPE_CLOSE) { - return lxb_html_tree_insertion_mode_in_select_in_table_anything_else_closed(tree, - token); - } - - return lxb_html_tree_insertion_mode_in_select_in_table_anything_else(tree, - token); - } - - if (token->type & LXB_HTML_TOKEN_TYPE_CLOSE) { - switch (token->tag_id) { - case LXB_TAG_CAPTION: - case LXB_TAG_TABLE: - case LXB_TAG_TBODY: - case LXB_TAG_TFOOT: - case LXB_TAG_THEAD: - case LXB_TAG_TR: - case LXB_TAG_TH: - case LXB_TAG_TD: - return lxb_html_tree_insertion_mode_in_select_in_table_ct_closed(tree, - token); - default: - return lxb_html_tree_insertion_mode_in_select_in_table_anything_else_closed(tree, - token); - } - } - - switch (token->tag_id) { - case LXB_TAG_CAPTION: - case LXB_TAG_TABLE: - case LXB_TAG_TBODY: - case LXB_TAG_TFOOT: - case LXB_TAG_THEAD: - case LXB_TAG_TR: - case LXB_TAG_TH: - case LXB_TAG_TD: - return lxb_html_tree_insertion_mode_in_select_in_table_ct(tree, - token); - default: - return lxb_html_tree_insertion_mode_in_select_in_table_anything_else(tree, - token); - } -} diff --git a/ext/lexbor/lexbor/ns/base.h b/ext/lexbor/lexbor/ns/base.h index a5b01baa0e6c..94ee0b7f8719 100644 --- a/ext/lexbor/lexbor/ns/base.h +++ b/ext/lexbor/lexbor/ns/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 Alexander Borisov + * Copyright (C) 2019-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -16,7 +16,7 @@ extern "C" { #define LXB_NS_VERSION_MAJOR 1 -#define LXB_NS_VERSION_MINOR 2 +#define LXB_NS_VERSION_MINOR 4 #define LXB_NS_VERSION_PATCH 0 #define LXB_NS_VERSION_STRING \ diff --git a/ext/lexbor/lexbor/ns/const.h b/ext/lexbor/lexbor/ns/const.h index 463d8d4998bc..2115629b9bdd 100644 --- a/ext/lexbor/lexbor/ns/const.h +++ b/ext/lexbor/lexbor/ns/const.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ diff --git a/ext/lexbor/lexbor/ns/ns.c b/ext/lexbor/lexbor/ns/ns.c index 87e870cf627c..4ffd02519c94 100644 --- a/ext/lexbor/lexbor/ns/ns.c +++ b/ext/lexbor/lexbor/ns/ns.c @@ -1,13 +1,14 @@ /* - * Copyright (C) 2018-2019 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ #include "lexbor/core/shs.h" -#define LEXBOR_STR_RES_MAP_LOWERCASE -#include "lexbor/core/str_res.h" +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; +#endif #include "lexbor/ns/ns.h" #include "lexbor/ns/res.h" diff --git a/ext/lexbor/lexbor/ns/res.h b/ext/lexbor/lexbor/ns/res.h index ca3ab04cb6e7..c953ab074696 100644 --- a/ext/lexbor/lexbor/ns/res.h +++ b/ext/lexbor/lexbor/ns/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2019 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -50,7 +50,7 @@ static const lxb_ns_prefix_data_t lxb_ns_prefix_res_data[LXB_NS__LAST_ENTRY] = {{.u.short_str = "xmlns", .length = 5, .next = NULL}, LXB_NS_XMLNS, 1, true} }; -static const lexbor_shs_entry_t lxb_ns_res_shs_data[] = +static const lexbor_shs_entry_t lxb_ns_res_shs_data[29] = { {NULL, NULL, 28, 0}, {"html", (void *) &lxb_ns_prefix_res_data[2], 4, 0}, {"xmlns", (void *) &lxb_ns_prefix_res_data[7], 5, 0}, {NULL, NULL, 0, 0}, @@ -69,7 +69,7 @@ static const lexbor_shs_entry_t lxb_ns_res_shs_data[] = {"xml", (void *) &lxb_ns_prefix_res_data[6], 3, 0} }; -static const lexbor_shs_entry_t lxb_ns_res_shs_link_data[] = +static const lexbor_shs_entry_t lxb_ns_res_shs_link_data[23] = { {NULL, NULL, 22, 0}, {"http://www.w3.org/1999/xhtml", (void *) &lxb_ns_res_data[2], 28, 0}, diff --git a/ext/lexbor/lexbor/punycode/base.h b/ext/lexbor/lexbor/punycode/base.h index de51606a69a6..ee0c08ae344e 100644 --- a/ext/lexbor/lexbor/punycode/base.h +++ b/ext/lexbor/lexbor/punycode/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023-2024 Alexander Borisov + * Copyright (C) 2023-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -15,7 +15,7 @@ extern "C" { #define LXB_PUNYCODE_VERSION_MAJOR 1 -#define LXB_PUNYCODE_VERSION_MINOR 1 +#define LXB_PUNYCODE_VERSION_MINOR 2 #define LXB_PUNYCODE_VERSION_PATCH 0 #define LEXBOR_PUNYCODE_VERSION_STRING LEXBOR_STRINGIZE(LXB_PUNYCODE_VERSION_MAJOR) "." \ diff --git a/ext/lexbor/lexbor/punycode/punycode.c b/ext/lexbor/lexbor/punycode/punycode.c index 02465a4e00f1..4c3f22ea9bce 100644 --- a/ext/lexbor/lexbor/punycode/punycode.c +++ b/ext/lexbor/lexbor/punycode/punycode.c @@ -138,6 +138,13 @@ lxb_punycode_encode_body(const lxb_codepoint_t *cps, const lxb_codepoint_t *cps_ } if (p > buf) { + if (p >= end) { + p = lxb_punycode_encode_realloc(p, &buf, &end, buffer); + if (p == NULL) { + return LXB_STATUS_ERROR_MEMORY_ALLOCATION; + } + } + *p++ = LXB_PUNYCODE_DELIMITER; } diff --git a/ext/lexbor/lexbor/selectors/base.h b/ext/lexbor/lexbor/selectors/base.h index 64af0261a75c..19bdda73849a 100644 --- a/ext/lexbor/lexbor/selectors/base.h +++ b/ext/lexbor/lexbor/selectors/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2023 Alexander Borisov + * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -15,7 +15,7 @@ extern "C" { #define LXB_SELECTORS_VERSION_MAJOR 0 -#define LXB_SELECTORS_VERSION_MINOR 3 +#define LXB_SELECTORS_VERSION_MINOR 6 #define LXB_SELECTORS_VERSION_PATCH 0 #define LXB_SELECTORS_VERSION_STRING LEXBOR_STRINGIZE(LXB_SELECTORS_VERSION_MAJOR) "." \ diff --git a/ext/lexbor/lexbor/tag/base.h b/ext/lexbor/lexbor/tag/base.h index 94886ee4f47c..27ba326cf40f 100644 --- a/ext/lexbor/lexbor/tag/base.h +++ b/ext/lexbor/lexbor/tag/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2024 Alexander Borisov + * Copyright (C) 2019-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -16,7 +16,7 @@ extern "C" { #define LXB_TAG_VERSION_MAJOR 1 -#define LXB_TAG_VERSION_MINOR 3 +#define LXB_TAG_VERSION_MINOR 5 #define LXB_TAG_VERSION_PATCH 0 #define LXB_TAG_VERSION_STRING \ diff --git a/ext/lexbor/lexbor/tag/const.h b/ext/lexbor/lexbor/tag/const.h index 1a598d347472..b08e387da326 100644 --- a/ext/lexbor/lexbor/tag/const.h +++ b/ext/lexbor/lexbor/tag/const.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -14,8 +14,8 @@ #ifndef LXB_TAG_CONST_H #define LXB_TAG_CONST_H -#define LXB_TAG_CONST_VERSION "A161EC911182C3254E7A972D5C51DF86" -#define LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 +#define LXB_TAG_CONST_VERSION "5AB3094FB370521074947DC082575715" +#define LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 typedef uintptr_t lxb_tag_id_t; @@ -183,41 +183,43 @@ typedef enum { LXB_TAG_S = 0x009f, LXB_TAG_SAMP = 0x00a0, LXB_TAG_SCRIPT = 0x00a1, - LXB_TAG_SECTION = 0x00a2, - LXB_TAG_SELECT = 0x00a3, - LXB_TAG_SLOT = 0x00a4, - LXB_TAG_SMALL = 0x00a5, - LXB_TAG_SOURCE = 0x00a6, - LXB_TAG_SPACER = 0x00a7, - LXB_TAG_SPAN = 0x00a8, - LXB_TAG_STRIKE = 0x00a9, - LXB_TAG_STRONG = 0x00aa, - LXB_TAG_STYLE = 0x00ab, - LXB_TAG_SUB = 0x00ac, - LXB_TAG_SUMMARY = 0x00ad, - LXB_TAG_SUP = 0x00ae, - LXB_TAG_SVG = 0x00af, - LXB_TAG_TABLE = 0x00b0, - LXB_TAG_TBODY = 0x00b1, - LXB_TAG_TD = 0x00b2, - LXB_TAG_TEMPLATE = 0x00b3, - LXB_TAG_TEXTAREA = 0x00b4, - LXB_TAG_TEXTPATH = 0x00b5, - LXB_TAG_TFOOT = 0x00b6, - LXB_TAG_TH = 0x00b7, - LXB_TAG_THEAD = 0x00b8, - LXB_TAG_TIME = 0x00b9, - LXB_TAG_TITLE = 0x00ba, - LXB_TAG_TR = 0x00bb, - LXB_TAG_TRACK = 0x00bc, - LXB_TAG_TT = 0x00bd, - LXB_TAG_U = 0x00be, - LXB_TAG_UL = 0x00bf, - LXB_TAG_VAR = 0x00c0, - LXB_TAG_VIDEO = 0x00c1, - LXB_TAG_WBR = 0x00c2, - LXB_TAG_XMP = 0x00c3, - LXB_TAG__LAST_ENTRY = 0x00c4 + LXB_TAG_SEARCH = 0x00a2, + LXB_TAG_SECTION = 0x00a3, + LXB_TAG_SELECT = 0x00a4, + LXB_TAG_SELECTEDCONTENT = 0x00a5, + LXB_TAG_SLOT = 0x00a6, + LXB_TAG_SMALL = 0x00a7, + LXB_TAG_SOURCE = 0x00a8, + LXB_TAG_SPACER = 0x00a9, + LXB_TAG_SPAN = 0x00aa, + LXB_TAG_STRIKE = 0x00ab, + LXB_TAG_STRONG = 0x00ac, + LXB_TAG_STYLE = 0x00ad, + LXB_TAG_SUB = 0x00ae, + LXB_TAG_SUMMARY = 0x00af, + LXB_TAG_SUP = 0x00b0, + LXB_TAG_SVG = 0x00b1, + LXB_TAG_TABLE = 0x00b2, + LXB_TAG_TBODY = 0x00b3, + LXB_TAG_TD = 0x00b4, + LXB_TAG_TEMPLATE = 0x00b5, + LXB_TAG_TEXTAREA = 0x00b6, + LXB_TAG_TEXTPATH = 0x00b7, + LXB_TAG_TFOOT = 0x00b8, + LXB_TAG_TH = 0x00b9, + LXB_TAG_THEAD = 0x00ba, + LXB_TAG_TIME = 0x00bb, + LXB_TAG_TITLE = 0x00bc, + LXB_TAG_TR = 0x00bd, + LXB_TAG_TRACK = 0x00be, + LXB_TAG_TT = 0x00bf, + LXB_TAG_U = 0x00c0, + LXB_TAG_UL = 0x00c1, + LXB_TAG_VAR = 0x00c2, + LXB_TAG_VIDEO = 0x00c3, + LXB_TAG_WBR = 0x00c4, + LXB_TAG_XMP = 0x00c5, + LXB_TAG__LAST_ENTRY = 0x00c6 } lxb_tag_id_enum_t; diff --git a/ext/lexbor/lexbor/tag/res.h b/ext/lexbor/lexbor/tag/res.h index 4ad1f37e034e..5672d4a5a5f2 100644 --- a/ext/lexbor/lexbor/tag/res.h +++ b/ext/lexbor/lexbor/tag/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 Alexander Borisov + * Copyright (C) 2018-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -17,9 +17,9 @@ #endif /* LXB_TAG_RES_H */ #ifdef LXB_TAG_CONST_VERSION -#ifndef LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 +#ifndef LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 #error Mismatched tags version! See "lexbor/tag/const.h". -#endif /* LXB_TAG_CONST_VERSION_A161EC911182C3254E7A972D5C51DF86 */ +#endif /* LXB_TAG_CONST_VERSION_5AB3094FB370521074947DC082575715 */ #else #error You need to include "lexbor/tag/const.h". #endif /* LXB_TAG_CONST_VERSION */ @@ -188,8 +188,10 @@ static const lxb_tag_data_t lxb_tag_res_data_default[LXB_TAG__LAST_ENTRY] = {{.u.short_str = "s", .length = 1, .next = NULL}, LXB_TAG_S, 1, true}, {{.u.short_str = "samp", .length = 4, .next = NULL}, LXB_TAG_SAMP, 1, true}, {{.u.short_str = "script", .length = 6, .next = NULL}, LXB_TAG_SCRIPT, 1, true}, + {{.u.short_str = "search", .length = 6, .next = NULL}, LXB_TAG_SEARCH, 1, true}, {{.u.short_str = "section", .length = 7, .next = NULL}, LXB_TAG_SECTION, 1, true}, {{.u.short_str = "select", .length = 6, .next = NULL}, LXB_TAG_SELECT, 1, true}, + {{.u.short_str = "selectedcontent", .length = 15, .next = NULL}, LXB_TAG_SELECTEDCONTENT, 1, true}, {{.u.short_str = "slot", .length = 4, .next = NULL}, LXB_TAG_SLOT, 1, true}, {{.u.short_str = "small", .length = 5, .next = NULL}, LXB_TAG_SMALL, 1, true}, {{.u.short_str = "source", .length = 6, .next = NULL}, LXB_TAG_SOURCE, 1, true}, @@ -389,8 +391,10 @@ static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] {{.u.short_str = "S", .length = 1, .next = NULL}, LXB_TAG_S, 1, true}, {{.u.short_str = "SAMP", .length = 4, .next = NULL}, LXB_TAG_SAMP, 1, true}, {{.u.short_str = "SCRIPT", .length = 6, .next = NULL}, LXB_TAG_SCRIPT, 1, true}, + {{.u.short_str = "SEARCH", .length = 6, .next = NULL}, LXB_TAG_SEARCH, 1, true}, {{.u.short_str = "SECTION", .length = 7, .next = NULL}, LXB_TAG_SECTION, 1, true}, {{.u.short_str = "SELECT", .length = 6, .next = NULL}, LXB_TAG_SELECT, 1, true}, + {{.u.short_str = "SELECTEDCONTENT", .length = 15, .next = NULL}, LXB_TAG_SELECTEDCONTENT, 1, true}, {{.u.short_str = "SLOT", .length = 4, .next = NULL}, LXB_TAG_SLOT, 1, true}, {{.u.short_str = "SMALL", .length = 5, .next = NULL}, LXB_TAG_SMALL, 1, true}, {{.u.short_str = "SOURCE", .length = 6, .next = NULL}, LXB_TAG_SOURCE, 1, true}, @@ -426,81 +430,81 @@ static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] }; #endif -static const lexbor_shs_entry_t lxb_tag_res_shs_data_default[] = +static const lexbor_shs_entry_t lxb_tag_res_shs_data_default[263] = { {NULL, NULL, 262, 0}, {"radialgradient", (void *) &lxb_tag_res_data_default[153], 14, 0}, {"fecomponenttransfer", (void *) &lxb_tag_res_data_default[58], 19, 0}, {"abbr", (void *) &lxb_tag_res_data_default[7], 4, 1}, {"feflood", (void *) &lxb_tag_res_data_default[65], 7, 0}, {"marquee", (void *) &lxb_tag_res_data_default[121], 7, 0}, {"feblend", (void *) &lxb_tag_res_data_default[56], 7, 4}, {"optgroup", (void *) &lxb_tag_res_data_default[142], 8, 0}, - {"video", (void *) &lxb_tag_res_data_default[193], 5, 10}, {"u", (void *) &lxb_tag_res_data_default[190], 1, 0}, + {"video", (void *) &lxb_tag_res_data_default[195], 5, 10}, {"u", (void *) &lxb_tag_res_data_default[192], 1, 0}, {"iframe", (void *) &lxb_tag_res_data_default[103], 6, 0}, {"animatecolor", (void *) &lxb_tag_res_data_default[13], 12, 0}, {"output", (void *) &lxb_tag_res_data_default[144], 6, 0}, {"figcaption", (void *) &lxb_tag_res_data_default[82], 10, 0}, {"mglyph", (void *) &lxb_tag_res_data_default[127], 6, 0}, {"!--", (void *) &lxb_tag_res_data_default[4], 3, 0}, {"fefuncg", (void *) &lxb_tag_res_data_default[68], 7, 0}, {"aside", (void *) &lxb_tag_res_data_default[20], 5, 0}, - {"style", (void *) &lxb_tag_res_data_default[171], 5, 0}, {"strike", (void *) &lxb_tag_res_data_default[169], 6, 0}, + {"style", (void *) &lxb_tag_res_data_default[173], 5, 0}, {"strike", (void *) &lxb_tag_res_data_default[171], 6, 0}, {"header", (void *) &lxb_tag_res_data_default[98], 6, 0}, {"glyphref", (void *) &lxb_tag_res_data_default[90], 8, 23}, {"label", (void *) &lxb_tag_res_data_default[111], 5, 0}, {"feconvolvematrix", (void *) &lxb_tag_res_data_default[60], 16, 0}, - {"altglyphdef", (void *) &lxb_tag_res_data_default[11], 11, 0}, {"title", (void *) &lxb_tag_res_data_default[186], 5, 0}, + {"altglyphdef", (void *) &lxb_tag_res_data_default[11], 11, 0}, {"title", (void *) &lxb_tag_res_data_default[188], 5, 0}, {"head", (void *) &lxb_tag_res_data_default[97], 4, 0}, {"noframes", (void *) &lxb_tag_res_data_default[138], 8, 0}, {"code", (void *) &lxb_tag_res_data_default[39], 4, 30}, {"rb", (void *) &lxb_tag_res_data_default[154], 2, 5}, {"blink", (void *) &lxb_tag_res_data_default[29], 5, 0}, {"image", (void *) &lxb_tag_res_data_default[104], 5, 0}, {"col", (void *) &lxb_tag_res_data_default[40], 3, 8}, {"object", (void *) &lxb_tag_res_data_default[140], 6, 12}, - {"template", (void *) &lxb_tag_res_data_default[179], 8, 36}, {"h2", (void *) &lxb_tag_res_data_default[92], 2, 13}, + {"template", (void *) &lxb_tag_res_data_default[181], 8, 36}, {"h2", (void *) &lxb_tag_res_data_default[92], 2, 13}, {"lineargradient", (void *) &lxb_tag_res_data_default[114], 14, 0}, {"math", (void *) &lxb_tag_res_data_default[122], 4, 0}, {"base", (void *) &lxb_tag_res_data_default[23], 4, 45}, {"dl", (void *) &lxb_tag_res_data_default[52], 2, 14}, - {"del", (void *) &lxb_tag_res_data_default[45], 3, 16}, {"svg", (void *) &lxb_tag_res_data_default[175], 3, 17}, + {"del", (void *) &lxb_tag_res_data_default[45], 3, 16}, {"svg", (void *) &lxb_tag_res_data_default[177], 3, 17}, {"dir", (void *) &lxb_tag_res_data_default[50], 3, 0}, {"article", (void *) &lxb_tag_res_data_default[19], 7, 0}, - {"strong", (void *) &lxb_tag_res_data_default[170], 6, 0}, {"dialog", (void *) &lxb_tag_res_data_default[49], 6, 0}, - {"details", (void *) &lxb_tag_res_data_default[47], 7, 0}, {"textpath", (void *) &lxb_tag_res_data_default[181], 8, 52}, + {"strong", (void *) &lxb_tag_res_data_default[172], 6, 0}, {"dialog", (void *) &lxb_tag_res_data_default[49], 6, 0}, + {"details", (void *) &lxb_tag_res_data_default[47], 7, 0}, {"textpath", (void *) &lxb_tag_res_data_default[183], 8, 52}, {"mark", (void *) &lxb_tag_res_data_default[120], 4, 0}, {"basefont", (void *) &lxb_tag_res_data_default[24], 8, 0}, {"fediffuselighting", (void *) &lxb_tag_res_data_default[61], 17, 0}, {"fespecularlighting", (void *) &lxb_tag_res_data_default[77], 18, 0}, {"blockquote", (void *) &lxb_tag_res_data_default[30], 10, 0}, {"script", (void *) &lxb_tag_res_data_default[161], 6, 58}, {"malignmark", (void *) &lxb_tag_res_data_default[118], 10, 0}, {"hr", (void *) &lxb_tag_res_data_default[100], 2, 18}, - {"source", (void *) &lxb_tag_res_data_default[166], 6, 19}, {"mn", (void *) &lxb_tag_res_data_default[129], 2, 0}, - {"select", (void *) &lxb_tag_res_data_default[163], 6, 0}, {"main", (void *) &lxb_tag_res_data_default[117], 4, 20}, + {"source", (void *) &lxb_tag_res_data_default[168], 6, 19}, {"mn", (void *) &lxb_tag_res_data_default[129], 2, 0}, + {"select", (void *) &lxb_tag_res_data_default[164], 6, 0}, {"main", (void *) &lxb_tag_res_data_default[117], 4, 20}, {"fieldset", (void *) &lxb_tag_res_data_default[81], 8, 62}, {"ins", (void *) &lxb_tag_res_data_default[107], 3, 0}, {"frameset", (void *) &lxb_tag_res_data_default[89], 8, 0}, {"button", (void *) &lxb_tag_res_data_default[33], 6, 0}, {"fecolormatrix", (void *) &lxb_tag_res_data_default[57], 13, 0}, {"q", (void *) &lxb_tag_res_data_default[152], 1, 0}, - {"animatemotion", (void *) &lxb_tag_res_data_default[14], 13, 0}, {"time", (void *) &lxb_tag_res_data_default[185], 4, 21}, - {"table", (void *) &lxb_tag_res_data_default[176], 5, 25}, {"h6", (void *) &lxb_tag_res_data_default[96], 2, 26}, + {"animatemotion", (void *) &lxb_tag_res_data_default[14], 13, 0}, {"time", (void *) &lxb_tag_res_data_default[187], 4, 21}, + {"table", (void *) &lxb_tag_res_data_default[178], 5, 25}, {"h6", (void *) &lxb_tag_res_data_default[96], 2, 26}, {"cite", (void *) &lxb_tag_res_data_default[37], 4, 28}, {"img", (void *) &lxb_tag_res_data_default[105], 3, 34}, {"fepointlight", (void *) &lxb_tag_res_data_default[76], 12, 0}, {"audio", (void *) &lxb_tag_res_data_default[21], 5, 0}, {"#end-of-file", (void *) &lxb_tag_res_data_default[1], 12, 0}, {"noscript", (void *) &lxb_tag_res_data_default[139], 8, 0}, - {"foreignobject", (void *) &lxb_tag_res_data_default[86], 13, 0}, {"spacer", (void *) &lxb_tag_res_data_default[167], 6, 0}, - {"samp", (void *) &lxb_tag_res_data_default[160], 4, 0}, {"altglyphitem", (void *) &lxb_tag_res_data_default[12], 12, 0}, - {"dt", (void *) &lxb_tag_res_data_default[53], 2, 0}, {"data", (void *) &lxb_tag_res_data_default[42], 4, 0}, + {"foreignobject", (void *) &lxb_tag_res_data_default[86], 13, 77}, {"selectedcontent", (void *) &lxb_tag_res_data_default[165], 15, 0}, + {"spacer", (void *) &lxb_tag_res_data_default[169], 6, 0}, {"samp", (void *) &lxb_tag_res_data_default[160], 4, 0}, + {"altglyphitem", (void *) &lxb_tag_res_data_default[12], 12, 0}, {"data", (void *) &lxb_tag_res_data_default[42], 4, 0}, {"mtext", (void *) &lxb_tag_res_data_default[132], 5, 0}, {"path", (void *) &lxb_tag_res_data_default[147], 4, 0}, - {"input", (void *) &lxb_tag_res_data_default[106], 5, 0}, {"th", (void *) &lxb_tag_res_data_default[183], 2, 38}, - {"p", (void *) &lxb_tag_res_data_default[145], 1, 0}, {"animatetransform", (void *) &lxb_tag_res_data_default[15], 16, 0}, - {"datalist", (void *) &lxb_tag_res_data_default[43], 8, 0}, {"small", (void *) &lxb_tag_res_data_default[165], 5, 0}, + {"input", (void *) &lxb_tag_res_data_default[106], 5, 0}, {"th", (void *) &lxb_tag_res_data_default[185], 2, 38}, + {"p", (void *) &lxb_tag_res_data_default[145], 1, 0}, {"dt", (void *) &lxb_tag_res_data_default[53], 2, 0}, + {"animatetransform", (void *) &lxb_tag_res_data_default[15], 16, 0}, {"datalist", (void *) &lxb_tag_res_data_default[43], 8, 0}, {"b", (void *) &lxb_tag_res_data_default[22], 1, 46}, {"nextid", (void *) &lxb_tag_res_data_default[135], 6, 47}, - {"noembed", (void *) &lxb_tag_res_data_default[137], 7, 0}, {"nav", (void *) &lxb_tag_res_data_default[134], 3, 0}, - {"bgsound", (void *) &lxb_tag_res_data_default[27], 7, 0}, {"slot", (void *) &lxb_tag_res_data_default[164], 4, 0}, - {"param", (void *) &lxb_tag_res_data_default[146], 5, 0}, {"font", (void *) &lxb_tag_res_data_default[84], 4, 53}, - {"figure", (void *) &lxb_tag_res_data_default[83], 6, 0}, {"femerge", (void *) &lxb_tag_res_data_default[72], 7, 0}, - {"femergenode", (void *) &lxb_tag_res_data_default[73], 11, 0}, {"feoffset", (void *) &lxb_tag_res_data_default[75], 8, 60}, - {"#text", (void *) &lxb_tag_res_data_default[2], 5, 0}, {"ul", (void *) &lxb_tag_res_data_default[191], 2, 0}, + {"noembed", (void *) &lxb_tag_res_data_default[137], 7, 0}, {"small", (void *) &lxb_tag_res_data_default[167], 5, 0}, + {"nav", (void *) &lxb_tag_res_data_default[134], 3, 0}, {"slot", (void *) &lxb_tag_res_data_default[166], 4, 0}, + {"search", (void *) &lxb_tag_res_data_default[162], 6, 0}, {"font", (void *) &lxb_tag_res_data_default[84], 4, 53}, + {"bgsound", (void *) &lxb_tag_res_data_default[27], 7, 0}, {"param", (void *) &lxb_tag_res_data_default[146], 5, 0}, + {"figure", (void *) &lxb_tag_res_data_default[83], 6, 0}, {"feoffset", (void *) &lxb_tag_res_data_default[75], 8, 60}, + {"#text", (void *) &lxb_tag_res_data_default[2], 5, 0}, {"femerge", (void *) &lxb_tag_res_data_default[72], 7, 0}, {"fespotlight", (void *) &lxb_tag_res_data_default[78], 11, 66}, {"form", (void *) &lxb_tag_res_data_default[87], 4, 72}, {"#document", (void *) &lxb_tag_res_data_default[3], 9, 76}, {"fedistantlight", (void *) &lxb_tag_res_data_default[63], 14, 0}, - {"track", (void *) &lxb_tag_res_data_default[188], 5, 0}, {"h3", (void *) &lxb_tag_res_data_default[93], 2, 77}, - {"h1", (void *) &lxb_tag_res_data_default[91], 2, 0}, {"i", (void *) &lxb_tag_res_data_default[102], 1, 0}, - {"altglyph", (void *) &lxb_tag_res_data_default[10], 8, 0}, {"legend", (void *) &lxb_tag_res_data_default[112], 6, 115}, - {"tbody", (void *) &lxb_tag_res_data_default[177], 5, 0}, {"address", (void *) &lxb_tag_res_data_default[9], 7, 0}, - {"caption", (void *) &lxb_tag_res_data_default[35], 7, 0}, {"option", (void *) &lxb_tag_res_data_default[143], 6, 0}, - {"sup", (void *) &lxb_tag_res_data_default[174], 3, 0}, {"body", (void *) &lxb_tag_res_data_default[31], 4, 78}, - {"progress", (void *) &lxb_tag_res_data_default[151], 8, 122}, {"acronym", (void *) &lxb_tag_res_data_default[8], 7, 0}, + {"track", (void *) &lxb_tag_res_data_default[190], 5, 0}, {"h3", (void *) &lxb_tag_res_data_default[93], 2, 78}, + {"femergenode", (void *) &lxb_tag_res_data_default[73], 11, 0}, {"i", (void *) &lxb_tag_res_data_default[102], 1, 0}, + {"ul", (void *) &lxb_tag_res_data_default[193], 2, 0}, {"h1", (void *) &lxb_tag_res_data_default[91], 2, 0}, + {"tbody", (void *) &lxb_tag_res_data_default[179], 5, 0}, {"altglyph", (void *) &lxb_tag_res_data_default[10], 8, 0}, + {"legend", (void *) &lxb_tag_res_data_default[112], 6, 117}, {"address", (void *) &lxb_tag_res_data_default[9], 7, 0}, + {"sup", (void *) &lxb_tag_res_data_default[176], 3, 0}, {"body", (void *) &lxb_tag_res_data_default[31], 4, 79}, + {"caption", (void *) &lxb_tag_res_data_default[35], 7, 0}, {"acronym", (void *) &lxb_tag_res_data_default[8], 7, 0}, + {"option", (void *) &lxb_tag_res_data_default[143], 6, 0}, {"progress", (void *) &lxb_tag_res_data_default[151], 8, 124}, {"fegaussianblur", (void *) &lxb_tag_res_data_default[70], 14, 0}, {NULL, NULL, 0, 0}, - {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"mi", (void *) &lxb_tag_res_data_default[128], 2, 79}, {NULL, NULL, 0, 0}, - {"dfn", (void *) &lxb_tag_res_data_default[48], 3, 0}, {"a", (void *) &lxb_tag_res_data_default[6], 1, 80}, - {"listing", (void *) &lxb_tag_res_data_default[116], 7, 87}, {"span", (void *) &lxb_tag_res_data_default[168], 4, 0}, + {"mi", (void *) &lxb_tag_res_data_default[128], 2, 80}, {NULL, NULL, 0, 0}, + {"dfn", (void *) &lxb_tag_res_data_default[48], 3, 0}, {"a", (void *) &lxb_tag_res_data_default[6], 1, 87}, + {"listing", (void *) &lxb_tag_res_data_default[116], 7, 88}, {"span", (void *) &lxb_tag_res_data_default[170], 4, 0}, {"area", (void *) &lxb_tag_res_data_default[18], 4, 0}, {"clippath", (void *) &lxb_tag_res_data_default[38], 8, 0}, - {"section", (void *) &lxb_tag_res_data_default[162], 7, 0}, {"li", (void *) &lxb_tag_res_data_default[113], 2, 88}, + {"section", (void *) &lxb_tag_res_data_default[163], 7, 0}, {"li", (void *) &lxb_tag_res_data_default[113], 2, 89}, {NULL, NULL, 0, 0}, {"html", (void *) &lxb_tag_res_data_default[101], 4, 0}, {NULL, NULL, 0, 0}, {"fedropshadow", (void *) &lxb_tag_res_data_default[64], 12, 0}, {"embed", (void *) &lxb_tag_res_data_default[55], 5, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {"multicol", (void *) &lxb_tag_res_data_default[133], 8, 0}, - {"var", (void *) &lxb_tag_res_data_default[192], 3, 89}, {"rp", (void *) &lxb_tag_res_data_default[155], 2, 0}, + {"var", (void *) &lxb_tag_res_data_default[194], 3, 93}, {"rp", (void *) &lxb_tag_res_data_default[155], 2, 0}, {NULL, NULL, 0, 0}, {"link", (void *) &lxb_tag_res_data_default[115], 4, 0}, {"mo", (void *) &lxb_tag_res_data_default[130], 2, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {"annotation-xml", (void *) &lxb_tag_res_data_default[16], 14, 0}, @@ -510,54 +514,54 @@ static const lexbor_shs_entry_t lxb_tag_res_shs_data_default[] = {"fefuncb", (void *) &lxb_tag_res_data_default[67], 7, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {"meter", (void *) &lxb_tag_res_data_default[125], 5, 0}, {NULL, NULL, 0, 0}, - {NULL, NULL, 0, 0}, {"tt", (void *) &lxb_tag_res_data_default[189], 2, 0}, - {"big", (void *) &lxb_tag_res_data_default[28], 3, 93}, {NULL, NULL, 0, 0}, - {"tfoot", (void *) &lxb_tag_res_data_default[182], 5, 0}, {"desc", (void *) &lxb_tag_res_data_default[46], 4, 0}, + {NULL, NULL, 0, 0}, {"tt", (void *) &lxb_tag_res_data_default[191], 2, 0}, + {"big", (void *) &lxb_tag_res_data_default[28], 3, 94}, {NULL, NULL, 0, 0}, + {"tfoot", (void *) &lxb_tag_res_data_default[184], 5, 0}, {"desc", (void *) &lxb_tag_res_data_default[46], 4, 96}, {"isindex", (void *) &lxb_tag_res_data_default[108], 7, 0}, {NULL, NULL, 0, 0}, {"menu", (void *) &lxb_tag_res_data_default[123], 4, 0}, {"hgroup", (void *) &lxb_tag_res_data_default[99], 6, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"wbr", (void *) &lxb_tag_res_data_default[194], 3, 0}, {NULL, NULL, 0, 0}, - {"pre", (void *) &lxb_tag_res_data_default[150], 3, 94}, {NULL, NULL, 0, 0}, + {"wbr", (void *) &lxb_tag_res_data_default[196], 3, 0}, {NULL, NULL, 0, 0}, + {"pre", (void *) &lxb_tag_res_data_default[150], 3, 98}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {"picture", (void *) &lxb_tag_res_data_default[148], 7, 0}, {"h4", (void *) &lxb_tag_res_data_default[94], 2, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"meta", (void *) &lxb_tag_res_data_default[124], 4, 96}, {NULL, NULL, 0, 0}, + {"meta", (void *) &lxb_tag_res_data_default[124], 4, 99}, {NULL, NULL, 0, 0}, {"rtc", (void *) &lxb_tag_res_data_default[157], 3, 0}, {NULL, NULL, 0, 0}, - {"frame", (void *) &lxb_tag_res_data_default[88], 5, 0}, {"fetile", (void *) &lxb_tag_res_data_default[79], 6, 98}, - {"feimage", (void *) &lxb_tag_res_data_default[71], 7, 99}, {NULL, NULL, 0, 0}, - {"xmp", (void *) &lxb_tag_res_data_default[195], 3, 0}, {NULL, NULL, 0, 0}, - {"fecomposite", (void *) &lxb_tag_res_data_default[59], 11, 100}, {"feturbulence", (void *) &lxb_tag_res_data_default[80], 12, 0}, - {NULL, NULL, 0, 0}, {"summary", (void *) &lxb_tag_res_data_default[173], 7, 0}, + {"frame", (void *) &lxb_tag_res_data_default[88], 5, 0}, {"fetile", (void *) &lxb_tag_res_data_default[79], 6, 100}, + {"feimage", (void *) &lxb_tag_res_data_default[71], 7, 103}, {NULL, NULL, 0, 0}, + {"xmp", (void *) &lxb_tag_res_data_default[197], 3, 0}, {NULL, NULL, 0, 0}, + {"fecomposite", (void *) &lxb_tag_res_data_default[59], 11, 110}, {"feturbulence", (void *) &lxb_tag_res_data_default[80], 12, 0}, + {NULL, NULL, 0, 0}, {"summary", (void *) &lxb_tag_res_data_default[175], 7, 0}, {"mfenced", (void *) &lxb_tag_res_data_default[126], 7, 0}, {NULL, NULL, 0, 0}, - {"sub", (void *) &lxb_tag_res_data_default[172], 3, 0}, {"colgroup", (void *) &lxb_tag_res_data_default[41], 8, 0}, + {"sub", (void *) &lxb_tag_res_data_default[174], 3, 0}, {"colgroup", (void *) &lxb_tag_res_data_default[41], 8, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {NULL, NULL, 0, 0}, {"dd", (void *) &lxb_tag_res_data_default[44], 2, 103}, + {NULL, NULL, 0, 0}, {"dd", (void *) &lxb_tag_res_data_default[44], 2, 112}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"div", (void *) &lxb_tag_res_data_default[51], 3, 0}, {"textarea", (void *) &lxb_tag_res_data_default[180], 8, 0}, + {"div", (void *) &lxb_tag_res_data_default[51], 3, 0}, {"textarea", (void *) &lxb_tag_res_data_default[182], 8, 0}, {"!doctype", (void *) &lxb_tag_res_data_default[5], 8, 0}, {"applet", (void *) &lxb_tag_res_data_default[17], 6, 0}, - {NULL, NULL, 0, 0}, {"br", (void *) &lxb_tag_res_data_default[32], 2, 110}, + {NULL, NULL, 0, 0}, {"br", (void *) &lxb_tag_res_data_default[32], 2, 113}, {NULL, NULL, 0, 0}, {"keygen", (void *) &lxb_tag_res_data_default[110], 6, 0}, {"kbd", (void *) &lxb_tag_res_data_default[109], 3, 0}, {NULL, NULL, 0, 0}, {"plaintext", (void *) &lxb_tag_res_data_default[149], 9, 0}, {"s", (void *) &lxb_tag_res_data_default[159], 1, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {"bdo", (void *) &lxb_tag_res_data_default[26], 3, 0}, {"td", (void *) &lxb_tag_res_data_default[178], 2, 0}, + {"bdo", (void *) &lxb_tag_res_data_default[26], 3, 0}, {"td", (void *) &lxb_tag_res_data_default[180], 2, 0}, {"fefunca", (void *) &lxb_tag_res_data_default[66], 7, 0}, {"ol", (void *) &lxb_tag_res_data_default[141], 2, 0}, - {"thead", (void *) &lxb_tag_res_data_default[184], 5, 0}, {"nobr", (void *) &lxb_tag_res_data_default[136], 4, 112}, - {NULL, NULL, 0, 0}, {"tr", (void *) &lxb_tag_res_data_default[187], 2, 0}, + {"thead", (void *) &lxb_tag_res_data_default[186], 5, 0}, {"nobr", (void *) &lxb_tag_res_data_default[136], 4, 115}, + {NULL, NULL, 0, 0}, {"tr", (void *) &lxb_tag_res_data_default[189], 2, 0}, {"map", (void *) &lxb_tag_res_data_default[119], 3, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, - {NULL, NULL, 0, 0}, {"#undef", (void *) &lxb_tag_res_data_default[0], 6, 113}, + {NULL, NULL, 0, 0}, {"#undef", (void *) &lxb_tag_res_data_default[0], 6, 116}, {"em", (void *) &lxb_tag_res_data_default[54], 2, 0}, {NULL, NULL, 0, 0}, {"bdi", (void *) &lxb_tag_res_data_default[25], 3, 0}, {"femorphology", (void *) &lxb_tag_res_data_default[74], 12, 0}, - {"ms", (void *) &lxb_tag_res_data_default[131], 2, 116}, {"footer", (void *) &lxb_tag_res_data_default[85], 6, 0}, - {"fefuncr", (void *) &lxb_tag_res_data_default[69], 7, 0}, {"rt", (void *) &lxb_tag_res_data_default[156], 2, 117}, + {"ms", (void *) &lxb_tag_res_data_default[131], 2, 120}, {"footer", (void *) &lxb_tag_res_data_default[85], 6, 0}, + {"fefuncr", (void *) &lxb_tag_res_data_default[69], 7, 0}, {"rt", (void *) &lxb_tag_res_data_default[156], 2, 122}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0}, {"h5", (void *) &lxb_tag_res_data_default[95], 2, 0}, - {NULL, NULL, 0, 0}, {"ruby", (void *) &lxb_tag_res_data_default[158], 4, 120}, + {NULL, NULL, 0, 0}, {"ruby", (void *) &lxb_tag_res_data_default[158], 4, 123}, {"canvas", (void *) &lxb_tag_res_data_default[34], 6, 0}, {NULL, NULL, 0, 0}, {NULL, NULL, 0, 0} }; diff --git a/ext/lexbor/lexbor/unicode/base.h b/ext/lexbor/lexbor/unicode/base.h index 4797b563c335..3ca2b6b2d8fb 100644 --- a/ext/lexbor/lexbor/unicode/base.h +++ b/ext/lexbor/lexbor/unicode/base.h @@ -16,7 +16,7 @@ extern "C" { #define LXB_UNICODE_VERSION_MAJOR 0 -#define LXB_UNICODE_VERSION_MINOR 3 +#define LXB_UNICODE_VERSION_MINOR 4 #define LXB_UNICODE_VERSION_PATCH 0 #define LXB_UNICODE_VERSION_STRING LEXBOR_STRINGIZE(LXB_UNICODE_VERSION_MAJOR) "." \ diff --git a/ext/lexbor/lexbor/unicode/res.h b/ext/lexbor/lexbor/unicode/res.h index 9948cc6be1a7..cd5c2c7a1d8a 100644 --- a/ext/lexbor/lexbor/unicode/res.h +++ b/ext/lexbor/lexbor/unicode/res.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Alexander Borisov + * Copyright (C) 2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -2212,7 +2212,7 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 1, /* 088C (2188) */ 1, /* 088D (2189) */ 1, /* 088E (2190) */ - 56, /* 088F (2191) */ + 1, /* 088F (2191) */ 56, /* 0890 (2192) */ 56, /* 0891 (2193) */ 56, /* 0892 (2194) */ @@ -3185,7 +3185,7 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 1, /* 0C59 (3161) */ 1, /* 0C5A (3162) */ 56, /* 0C5B (3163) */ - 56, /* 0C5C (3164) */ + 1, /* 0C5C (3164) */ 1, /* 0C5D (3165) */ 56, /* 0C5E (3166) */ 56, /* 0C5F (3167) */ @@ -3313,7 +3313,7 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 56, /* 0CD9 (3289) */ 56, /* 0CDA (3290) */ 56, /* 0CDB (3291) */ - 56, /* 0CDC (3292) */ + 1, /* 0CDC (3292) */ 1, /* 0CDD (3293) */ 1, /* 0CDE (3294) */ 56, /* 0CDF (3295) */ @@ -6884,35 +6884,35 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 431, /* 1ACC (6860) */ 431, /* 1ACD (6861) */ 431, /* 1ACE (6862) */ - 56, /* 1ACF (6863) */ - 56, /* 1AD0 (6864) */ - 56, /* 1AD1 (6865) */ - 56, /* 1AD2 (6866) */ - 56, /* 1AD3 (6867) */ - 56, /* 1AD4 (6868) */ - 56, /* 1AD5 (6869) */ - 56, /* 1AD6 (6870) */ - 56, /* 1AD7 (6871) */ - 56, /* 1AD8 (6872) */ - 56, /* 1AD9 (6873) */ - 56, /* 1ADA (6874) */ - 56, /* 1ADB (6875) */ - 56, /* 1ADC (6876) */ - 56, /* 1ADD (6877) */ + 431, /* 1ACF (6863) */ + 431, /* 1AD0 (6864) */ + 431, /* 1AD1 (6865) */ + 431, /* 1AD2 (6866) */ + 431, /* 1AD3 (6867) */ + 431, /* 1AD4 (6868) */ + 431, /* 1AD5 (6869) */ + 431, /* 1AD6 (6870) */ + 431, /* 1AD7 (6871) */ + 431, /* 1AD8 (6872) */ + 431, /* 1AD9 (6873) */ + 431, /* 1ADA (6874) */ + 431, /* 1ADB (6875) */ + 431, /* 1ADC (6876) */ + 433, /* 1ADD (6877) */ 56, /* 1ADE (6878) */ 56, /* 1ADF (6879) */ - 56, /* 1AE0 (6880) */ - 56, /* 1AE1 (6881) */ - 56, /* 1AE2 (6882) */ - 56, /* 1AE3 (6883) */ - 56, /* 1AE4 (6884) */ - 56, /* 1AE5 (6885) */ - 56, /* 1AE6 (6886) */ - 56, /* 1AE7 (6887) */ - 56, /* 1AE8 (6888) */ - 56, /* 1AE9 (6889) */ - 56, /* 1AEA (6890) */ - 56, /* 1AEB (6891) */ + 431, /* 1AE0 (6880) */ + 431, /* 1AE1 (6881) */ + 431, /* 1AE2 (6882) */ + 431, /* 1AE3 (6883) */ + 431, /* 1AE4 (6884) */ + 431, /* 1AE5 (6885) */ + 433, /* 1AE6 (6886) */ + 431, /* 1AE7 (6887) */ + 431, /* 1AE8 (6888) */ + 431, /* 1AE9 (6889) */ + 431, /* 1AEA (6890) */ + 446, /* 1AEB (6891) */ 56, /* 1AEC (6892) */ 56, /* 1AED (6893) */ 56, /* 1AEE (6894) */ @@ -8406,7 +8406,7 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 1, /* 20BE (8382) */ 1, /* 20BF (8383) */ 1, /* 20C0 (8384) */ - 56, /* 20C1 (8385) */ + 1, /* 20C1 (8385) */ 56, /* 20C2 (8386) */ 56, /* 20C3 (8387) */ 56, /* 20C4 (8388) */ @@ -11179,7 +11179,7 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 1, /* 2B93 (11155) */ 1, /* 2B94 (11156) */ 1, /* 2B95 (11157) */ - 56, /* 2B96 (11158) */ + 1, /* 2B96 (11158) */ 1, /* 2B97 (11159) */ 1, /* 2B98 (11160) */ 1, /* 2B99 (11161) */ @@ -42979,21 +42979,21 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 3245, /* A7CB (42955) */ 3246, /* A7CC (42956) */ 1, /* A7CD (42957) */ - 56, /* A7CE (42958) */ - 56, /* A7CF (42959) */ - 3247, /* A7D0 (42960) */ + 3247, /* A7CE (42958) */ + 1, /* A7CF (42959) */ + 3248, /* A7D0 (42960) */ 1, /* A7D1 (42961) */ - 56, /* A7D2 (42962) */ + 3249, /* A7D2 (42962) */ 1, /* A7D3 (42963) */ - 56, /* A7D4 (42964) */ + 3250, /* A7D4 (42964) */ 1, /* A7D5 (42965) */ - 3248, /* A7D6 (42966) */ + 3251, /* A7D6 (42966) */ 1, /* A7D7 (42967) */ - 3249, /* A7D8 (42968) */ + 3252, /* A7D8 (42968) */ 1, /* A7D9 (42969) */ - 3250, /* A7DA (42970) */ + 3253, /* A7DA (42970) */ 1, /* A7DB (42971) */ - 3251, /* A7DC (42972) */ + 3254, /* A7DC (42972) */ 56, /* A7DD (42973) */ 56, /* A7DE (42974) */ 56, /* A7DF (42975) */ @@ -43014,15 +43014,15 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 56, /* A7EE (42990) */ 56, /* A7EF (42991) */ 56, /* A7F0 (42992) */ - 56, /* A7F1 (42993) */ - 3252, /* A7F2 (42994) */ - 3253, /* A7F3 (42995) */ - 3254, /* A7F4 (42996) */ - 3255, /* A7F5 (42997) */ + 3255, /* A7F1 (42993) */ + 3256, /* A7F2 (42994) */ + 3257, /* A7F3 (42995) */ + 3258, /* A7F4 (42996) */ + 3259, /* A7F5 (42997) */ 1, /* A7F6 (42998) */ 1, /* A7F7 (42999) */ - 3256, /* A7F8 (43000) */ - 3257, /* A7F9 (43001) */ + 3260, /* A7F8 (43000) */ + 3261, /* A7F9 (43001) */ 1, /* A7FA (43002) */ 1, /* A7FB (43003) */ 1, /* A7FC (43004) */ @@ -43889,10 +43889,10 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 1, /* AB59 (43865) */ 1, /* AB5A (43866) */ 1, /* AB5B (43867) */ - 3258, /* AB5C (43868) */ - 3259, /* AB5D (43869) */ - 3260, /* AB5E (43870) */ - 3261, /* AB5F (43871) */ + 3262, /* AB5C (43868) */ + 3263, /* AB5D (43869) */ + 3264, /* AB5E (43870) */ + 3265, /* AB5F (43871) */ 1, /* AB60 (43872) */ 1, /* AB61 (43873) */ 1, /* AB62 (43874) */ @@ -43902,93 +43902,93 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 1, /* AB66 (43878) */ 1, /* AB67 (43879) */ 1, /* AB68 (43880) */ - 3262, /* AB69 (43881) */ + 3266, /* AB69 (43881) */ 1, /* AB6A (43882) */ 1, /* AB6B (43883) */ 56, /* AB6C (43884) */ 56, /* AB6D (43885) */ 56, /* AB6E (43886) */ 56, /* AB6F (43887) */ - 3263, /* AB70 (43888) */ - 3264, /* AB71 (43889) */ - 3265, /* AB72 (43890) */ - 3266, /* AB73 (43891) */ - 3267, /* AB74 (43892) */ - 3268, /* AB75 (43893) */ - 3269, /* AB76 (43894) */ - 3270, /* AB77 (43895) */ - 3271, /* AB78 (43896) */ - 3272, /* AB79 (43897) */ - 3273, /* AB7A (43898) */ - 3274, /* AB7B (43899) */ - 3275, /* AB7C (43900) */ - 3276, /* AB7D (43901) */ - 3277, /* AB7E (43902) */ - 3278, /* AB7F (43903) */ - 3279, /* AB80 (43904) */ - 3280, /* AB81 (43905) */ - 3281, /* AB82 (43906) */ - 3282, /* AB83 (43907) */ - 3283, /* AB84 (43908) */ - 3284, /* AB85 (43909) */ - 3285, /* AB86 (43910) */ - 3286, /* AB87 (43911) */ - 3287, /* AB88 (43912) */ - 3288, /* AB89 (43913) */ - 3289, /* AB8A (43914) */ - 3290, /* AB8B (43915) */ - 3291, /* AB8C (43916) */ - 3292, /* AB8D (43917) */ - 3293, /* AB8E (43918) */ - 3294, /* AB8F (43919) */ - 3295, /* AB90 (43920) */ - 3296, /* AB91 (43921) */ - 3297, /* AB92 (43922) */ - 3298, /* AB93 (43923) */ - 3299, /* AB94 (43924) */ - 3300, /* AB95 (43925) */ - 3301, /* AB96 (43926) */ - 3302, /* AB97 (43927) */ - 3303, /* AB98 (43928) */ - 3304, /* AB99 (43929) */ - 3305, /* AB9A (43930) */ - 3306, /* AB9B (43931) */ - 3307, /* AB9C (43932) */ - 3308, /* AB9D (43933) */ - 3309, /* AB9E (43934) */ - 3310, /* AB9F (43935) */ - 3311, /* ABA0 (43936) */ - 3312, /* ABA1 (43937) */ - 3313, /* ABA2 (43938) */ - 3314, /* ABA3 (43939) */ - 3315, /* ABA4 (43940) */ - 3316, /* ABA5 (43941) */ - 3317, /* ABA6 (43942) */ - 3318, /* ABA7 (43943) */ - 3319, /* ABA8 (43944) */ - 3320, /* ABA9 (43945) */ - 3321, /* ABAA (43946) */ - 3322, /* ABAB (43947) */ - 3323, /* ABAC (43948) */ - 3324, /* ABAD (43949) */ - 3325, /* ABAE (43950) */ - 3326, /* ABAF (43951) */ - 3327, /* ABB0 (43952) */ - 3328, /* ABB1 (43953) */ - 3329, /* ABB2 (43954) */ - 3330, /* ABB3 (43955) */ - 3331, /* ABB4 (43956) */ - 3332, /* ABB5 (43957) */ - 3333, /* ABB6 (43958) */ - 3334, /* ABB7 (43959) */ - 3335, /* ABB8 (43960) */ - 3336, /* ABB9 (43961) */ - 3337, /* ABBA (43962) */ - 3338, /* ABBB (43963) */ - 3339, /* ABBC (43964) */ - 3340, /* ABBD (43965) */ - 3341, /* ABBE (43966) */ - 3342, /* ABBF (43967) */ + 3267, /* AB70 (43888) */ + 3268, /* AB71 (43889) */ + 3269, /* AB72 (43890) */ + 3270, /* AB73 (43891) */ + 3271, /* AB74 (43892) */ + 3272, /* AB75 (43893) */ + 3273, /* AB76 (43894) */ + 3274, /* AB77 (43895) */ + 3275, /* AB78 (43896) */ + 3276, /* AB79 (43897) */ + 3277, /* AB7A (43898) */ + 3278, /* AB7B (43899) */ + 3279, /* AB7C (43900) */ + 3280, /* AB7D (43901) */ + 3281, /* AB7E (43902) */ + 3282, /* AB7F (43903) */ + 3283, /* AB80 (43904) */ + 3284, /* AB81 (43905) */ + 3285, /* AB82 (43906) */ + 3286, /* AB83 (43907) */ + 3287, /* AB84 (43908) */ + 3288, /* AB85 (43909) */ + 3289, /* AB86 (43910) */ + 3290, /* AB87 (43911) */ + 3291, /* AB88 (43912) */ + 3292, /* AB89 (43913) */ + 3293, /* AB8A (43914) */ + 3294, /* AB8B (43915) */ + 3295, /* AB8C (43916) */ + 3296, /* AB8D (43917) */ + 3297, /* AB8E (43918) */ + 3298, /* AB8F (43919) */ + 3299, /* AB90 (43920) */ + 3300, /* AB91 (43921) */ + 3301, /* AB92 (43922) */ + 3302, /* AB93 (43923) */ + 3303, /* AB94 (43924) */ + 3304, /* AB95 (43925) */ + 3305, /* AB96 (43926) */ + 3306, /* AB97 (43927) */ + 3307, /* AB98 (43928) */ + 3308, /* AB99 (43929) */ + 3309, /* AB9A (43930) */ + 3310, /* AB9B (43931) */ + 3311, /* AB9C (43932) */ + 3312, /* AB9D (43933) */ + 3313, /* AB9E (43934) */ + 3314, /* AB9F (43935) */ + 3315, /* ABA0 (43936) */ + 3316, /* ABA1 (43937) */ + 3317, /* ABA2 (43938) */ + 3318, /* ABA3 (43939) */ + 3319, /* ABA4 (43940) */ + 3320, /* ABA5 (43941) */ + 3321, /* ABA6 (43942) */ + 3322, /* ABA7 (43943) */ + 3323, /* ABA8 (43944) */ + 3324, /* ABA9 (43945) */ + 3325, /* ABAA (43946) */ + 3326, /* ABAB (43947) */ + 3327, /* ABAC (43948) */ + 3328, /* ABAD (43949) */ + 3329, /* ABAE (43950) */ + 3330, /* ABAF (43951) */ + 3331, /* ABB0 (43952) */ + 3332, /* ABB1 (43953) */ + 3333, /* ABB2 (43954) */ + 3334, /* ABB3 (43955) */ + 3335, /* ABB4 (43956) */ + 3336, /* ABB5 (43957) */ + 3337, /* ABB6 (43958) */ + 3338, /* ABB7 (43959) */ + 3339, /* ABB8 (43960) */ + 3340, /* ABB9 (43961) */ + 3341, /* ABBA (43962) */ + 3342, /* ABBB (43963) */ + 3343, /* ABBC (43964) */ + 3344, /* ABBD (43965) */ + 3345, /* ABBE (43966) */ + 3346, /* ABBF (43967) */ 1, /* ABC0 (43968) */ 1, /* ABC1 (43969) */ 1, /* ABC2 (43970) */ @@ -44053,11178 +44053,11178 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = 56, /* ABFD (44029) */ 56, /* ABFE (44030) */ 56, /* ABFF (44031) */ - 3343, /* AC00 (44032) */ - 3343, /* AC01 (44033) */ - 3343, /* AC02 (44034) */ - 3343, /* AC03 (44035) */ - 3343, /* AC04 (44036) */ - 3343, /* AC05 (44037) */ - 3343, /* AC06 (44038) */ - 3343, /* AC07 (44039) */ - 3343, /* AC08 (44040) */ - 3343, /* AC09 (44041) */ - 3343, /* AC0A (44042) */ - 3343, /* AC0B (44043) */ - 3343, /* AC0C (44044) */ - 3343, /* AC0D (44045) */ - 3343, /* AC0E (44046) */ - 3343, /* AC0F (44047) */ - 3343, /* AC10 (44048) */ - 3343, /* AC11 (44049) */ - 3343, /* AC12 (44050) */ - 3343, /* AC13 (44051) */ - 3343, /* AC14 (44052) */ - 3343, /* AC15 (44053) */ - 3343, /* AC16 (44054) */ - 3343, /* AC17 (44055) */ - 3343, /* AC18 (44056) */ - 3343, /* AC19 (44057) */ - 3343, /* AC1A (44058) */ - 3343, /* AC1B (44059) */ - 3343, /* AC1C (44060) */ - 3343, /* AC1D (44061) */ - 3343, /* AC1E (44062) */ - 3343, /* AC1F (44063) */ - 3343, /* AC20 (44064) */ - 3343, /* AC21 (44065) */ - 3343, /* AC22 (44066) */ - 3343, /* AC23 (44067) */ - 3343, /* AC24 (44068) */ - 3343, /* AC25 (44069) */ - 3343, /* AC26 (44070) */ - 3343, /* AC27 (44071) */ - 3343, /* AC28 (44072) */ - 3343, /* AC29 (44073) */ - 3343, /* AC2A (44074) */ - 3343, /* AC2B (44075) */ - 3343, /* AC2C (44076) */ - 3343, /* AC2D (44077) */ - 3343, /* AC2E (44078) */ - 3343, /* AC2F (44079) */ - 3343, /* AC30 (44080) */ - 3343, /* AC31 (44081) */ - 3343, /* AC32 (44082) */ - 3343, /* AC33 (44083) */ - 3343, /* AC34 (44084) */ - 3343, /* AC35 (44085) */ - 3343, /* AC36 (44086) */ - 3343, /* AC37 (44087) */ - 3343, /* AC38 (44088) */ - 3343, /* AC39 (44089) */ - 3343, /* AC3A (44090) */ - 3343, /* AC3B (44091) */ - 3343, /* AC3C (44092) */ - 3343, /* AC3D (44093) */ - 3343, /* AC3E (44094) */ - 3343, /* AC3F (44095) */ - 3343, /* AC40 (44096) */ - 3343, /* AC41 (44097) */ - 3343, /* AC42 (44098) */ - 3343, /* AC43 (44099) */ - 3343, /* AC44 (44100) */ - 3343, /* AC45 (44101) */ - 3343, /* AC46 (44102) */ - 3343, /* AC47 (44103) */ - 3343, /* AC48 (44104) */ - 3343, /* AC49 (44105) */ - 3343, /* AC4A (44106) */ - 3343, /* AC4B (44107) */ - 3343, /* AC4C (44108) */ - 3343, /* AC4D (44109) */ - 3343, /* AC4E (44110) */ - 3343, /* AC4F (44111) */ - 3343, /* AC50 (44112) */ - 3343, /* AC51 (44113) */ - 3343, /* AC52 (44114) */ - 3343, /* AC53 (44115) */ - 3343, /* AC54 (44116) */ - 3343, /* AC55 (44117) */ - 3343, /* AC56 (44118) */ - 3343, /* AC57 (44119) */ - 3343, /* AC58 (44120) */ - 3343, /* AC59 (44121) */ - 3343, /* AC5A (44122) */ - 3343, /* AC5B (44123) */ - 3343, /* AC5C (44124) */ - 3343, /* AC5D (44125) */ - 3343, /* AC5E (44126) */ - 3343, /* AC5F (44127) */ - 3343, /* AC60 (44128) */ - 3343, /* AC61 (44129) */ - 3343, /* AC62 (44130) */ - 3343, /* AC63 (44131) */ - 3343, /* AC64 (44132) */ - 3343, /* AC65 (44133) */ - 3343, /* AC66 (44134) */ - 3343, /* AC67 (44135) */ - 3343, /* AC68 (44136) */ - 3343, /* AC69 (44137) */ - 3343, /* AC6A (44138) */ - 3343, /* AC6B (44139) */ - 3343, /* AC6C (44140) */ - 3343, /* AC6D (44141) */ - 3343, /* AC6E (44142) */ - 3343, /* AC6F (44143) */ - 3343, /* AC70 (44144) */ - 3343, /* AC71 (44145) */ - 3343, /* AC72 (44146) */ - 3343, /* AC73 (44147) */ - 3343, /* AC74 (44148) */ - 3343, /* AC75 (44149) */ - 3343, /* AC76 (44150) */ - 3343, /* AC77 (44151) */ - 3343, /* AC78 (44152) */ - 3343, /* AC79 (44153) */ - 3343, /* AC7A (44154) */ - 3343, /* AC7B (44155) */ - 3343, /* AC7C (44156) */ - 3343, /* AC7D (44157) */ - 3343, /* AC7E (44158) */ - 3343, /* AC7F (44159) */ - 3343, /* AC80 (44160) */ - 3343, /* AC81 (44161) */ - 3343, /* AC82 (44162) */ - 3343, /* AC83 (44163) */ - 3343, /* AC84 (44164) */ - 3343, /* AC85 (44165) */ - 3343, /* AC86 (44166) */ - 3343, /* AC87 (44167) */ - 3343, /* AC88 (44168) */ - 3343, /* AC89 (44169) */ - 3343, /* AC8A (44170) */ - 3343, /* AC8B (44171) */ - 3343, /* AC8C (44172) */ - 3343, /* AC8D (44173) */ - 3343, /* AC8E (44174) */ - 3343, /* AC8F (44175) */ - 3343, /* AC90 (44176) */ - 3343, /* AC91 (44177) */ - 3343, /* AC92 (44178) */ - 3343, /* AC93 (44179) */ - 3343, /* AC94 (44180) */ - 3343, /* AC95 (44181) */ - 3343, /* AC96 (44182) */ - 3343, /* AC97 (44183) */ - 3343, /* AC98 (44184) */ - 3343, /* AC99 (44185) */ - 3343, /* AC9A (44186) */ - 3343, /* AC9B (44187) */ - 3343, /* AC9C (44188) */ - 3343, /* AC9D (44189) */ - 3343, /* AC9E (44190) */ - 3343, /* AC9F (44191) */ - 3343, /* ACA0 (44192) */ - 3343, /* ACA1 (44193) */ - 3343, /* ACA2 (44194) */ - 3343, /* ACA3 (44195) */ - 3343, /* ACA4 (44196) */ - 3343, /* ACA5 (44197) */ - 3343, /* ACA6 (44198) */ - 3343, /* ACA7 (44199) */ - 3343, /* ACA8 (44200) */ - 3343, /* ACA9 (44201) */ - 3343, /* ACAA (44202) */ - 3343, /* ACAB (44203) */ - 3343, /* ACAC (44204) */ - 3343, /* ACAD (44205) */ - 3343, /* ACAE (44206) */ - 3343, /* ACAF (44207) */ - 3343, /* ACB0 (44208) */ - 3343, /* ACB1 (44209) */ - 3343, /* ACB2 (44210) */ - 3343, /* ACB3 (44211) */ - 3343, /* ACB4 (44212) */ - 3343, /* ACB5 (44213) */ - 3343, /* ACB6 (44214) */ - 3343, /* ACB7 (44215) */ - 3343, /* ACB8 (44216) */ - 3343, /* ACB9 (44217) */ - 3343, /* ACBA (44218) */ - 3343, /* ACBB (44219) */ - 3343, /* ACBC (44220) */ - 3343, /* ACBD (44221) */ - 3343, /* ACBE (44222) */ - 3343, /* ACBF (44223) */ - 3343, /* ACC0 (44224) */ - 3343, /* ACC1 (44225) */ - 3343, /* ACC2 (44226) */ - 3343, /* ACC3 (44227) */ - 3343, /* ACC4 (44228) */ - 3343, /* ACC5 (44229) */ - 3343, /* ACC6 (44230) */ - 3343, /* ACC7 (44231) */ - 3343, /* ACC8 (44232) */ - 3343, /* ACC9 (44233) */ - 3343, /* ACCA (44234) */ - 3343, /* ACCB (44235) */ - 3343, /* ACCC (44236) */ - 3343, /* ACCD (44237) */ - 3343, /* ACCE (44238) */ - 3343, /* ACCF (44239) */ - 3343, /* ACD0 (44240) */ - 3343, /* ACD1 (44241) */ - 3343, /* ACD2 (44242) */ - 3343, /* ACD3 (44243) */ - 3343, /* ACD4 (44244) */ - 3343, /* ACD5 (44245) */ - 3343, /* ACD6 (44246) */ - 3343, /* ACD7 (44247) */ - 3343, /* ACD8 (44248) */ - 3343, /* ACD9 (44249) */ - 3343, /* ACDA (44250) */ - 3343, /* ACDB (44251) */ - 3343, /* ACDC (44252) */ - 3343, /* ACDD (44253) */ - 3343, /* ACDE (44254) */ - 3343, /* ACDF (44255) */ - 3343, /* ACE0 (44256) */ - 3343, /* ACE1 (44257) */ - 3343, /* ACE2 (44258) */ - 3343, /* ACE3 (44259) */ - 3343, /* ACE4 (44260) */ - 3343, /* ACE5 (44261) */ - 3343, /* ACE6 (44262) */ - 3343, /* ACE7 (44263) */ - 3343, /* ACE8 (44264) */ - 3343, /* ACE9 (44265) */ - 3343, /* ACEA (44266) */ - 3343, /* ACEB (44267) */ - 3343, /* ACEC (44268) */ - 3343, /* ACED (44269) */ - 3343, /* ACEE (44270) */ - 3343, /* ACEF (44271) */ - 3343, /* ACF0 (44272) */ - 3343, /* ACF1 (44273) */ - 3343, /* ACF2 (44274) */ - 3343, /* ACF3 (44275) */ - 3343, /* ACF4 (44276) */ - 3343, /* ACF5 (44277) */ - 3343, /* ACF6 (44278) */ - 3343, /* ACF7 (44279) */ - 3343, /* ACF8 (44280) */ - 3343, /* ACF9 (44281) */ - 3343, /* ACFA (44282) */ - 3343, /* ACFB (44283) */ - 3343, /* ACFC (44284) */ - 3343, /* ACFD (44285) */ - 3343, /* ACFE (44286) */ - 3343, /* ACFF (44287) */ - 3343, /* AD00 (44288) */ - 3343, /* AD01 (44289) */ - 3343, /* AD02 (44290) */ - 3343, /* AD03 (44291) */ - 3343, /* AD04 (44292) */ - 3343, /* AD05 (44293) */ - 3343, /* AD06 (44294) */ - 3343, /* AD07 (44295) */ - 3343, /* AD08 (44296) */ - 3343, /* AD09 (44297) */ - 3343, /* AD0A (44298) */ - 3343, /* AD0B (44299) */ - 3343, /* AD0C (44300) */ - 3343, /* AD0D (44301) */ - 3343, /* AD0E (44302) */ - 3343, /* AD0F (44303) */ - 3343, /* AD10 (44304) */ - 3343, /* AD11 (44305) */ - 3343, /* AD12 (44306) */ - 3343, /* AD13 (44307) */ - 3343, /* AD14 (44308) */ - 3343, /* AD15 (44309) */ - 3343, /* AD16 (44310) */ - 3343, /* AD17 (44311) */ - 3343, /* AD18 (44312) */ - 3343, /* AD19 (44313) */ - 3343, /* AD1A (44314) */ - 3343, /* AD1B (44315) */ - 3343, /* AD1C (44316) */ - 3343, /* AD1D (44317) */ - 3343, /* AD1E (44318) */ - 3343, /* AD1F (44319) */ - 3343, /* AD20 (44320) */ - 3343, /* AD21 (44321) */ - 3343, /* AD22 (44322) */ - 3343, /* AD23 (44323) */ - 3343, /* AD24 (44324) */ - 3343, /* AD25 (44325) */ - 3343, /* AD26 (44326) */ - 3343, /* AD27 (44327) */ - 3343, /* AD28 (44328) */ - 3343, /* AD29 (44329) */ - 3343, /* AD2A (44330) */ - 3343, /* AD2B (44331) */ - 3343, /* AD2C (44332) */ - 3343, /* AD2D (44333) */ - 3343, /* AD2E (44334) */ - 3343, /* AD2F (44335) */ - 3343, /* AD30 (44336) */ - 3343, /* AD31 (44337) */ - 3343, /* AD32 (44338) */ - 3343, /* AD33 (44339) */ - 3343, /* AD34 (44340) */ - 3343, /* AD35 (44341) */ - 3343, /* AD36 (44342) */ - 3343, /* AD37 (44343) */ - 3343, /* AD38 (44344) */ - 3343, /* AD39 (44345) */ - 3343, /* AD3A (44346) */ - 3343, /* AD3B (44347) */ - 3343, /* AD3C (44348) */ - 3343, /* AD3D (44349) */ - 3343, /* AD3E (44350) */ - 3343, /* AD3F (44351) */ - 3343, /* AD40 (44352) */ - 3343, /* AD41 (44353) */ - 3343, /* AD42 (44354) */ - 3343, /* AD43 (44355) */ - 3343, /* AD44 (44356) */ - 3343, /* AD45 (44357) */ - 3343, /* AD46 (44358) */ - 3343, /* AD47 (44359) */ - 3343, /* AD48 (44360) */ - 3343, /* AD49 (44361) */ - 3343, /* AD4A (44362) */ - 3343, /* AD4B (44363) */ - 3343, /* AD4C (44364) */ - 3343, /* AD4D (44365) */ - 3343, /* AD4E (44366) */ - 3343, /* AD4F (44367) */ - 3343, /* AD50 (44368) */ - 3343, /* AD51 (44369) */ - 3343, /* AD52 (44370) */ - 3343, /* AD53 (44371) */ - 3343, /* AD54 (44372) */ - 3343, /* AD55 (44373) */ - 3343, /* AD56 (44374) */ - 3343, /* AD57 (44375) */ - 3343, /* AD58 (44376) */ - 3343, /* AD59 (44377) */ - 3343, /* AD5A (44378) */ - 3343, /* AD5B (44379) */ - 3343, /* AD5C (44380) */ - 3343, /* AD5D (44381) */ - 3343, /* AD5E (44382) */ - 3343, /* AD5F (44383) */ - 3343, /* AD60 (44384) */ - 3343, /* AD61 (44385) */ - 3343, /* AD62 (44386) */ - 3343, /* AD63 (44387) */ - 3343, /* AD64 (44388) */ - 3343, /* AD65 (44389) */ - 3343, /* AD66 (44390) */ - 3343, /* AD67 (44391) */ - 3343, /* AD68 (44392) */ - 3343, /* AD69 (44393) */ - 3343, /* AD6A (44394) */ - 3343, /* AD6B (44395) */ - 3343, /* AD6C (44396) */ - 3343, /* AD6D (44397) */ - 3343, /* AD6E (44398) */ - 3343, /* AD6F (44399) */ - 3343, /* AD70 (44400) */ - 3343, /* AD71 (44401) */ - 3343, /* AD72 (44402) */ - 3343, /* AD73 (44403) */ - 3343, /* AD74 (44404) */ - 3343, /* AD75 (44405) */ - 3343, /* AD76 (44406) */ - 3343, /* AD77 (44407) */ - 3343, /* AD78 (44408) */ - 3343, /* AD79 (44409) */ - 3343, /* AD7A (44410) */ - 3343, /* AD7B (44411) */ - 3343, /* AD7C (44412) */ - 3343, /* AD7D (44413) */ - 3343, /* AD7E (44414) */ - 3343, /* AD7F (44415) */ - 3343, /* AD80 (44416) */ - 3343, /* AD81 (44417) */ - 3343, /* AD82 (44418) */ - 3343, /* AD83 (44419) */ - 3343, /* AD84 (44420) */ - 3343, /* AD85 (44421) */ - 3343, /* AD86 (44422) */ - 3343, /* AD87 (44423) */ - 3343, /* AD88 (44424) */ - 3343, /* AD89 (44425) */ - 3343, /* AD8A (44426) */ - 3343, /* AD8B (44427) */ - 3343, /* AD8C (44428) */ - 3343, /* AD8D (44429) */ - 3343, /* AD8E (44430) */ - 3343, /* AD8F (44431) */ - 3343, /* AD90 (44432) */ - 3343, /* AD91 (44433) */ - 3343, /* AD92 (44434) */ - 3343, /* AD93 (44435) */ - 3343, /* AD94 (44436) */ - 3343, /* AD95 (44437) */ - 3343, /* AD96 (44438) */ - 3343, /* AD97 (44439) */ - 3343, /* AD98 (44440) */ - 3343, /* AD99 (44441) */ - 3343, /* AD9A (44442) */ - 3343, /* AD9B (44443) */ - 3343, /* AD9C (44444) */ - 3343, /* AD9D (44445) */ - 3343, /* AD9E (44446) */ - 3343, /* AD9F (44447) */ - 3343, /* ADA0 (44448) */ - 3343, /* ADA1 (44449) */ - 3343, /* ADA2 (44450) */ - 3343, /* ADA3 (44451) */ - 3343, /* ADA4 (44452) */ - 3343, /* ADA5 (44453) */ - 3343, /* ADA6 (44454) */ - 3343, /* ADA7 (44455) */ - 3343, /* ADA8 (44456) */ - 3343, /* ADA9 (44457) */ - 3343, /* ADAA (44458) */ - 3343, /* ADAB (44459) */ - 3343, /* ADAC (44460) */ - 3343, /* ADAD (44461) */ - 3343, /* ADAE (44462) */ - 3343, /* ADAF (44463) */ - 3343, /* ADB0 (44464) */ - 3343, /* ADB1 (44465) */ - 3343, /* ADB2 (44466) */ - 3343, /* ADB3 (44467) */ - 3343, /* ADB4 (44468) */ - 3343, /* ADB5 (44469) */ - 3343, /* ADB6 (44470) */ - 3343, /* ADB7 (44471) */ - 3343, /* ADB8 (44472) */ - 3343, /* ADB9 (44473) */ - 3343, /* ADBA (44474) */ - 3343, /* ADBB (44475) */ - 3343, /* ADBC (44476) */ - 3343, /* ADBD (44477) */ - 3343, /* ADBE (44478) */ - 3343, /* ADBF (44479) */ - 3343, /* ADC0 (44480) */ - 3343, /* ADC1 (44481) */ - 3343, /* ADC2 (44482) */ - 3343, /* ADC3 (44483) */ - 3343, /* ADC4 (44484) */ - 3343, /* ADC5 (44485) */ - 3343, /* ADC6 (44486) */ - 3343, /* ADC7 (44487) */ - 3343, /* ADC8 (44488) */ - 3343, /* ADC9 (44489) */ - 3343, /* ADCA (44490) */ - 3343, /* ADCB (44491) */ - 3343, /* ADCC (44492) */ - 3343, /* ADCD (44493) */ - 3343, /* ADCE (44494) */ - 3343, /* ADCF (44495) */ - 3343, /* ADD0 (44496) */ - 3343, /* ADD1 (44497) */ - 3343, /* ADD2 (44498) */ - 3343, /* ADD3 (44499) */ - 3343, /* ADD4 (44500) */ - 3343, /* ADD5 (44501) */ - 3343, /* ADD6 (44502) */ - 3343, /* ADD7 (44503) */ - 3343, /* ADD8 (44504) */ - 3343, /* ADD9 (44505) */ - 3343, /* ADDA (44506) */ - 3343, /* ADDB (44507) */ - 3343, /* ADDC (44508) */ - 3343, /* ADDD (44509) */ - 3343, /* ADDE (44510) */ - 3343, /* ADDF (44511) */ - 3343, /* ADE0 (44512) */ - 3343, /* ADE1 (44513) */ - 3343, /* ADE2 (44514) */ - 3343, /* ADE3 (44515) */ - 3343, /* ADE4 (44516) */ - 3343, /* ADE5 (44517) */ - 3343, /* ADE6 (44518) */ - 3343, /* ADE7 (44519) */ - 3343, /* ADE8 (44520) */ - 3343, /* ADE9 (44521) */ - 3343, /* ADEA (44522) */ - 3343, /* ADEB (44523) */ - 3343, /* ADEC (44524) */ - 3343, /* ADED (44525) */ - 3343, /* ADEE (44526) */ - 3343, /* ADEF (44527) */ - 3343, /* ADF0 (44528) */ - 3343, /* ADF1 (44529) */ - 3343, /* ADF2 (44530) */ - 3343, /* ADF3 (44531) */ - 3343, /* ADF4 (44532) */ - 3343, /* ADF5 (44533) */ - 3343, /* ADF6 (44534) */ - 3343, /* ADF7 (44535) */ - 3343, /* ADF8 (44536) */ - 3343, /* ADF9 (44537) */ - 3343, /* ADFA (44538) */ - 3343, /* ADFB (44539) */ - 3343, /* ADFC (44540) */ - 3343, /* ADFD (44541) */ - 3343, /* ADFE (44542) */ - 3343, /* ADFF (44543) */ - 3343, /* AE00 (44544) */ - 3343, /* AE01 (44545) */ - 3343, /* AE02 (44546) */ - 3343, /* AE03 (44547) */ - 3343, /* AE04 (44548) */ - 3343, /* AE05 (44549) */ - 3343, /* AE06 (44550) */ - 3343, /* AE07 (44551) */ - 3343, /* AE08 (44552) */ - 3343, /* AE09 (44553) */ - 3343, /* AE0A (44554) */ - 3343, /* AE0B (44555) */ - 3343, /* AE0C (44556) */ - 3343, /* AE0D (44557) */ - 3343, /* AE0E (44558) */ - 3343, /* AE0F (44559) */ - 3343, /* AE10 (44560) */ - 3343, /* AE11 (44561) */ - 3343, /* AE12 (44562) */ - 3343, /* AE13 (44563) */ - 3343, /* AE14 (44564) */ - 3343, /* AE15 (44565) */ - 3343, /* AE16 (44566) */ - 3343, /* AE17 (44567) */ - 3343, /* AE18 (44568) */ - 3343, /* AE19 (44569) */ - 3343, /* AE1A (44570) */ - 3343, /* AE1B (44571) */ - 3343, /* AE1C (44572) */ - 3343, /* AE1D (44573) */ - 3343, /* AE1E (44574) */ - 3343, /* AE1F (44575) */ - 3343, /* AE20 (44576) */ - 3343, /* AE21 (44577) */ - 3343, /* AE22 (44578) */ - 3343, /* AE23 (44579) */ - 3343, /* AE24 (44580) */ - 3343, /* AE25 (44581) */ - 3343, /* AE26 (44582) */ - 3343, /* AE27 (44583) */ - 3343, /* AE28 (44584) */ - 3343, /* AE29 (44585) */ - 3343, /* AE2A (44586) */ - 3343, /* AE2B (44587) */ - 3343, /* AE2C (44588) */ - 3343, /* AE2D (44589) */ - 3343, /* AE2E (44590) */ - 3343, /* AE2F (44591) */ - 3343, /* AE30 (44592) */ - 3343, /* AE31 (44593) */ - 3343, /* AE32 (44594) */ - 3343, /* AE33 (44595) */ - 3343, /* AE34 (44596) */ - 3343, /* AE35 (44597) */ - 3343, /* AE36 (44598) */ - 3343, /* AE37 (44599) */ - 3343, /* AE38 (44600) */ - 3343, /* AE39 (44601) */ - 3343, /* AE3A (44602) */ - 3343, /* AE3B (44603) */ - 3343, /* AE3C (44604) */ - 3343, /* AE3D (44605) */ - 3343, /* AE3E (44606) */ - 3343, /* AE3F (44607) */ - 3343, /* AE40 (44608) */ - 3343, /* AE41 (44609) */ - 3343, /* AE42 (44610) */ - 3343, /* AE43 (44611) */ - 3343, /* AE44 (44612) */ - 3343, /* AE45 (44613) */ - 3343, /* AE46 (44614) */ - 3343, /* AE47 (44615) */ - 3343, /* AE48 (44616) */ - 3343, /* AE49 (44617) */ - 3343, /* AE4A (44618) */ - 3343, /* AE4B (44619) */ - 3343, /* AE4C (44620) */ - 3343, /* AE4D (44621) */ - 3343, /* AE4E (44622) */ - 3343, /* AE4F (44623) */ - 3343, /* AE50 (44624) */ - 3343, /* AE51 (44625) */ - 3343, /* AE52 (44626) */ - 3343, /* AE53 (44627) */ - 3343, /* AE54 (44628) */ - 3343, /* AE55 (44629) */ - 3343, /* AE56 (44630) */ - 3343, /* AE57 (44631) */ - 3343, /* AE58 (44632) */ - 3343, /* AE59 (44633) */ - 3343, /* AE5A (44634) */ - 3343, /* AE5B (44635) */ - 3343, /* AE5C (44636) */ - 3343, /* AE5D (44637) */ - 3343, /* AE5E (44638) */ - 3343, /* AE5F (44639) */ - 3343, /* AE60 (44640) */ - 3343, /* AE61 (44641) */ - 3343, /* AE62 (44642) */ - 3343, /* AE63 (44643) */ - 3343, /* AE64 (44644) */ - 3343, /* AE65 (44645) */ - 3343, /* AE66 (44646) */ - 3343, /* AE67 (44647) */ - 3343, /* AE68 (44648) */ - 3343, /* AE69 (44649) */ - 3343, /* AE6A (44650) */ - 3343, /* AE6B (44651) */ - 3343, /* AE6C (44652) */ - 3343, /* AE6D (44653) */ - 3343, /* AE6E (44654) */ - 3343, /* AE6F (44655) */ - 3343, /* AE70 (44656) */ - 3343, /* AE71 (44657) */ - 3343, /* AE72 (44658) */ - 3343, /* AE73 (44659) */ - 3343, /* AE74 (44660) */ - 3343, /* AE75 (44661) */ - 3343, /* AE76 (44662) */ - 3343, /* AE77 (44663) */ - 3343, /* AE78 (44664) */ - 3343, /* AE79 (44665) */ - 3343, /* AE7A (44666) */ - 3343, /* AE7B (44667) */ - 3343, /* AE7C (44668) */ - 3343, /* AE7D (44669) */ - 3343, /* AE7E (44670) */ - 3343, /* AE7F (44671) */ - 3343, /* AE80 (44672) */ - 3343, /* AE81 (44673) */ - 3343, /* AE82 (44674) */ - 3343, /* AE83 (44675) */ - 3343, /* AE84 (44676) */ - 3343, /* AE85 (44677) */ - 3343, /* AE86 (44678) */ - 3343, /* AE87 (44679) */ - 3343, /* AE88 (44680) */ - 3343, /* AE89 (44681) */ - 3343, /* AE8A (44682) */ - 3343, /* AE8B (44683) */ - 3343, /* AE8C (44684) */ - 3343, /* AE8D (44685) */ - 3343, /* AE8E (44686) */ - 3343, /* AE8F (44687) */ - 3343, /* AE90 (44688) */ - 3343, /* AE91 (44689) */ - 3343, /* AE92 (44690) */ - 3343, /* AE93 (44691) */ - 3343, /* AE94 (44692) */ - 3343, /* AE95 (44693) */ - 3343, /* AE96 (44694) */ - 3343, /* AE97 (44695) */ - 3343, /* AE98 (44696) */ - 3343, /* AE99 (44697) */ - 3343, /* AE9A (44698) */ - 3343, /* AE9B (44699) */ - 3343, /* AE9C (44700) */ - 3343, /* AE9D (44701) */ - 3343, /* AE9E (44702) */ - 3343, /* AE9F (44703) */ - 3343, /* AEA0 (44704) */ - 3343, /* AEA1 (44705) */ - 3343, /* AEA2 (44706) */ - 3343, /* AEA3 (44707) */ - 3343, /* AEA4 (44708) */ - 3343, /* AEA5 (44709) */ - 3343, /* AEA6 (44710) */ - 3343, /* AEA7 (44711) */ - 3343, /* AEA8 (44712) */ - 3343, /* AEA9 (44713) */ - 3343, /* AEAA (44714) */ - 3343, /* AEAB (44715) */ - 3343, /* AEAC (44716) */ - 3343, /* AEAD (44717) */ - 3343, /* AEAE (44718) */ - 3343, /* AEAF (44719) */ - 3343, /* AEB0 (44720) */ - 3343, /* AEB1 (44721) */ - 3343, /* AEB2 (44722) */ - 3343, /* AEB3 (44723) */ - 3343, /* AEB4 (44724) */ - 3343, /* AEB5 (44725) */ - 3343, /* AEB6 (44726) */ - 3343, /* AEB7 (44727) */ - 3343, /* AEB8 (44728) */ - 3343, /* AEB9 (44729) */ - 3343, /* AEBA (44730) */ - 3343, /* AEBB (44731) */ - 3343, /* AEBC (44732) */ - 3343, /* AEBD (44733) */ - 3343, /* AEBE (44734) */ - 3343, /* AEBF (44735) */ - 3343, /* AEC0 (44736) */ - 3343, /* AEC1 (44737) */ - 3343, /* AEC2 (44738) */ - 3343, /* AEC3 (44739) */ - 3343, /* AEC4 (44740) */ - 3343, /* AEC5 (44741) */ - 3343, /* AEC6 (44742) */ - 3343, /* AEC7 (44743) */ - 3343, /* AEC8 (44744) */ - 3343, /* AEC9 (44745) */ - 3343, /* AECA (44746) */ - 3343, /* AECB (44747) */ - 3343, /* AECC (44748) */ - 3343, /* AECD (44749) */ - 3343, /* AECE (44750) */ - 3343, /* AECF (44751) */ - 3343, /* AED0 (44752) */ - 3343, /* AED1 (44753) */ - 3343, /* AED2 (44754) */ - 3343, /* AED3 (44755) */ - 3343, /* AED4 (44756) */ - 3343, /* AED5 (44757) */ - 3343, /* AED6 (44758) */ - 3343, /* AED7 (44759) */ - 3343, /* AED8 (44760) */ - 3343, /* AED9 (44761) */ - 3343, /* AEDA (44762) */ - 3343, /* AEDB (44763) */ - 3343, /* AEDC (44764) */ - 3343, /* AEDD (44765) */ - 3343, /* AEDE (44766) */ - 3343, /* AEDF (44767) */ - 3343, /* AEE0 (44768) */ - 3343, /* AEE1 (44769) */ - 3343, /* AEE2 (44770) */ - 3343, /* AEE3 (44771) */ - 3343, /* AEE4 (44772) */ - 3343, /* AEE5 (44773) */ - 3343, /* AEE6 (44774) */ - 3343, /* AEE7 (44775) */ - 3343, /* AEE8 (44776) */ - 3343, /* AEE9 (44777) */ - 3343, /* AEEA (44778) */ - 3343, /* AEEB (44779) */ - 3343, /* AEEC (44780) */ - 3343, /* AEED (44781) */ - 3343, /* AEEE (44782) */ - 3343, /* AEEF (44783) */ - 3343, /* AEF0 (44784) */ - 3343, /* AEF1 (44785) */ - 3343, /* AEF2 (44786) */ - 3343, /* AEF3 (44787) */ - 3343, /* AEF4 (44788) */ - 3343, /* AEF5 (44789) */ - 3343, /* AEF6 (44790) */ - 3343, /* AEF7 (44791) */ - 3343, /* AEF8 (44792) */ - 3343, /* AEF9 (44793) */ - 3343, /* AEFA (44794) */ - 3343, /* AEFB (44795) */ - 3343, /* AEFC (44796) */ - 3343, /* AEFD (44797) */ - 3343, /* AEFE (44798) */ - 3343, /* AEFF (44799) */ - 3343, /* AF00 (44800) */ - 3343, /* AF01 (44801) */ - 3343, /* AF02 (44802) */ - 3343, /* AF03 (44803) */ - 3343, /* AF04 (44804) */ - 3343, /* AF05 (44805) */ - 3343, /* AF06 (44806) */ - 3343, /* AF07 (44807) */ - 3343, /* AF08 (44808) */ - 3343, /* AF09 (44809) */ - 3343, /* AF0A (44810) */ - 3343, /* AF0B (44811) */ - 3343, /* AF0C (44812) */ - 3343, /* AF0D (44813) */ - 3343, /* AF0E (44814) */ - 3343, /* AF0F (44815) */ - 3343, /* AF10 (44816) */ - 3343, /* AF11 (44817) */ - 3343, /* AF12 (44818) */ - 3343, /* AF13 (44819) */ - 3343, /* AF14 (44820) */ - 3343, /* AF15 (44821) */ - 3343, /* AF16 (44822) */ - 3343, /* AF17 (44823) */ - 3343, /* AF18 (44824) */ - 3343, /* AF19 (44825) */ - 3343, /* AF1A (44826) */ - 3343, /* AF1B (44827) */ - 3343, /* AF1C (44828) */ - 3343, /* AF1D (44829) */ - 3343, /* AF1E (44830) */ - 3343, /* AF1F (44831) */ - 3343, /* AF20 (44832) */ - 3343, /* AF21 (44833) */ - 3343, /* AF22 (44834) */ - 3343, /* AF23 (44835) */ - 3343, /* AF24 (44836) */ - 3343, /* AF25 (44837) */ - 3343, /* AF26 (44838) */ - 3343, /* AF27 (44839) */ - 3343, /* AF28 (44840) */ - 3343, /* AF29 (44841) */ - 3343, /* AF2A (44842) */ - 3343, /* AF2B (44843) */ - 3343, /* AF2C (44844) */ - 3343, /* AF2D (44845) */ - 3343, /* AF2E (44846) */ - 3343, /* AF2F (44847) */ - 3343, /* AF30 (44848) */ - 3343, /* AF31 (44849) */ - 3343, /* AF32 (44850) */ - 3343, /* AF33 (44851) */ - 3343, /* AF34 (44852) */ - 3343, /* AF35 (44853) */ - 3343, /* AF36 (44854) */ - 3343, /* AF37 (44855) */ - 3343, /* AF38 (44856) */ - 3343, /* AF39 (44857) */ - 3343, /* AF3A (44858) */ - 3343, /* AF3B (44859) */ - 3343, /* AF3C (44860) */ - 3343, /* AF3D (44861) */ - 3343, /* AF3E (44862) */ - 3343, /* AF3F (44863) */ - 3343, /* AF40 (44864) */ - 3343, /* AF41 (44865) */ - 3343, /* AF42 (44866) */ - 3343, /* AF43 (44867) */ - 3343, /* AF44 (44868) */ - 3343, /* AF45 (44869) */ - 3343, /* AF46 (44870) */ - 3343, /* AF47 (44871) */ - 3343, /* AF48 (44872) */ - 3343, /* AF49 (44873) */ - 3343, /* AF4A (44874) */ - 3343, /* AF4B (44875) */ - 3343, /* AF4C (44876) */ - 3343, /* AF4D (44877) */ - 3343, /* AF4E (44878) */ - 3343, /* AF4F (44879) */ - 3343, /* AF50 (44880) */ - 3343, /* AF51 (44881) */ - 3343, /* AF52 (44882) */ - 3343, /* AF53 (44883) */ - 3343, /* AF54 (44884) */ - 3343, /* AF55 (44885) */ - 3343, /* AF56 (44886) */ - 3343, /* AF57 (44887) */ - 3343, /* AF58 (44888) */ - 3343, /* AF59 (44889) */ - 3343, /* AF5A (44890) */ - 3343, /* AF5B (44891) */ - 3343, /* AF5C (44892) */ - 3343, /* AF5D (44893) */ - 3343, /* AF5E (44894) */ - 3343, /* AF5F (44895) */ - 3343, /* AF60 (44896) */ - 3343, /* AF61 (44897) */ - 3343, /* AF62 (44898) */ - 3343, /* AF63 (44899) */ - 3343, /* AF64 (44900) */ - 3343, /* AF65 (44901) */ - 3343, /* AF66 (44902) */ - 3343, /* AF67 (44903) */ - 3343, /* AF68 (44904) */ - 3343, /* AF69 (44905) */ - 3343, /* AF6A (44906) */ - 3343, /* AF6B (44907) */ - 3343, /* AF6C (44908) */ - 3343, /* AF6D (44909) */ - 3343, /* AF6E (44910) */ - 3343, /* AF6F (44911) */ - 3343, /* AF70 (44912) */ - 3343, /* AF71 (44913) */ - 3343, /* AF72 (44914) */ - 3343, /* AF73 (44915) */ - 3343, /* AF74 (44916) */ - 3343, /* AF75 (44917) */ - 3343, /* AF76 (44918) */ - 3343, /* AF77 (44919) */ - 3343, /* AF78 (44920) */ - 3343, /* AF79 (44921) */ - 3343, /* AF7A (44922) */ - 3343, /* AF7B (44923) */ - 3343, /* AF7C (44924) */ - 3343, /* AF7D (44925) */ - 3343, /* AF7E (44926) */ - 3343, /* AF7F (44927) */ - 3343, /* AF80 (44928) */ - 3343, /* AF81 (44929) */ - 3343, /* AF82 (44930) */ - 3343, /* AF83 (44931) */ - 3343, /* AF84 (44932) */ - 3343, /* AF85 (44933) */ - 3343, /* AF86 (44934) */ - 3343, /* AF87 (44935) */ - 3343, /* AF88 (44936) */ - 3343, /* AF89 (44937) */ - 3343, /* AF8A (44938) */ - 3343, /* AF8B (44939) */ - 3343, /* AF8C (44940) */ - 3343, /* AF8D (44941) */ - 3343, /* AF8E (44942) */ - 3343, /* AF8F (44943) */ - 3343, /* AF90 (44944) */ - 3343, /* AF91 (44945) */ - 3343, /* AF92 (44946) */ - 3343, /* AF93 (44947) */ - 3343, /* AF94 (44948) */ - 3343, /* AF95 (44949) */ - 3343, /* AF96 (44950) */ - 3343, /* AF97 (44951) */ - 3343, /* AF98 (44952) */ - 3343, /* AF99 (44953) */ - 3343, /* AF9A (44954) */ - 3343, /* AF9B (44955) */ - 3343, /* AF9C (44956) */ - 3343, /* AF9D (44957) */ - 3343, /* AF9E (44958) */ - 3343, /* AF9F (44959) */ - 3343, /* AFA0 (44960) */ - 3343, /* AFA1 (44961) */ - 3343, /* AFA2 (44962) */ - 3343, /* AFA3 (44963) */ - 3343, /* AFA4 (44964) */ - 3343, /* AFA5 (44965) */ - 3343, /* AFA6 (44966) */ - 3343, /* AFA7 (44967) */ - 3343, /* AFA8 (44968) */ - 3343, /* AFA9 (44969) */ - 3343, /* AFAA (44970) */ - 3343, /* AFAB (44971) */ - 3343, /* AFAC (44972) */ - 3343, /* AFAD (44973) */ - 3343, /* AFAE (44974) */ - 3343, /* AFAF (44975) */ - 3343, /* AFB0 (44976) */ - 3343, /* AFB1 (44977) */ - 3343, /* AFB2 (44978) */ - 3343, /* AFB3 (44979) */ - 3343, /* AFB4 (44980) */ - 3343, /* AFB5 (44981) */ - 3343, /* AFB6 (44982) */ - 3343, /* AFB7 (44983) */ - 3343, /* AFB8 (44984) */ - 3343, /* AFB9 (44985) */ - 3343, /* AFBA (44986) */ - 3343, /* AFBB (44987) */ - 3343, /* AFBC (44988) */ - 3343, /* AFBD (44989) */ - 3343, /* AFBE (44990) */ - 3343, /* AFBF (44991) */ - 3343, /* AFC0 (44992) */ - 3343, /* AFC1 (44993) */ - 3343, /* AFC2 (44994) */ - 3343, /* AFC3 (44995) */ - 3343, /* AFC4 (44996) */ - 3343, /* AFC5 (44997) */ - 3343, /* AFC6 (44998) */ - 3343, /* AFC7 (44999) */ - 3343, /* AFC8 (45000) */ - 3343, /* AFC9 (45001) */ - 3343, /* AFCA (45002) */ - 3343, /* AFCB (45003) */ - 3343, /* AFCC (45004) */ - 3343, /* AFCD (45005) */ - 3343, /* AFCE (45006) */ - 3343, /* AFCF (45007) */ - 3343, /* AFD0 (45008) */ - 3343, /* AFD1 (45009) */ - 3343, /* AFD2 (45010) */ - 3343, /* AFD3 (45011) */ - 3343, /* AFD4 (45012) */ - 3343, /* AFD5 (45013) */ - 3343, /* AFD6 (45014) */ - 3343, /* AFD7 (45015) */ - 3343, /* AFD8 (45016) */ - 3343, /* AFD9 (45017) */ - 3343, /* AFDA (45018) */ - 3343, /* AFDB (45019) */ - 3343, /* AFDC (45020) */ - 3343, /* AFDD (45021) */ - 3343, /* AFDE (45022) */ - 3343, /* AFDF (45023) */ - 3343, /* AFE0 (45024) */ - 3343, /* AFE1 (45025) */ - 3343, /* AFE2 (45026) */ - 3343, /* AFE3 (45027) */ - 3343, /* AFE4 (45028) */ - 3343, /* AFE5 (45029) */ - 3343, /* AFE6 (45030) */ - 3343, /* AFE7 (45031) */ - 3343, /* AFE8 (45032) */ - 3343, /* AFE9 (45033) */ - 3343, /* AFEA (45034) */ - 3343, /* AFEB (45035) */ - 3343, /* AFEC (45036) */ - 3343, /* AFED (45037) */ - 3343, /* AFEE (45038) */ - 3343, /* AFEF (45039) */ - 3343, /* AFF0 (45040) */ - 3343, /* AFF1 (45041) */ - 3343, /* AFF2 (45042) */ - 3343, /* AFF3 (45043) */ - 3343, /* AFF4 (45044) */ - 3343, /* AFF5 (45045) */ - 3343, /* AFF6 (45046) */ - 3343, /* AFF7 (45047) */ - 3343, /* AFF8 (45048) */ - 3343, /* AFF9 (45049) */ - 3343, /* AFFA (45050) */ - 3343, /* AFFB (45051) */ - 3343, /* AFFC (45052) */ - 3343, /* AFFD (45053) */ - 3343, /* AFFE (45054) */ - 3343, /* AFFF (45055) */ - 3343, /* B000 (45056) */ - 3343, /* B001 (45057) */ - 3343, /* B002 (45058) */ - 3343, /* B003 (45059) */ - 3343, /* B004 (45060) */ - 3343, /* B005 (45061) */ - 3343, /* B006 (45062) */ - 3343, /* B007 (45063) */ - 3343, /* B008 (45064) */ - 3343, /* B009 (45065) */ - 3343, /* B00A (45066) */ - 3343, /* B00B (45067) */ - 3343, /* B00C (45068) */ - 3343, /* B00D (45069) */ - 3343, /* B00E (45070) */ - 3343, /* B00F (45071) */ - 3343, /* B010 (45072) */ - 3343, /* B011 (45073) */ - 3343, /* B012 (45074) */ - 3343, /* B013 (45075) */ - 3343, /* B014 (45076) */ - 3343, /* B015 (45077) */ - 3343, /* B016 (45078) */ - 3343, /* B017 (45079) */ - 3343, /* B018 (45080) */ - 3343, /* B019 (45081) */ - 3343, /* B01A (45082) */ - 3343, /* B01B (45083) */ - 3343, /* B01C (45084) */ - 3343, /* B01D (45085) */ - 3343, /* B01E (45086) */ - 3343, /* B01F (45087) */ - 3343, /* B020 (45088) */ - 3343, /* B021 (45089) */ - 3343, /* B022 (45090) */ - 3343, /* B023 (45091) */ - 3343, /* B024 (45092) */ - 3343, /* B025 (45093) */ - 3343, /* B026 (45094) */ - 3343, /* B027 (45095) */ - 3343, /* B028 (45096) */ - 3343, /* B029 (45097) */ - 3343, /* B02A (45098) */ - 3343, /* B02B (45099) */ - 3343, /* B02C (45100) */ - 3343, /* B02D (45101) */ - 3343, /* B02E (45102) */ - 3343, /* B02F (45103) */ - 3343, /* B030 (45104) */ - 3343, /* B031 (45105) */ - 3343, /* B032 (45106) */ - 3343, /* B033 (45107) */ - 3343, /* B034 (45108) */ - 3343, /* B035 (45109) */ - 3343, /* B036 (45110) */ - 3343, /* B037 (45111) */ - 3343, /* B038 (45112) */ - 3343, /* B039 (45113) */ - 3343, /* B03A (45114) */ - 3343, /* B03B (45115) */ - 3343, /* B03C (45116) */ - 3343, /* B03D (45117) */ - 3343, /* B03E (45118) */ - 3343, /* B03F (45119) */ - 3343, /* B040 (45120) */ - 3343, /* B041 (45121) */ - 3343, /* B042 (45122) */ - 3343, /* B043 (45123) */ - 3343, /* B044 (45124) */ - 3343, /* B045 (45125) */ - 3343, /* B046 (45126) */ - 3343, /* B047 (45127) */ - 3343, /* B048 (45128) */ - 3343, /* B049 (45129) */ - 3343, /* B04A (45130) */ - 3343, /* B04B (45131) */ - 3343, /* B04C (45132) */ - 3343, /* B04D (45133) */ - 3343, /* B04E (45134) */ - 3343, /* B04F (45135) */ - 3343, /* B050 (45136) */ - 3343, /* B051 (45137) */ - 3343, /* B052 (45138) */ - 3343, /* B053 (45139) */ - 3343, /* B054 (45140) */ - 3343, /* B055 (45141) */ - 3343, /* B056 (45142) */ - 3343, /* B057 (45143) */ - 3343, /* B058 (45144) */ - 3343, /* B059 (45145) */ - 3343, /* B05A (45146) */ - 3343, /* B05B (45147) */ - 3343, /* B05C (45148) */ - 3343, /* B05D (45149) */ - 3343, /* B05E (45150) */ - 3343, /* B05F (45151) */ - 3343, /* B060 (45152) */ - 3343, /* B061 (45153) */ - 3343, /* B062 (45154) */ - 3343, /* B063 (45155) */ - 3343, /* B064 (45156) */ - 3343, /* B065 (45157) */ - 3343, /* B066 (45158) */ - 3343, /* B067 (45159) */ - 3343, /* B068 (45160) */ - 3343, /* B069 (45161) */ - 3343, /* B06A (45162) */ - 3343, /* B06B (45163) */ - 3343, /* B06C (45164) */ - 3343, /* B06D (45165) */ - 3343, /* B06E (45166) */ - 3343, /* B06F (45167) */ - 3343, /* B070 (45168) */ - 3343, /* B071 (45169) */ - 3343, /* B072 (45170) */ - 3343, /* B073 (45171) */ - 3343, /* B074 (45172) */ - 3343, /* B075 (45173) */ - 3343, /* B076 (45174) */ - 3343, /* B077 (45175) */ - 3343, /* B078 (45176) */ - 3343, /* B079 (45177) */ - 3343, /* B07A (45178) */ - 3343, /* B07B (45179) */ - 3343, /* B07C (45180) */ - 3343, /* B07D (45181) */ - 3343, /* B07E (45182) */ - 3343, /* B07F (45183) */ - 3343, /* B080 (45184) */ - 3343, /* B081 (45185) */ - 3343, /* B082 (45186) */ - 3343, /* B083 (45187) */ - 3343, /* B084 (45188) */ - 3343, /* B085 (45189) */ - 3343, /* B086 (45190) */ - 3343, /* B087 (45191) */ - 3343, /* B088 (45192) */ - 3343, /* B089 (45193) */ - 3343, /* B08A (45194) */ - 3343, /* B08B (45195) */ - 3343, /* B08C (45196) */ - 3343, /* B08D (45197) */ - 3343, /* B08E (45198) */ - 3343, /* B08F (45199) */ - 3343, /* B090 (45200) */ - 3343, /* B091 (45201) */ - 3343, /* B092 (45202) */ - 3343, /* B093 (45203) */ - 3343, /* B094 (45204) */ - 3343, /* B095 (45205) */ - 3343, /* B096 (45206) */ - 3343, /* B097 (45207) */ - 3343, /* B098 (45208) */ - 3343, /* B099 (45209) */ - 3343, /* B09A (45210) */ - 3343, /* B09B (45211) */ - 3343, /* B09C (45212) */ - 3343, /* B09D (45213) */ - 3343, /* B09E (45214) */ - 3343, /* B09F (45215) */ - 3343, /* B0A0 (45216) */ - 3343, /* B0A1 (45217) */ - 3343, /* B0A2 (45218) */ - 3343, /* B0A3 (45219) */ - 3343, /* B0A4 (45220) */ - 3343, /* B0A5 (45221) */ - 3343, /* B0A6 (45222) */ - 3343, /* B0A7 (45223) */ - 3343, /* B0A8 (45224) */ - 3343, /* B0A9 (45225) */ - 3343, /* B0AA (45226) */ - 3343, /* B0AB (45227) */ - 3343, /* B0AC (45228) */ - 3343, /* B0AD (45229) */ - 3343, /* B0AE (45230) */ - 3343, /* B0AF (45231) */ - 3343, /* B0B0 (45232) */ - 3343, /* B0B1 (45233) */ - 3343, /* B0B2 (45234) */ - 3343, /* B0B3 (45235) */ - 3343, /* B0B4 (45236) */ - 3343, /* B0B5 (45237) */ - 3343, /* B0B6 (45238) */ - 3343, /* B0B7 (45239) */ - 3343, /* B0B8 (45240) */ - 3343, /* B0B9 (45241) */ - 3343, /* B0BA (45242) */ - 3343, /* B0BB (45243) */ - 3343, /* B0BC (45244) */ - 3343, /* B0BD (45245) */ - 3343, /* B0BE (45246) */ - 3343, /* B0BF (45247) */ - 3343, /* B0C0 (45248) */ - 3343, /* B0C1 (45249) */ - 3343, /* B0C2 (45250) */ - 3343, /* B0C3 (45251) */ - 3343, /* B0C4 (45252) */ - 3343, /* B0C5 (45253) */ - 3343, /* B0C6 (45254) */ - 3343, /* B0C7 (45255) */ - 3343, /* B0C8 (45256) */ - 3343, /* B0C9 (45257) */ - 3343, /* B0CA (45258) */ - 3343, /* B0CB (45259) */ - 3343, /* B0CC (45260) */ - 3343, /* B0CD (45261) */ - 3343, /* B0CE (45262) */ - 3343, /* B0CF (45263) */ - 3343, /* B0D0 (45264) */ - 3343, /* B0D1 (45265) */ - 3343, /* B0D2 (45266) */ - 3343, /* B0D3 (45267) */ - 3343, /* B0D4 (45268) */ - 3343, /* B0D5 (45269) */ - 3343, /* B0D6 (45270) */ - 3343, /* B0D7 (45271) */ - 3343, /* B0D8 (45272) */ - 3343, /* B0D9 (45273) */ - 3343, /* B0DA (45274) */ - 3343, /* B0DB (45275) */ - 3343, /* B0DC (45276) */ - 3343, /* B0DD (45277) */ - 3343, /* B0DE (45278) */ - 3343, /* B0DF (45279) */ - 3343, /* B0E0 (45280) */ - 3343, /* B0E1 (45281) */ - 3343, /* B0E2 (45282) */ - 3343, /* B0E3 (45283) */ - 3343, /* B0E4 (45284) */ - 3343, /* B0E5 (45285) */ - 3343, /* B0E6 (45286) */ - 3343, /* B0E7 (45287) */ - 3343, /* B0E8 (45288) */ - 3343, /* B0E9 (45289) */ - 3343, /* B0EA (45290) */ - 3343, /* B0EB (45291) */ - 3343, /* B0EC (45292) */ - 3343, /* B0ED (45293) */ - 3343, /* B0EE (45294) */ - 3343, /* B0EF (45295) */ - 3343, /* B0F0 (45296) */ - 3343, /* B0F1 (45297) */ - 3343, /* B0F2 (45298) */ - 3343, /* B0F3 (45299) */ - 3343, /* B0F4 (45300) */ - 3343, /* B0F5 (45301) */ - 3343, /* B0F6 (45302) */ - 3343, /* B0F7 (45303) */ - 3343, /* B0F8 (45304) */ - 3343, /* B0F9 (45305) */ - 3343, /* B0FA (45306) */ - 3343, /* B0FB (45307) */ - 3343, /* B0FC (45308) */ - 3343, /* B0FD (45309) */ - 3343, /* B0FE (45310) */ - 3343, /* B0FF (45311) */ - 3343, /* B100 (45312) */ - 3343, /* B101 (45313) */ - 3343, /* B102 (45314) */ - 3343, /* B103 (45315) */ - 3343, /* B104 (45316) */ - 3343, /* B105 (45317) */ - 3343, /* B106 (45318) */ - 3343, /* B107 (45319) */ - 3343, /* B108 (45320) */ - 3343, /* B109 (45321) */ - 3343, /* B10A (45322) */ - 3343, /* B10B (45323) */ - 3343, /* B10C (45324) */ - 3343, /* B10D (45325) */ - 3343, /* B10E (45326) */ - 3343, /* B10F (45327) */ - 3343, /* B110 (45328) */ - 3343, /* B111 (45329) */ - 3343, /* B112 (45330) */ - 3343, /* B113 (45331) */ - 3343, /* B114 (45332) */ - 3343, /* B115 (45333) */ - 3343, /* B116 (45334) */ - 3343, /* B117 (45335) */ - 3343, /* B118 (45336) */ - 3343, /* B119 (45337) */ - 3343, /* B11A (45338) */ - 3343, /* B11B (45339) */ - 3343, /* B11C (45340) */ - 3343, /* B11D (45341) */ - 3343, /* B11E (45342) */ - 3343, /* B11F (45343) */ - 3343, /* B120 (45344) */ - 3343, /* B121 (45345) */ - 3343, /* B122 (45346) */ - 3343, /* B123 (45347) */ - 3343, /* B124 (45348) */ - 3343, /* B125 (45349) */ - 3343, /* B126 (45350) */ - 3343, /* B127 (45351) */ - 3343, /* B128 (45352) */ - 3343, /* B129 (45353) */ - 3343, /* B12A (45354) */ - 3343, /* B12B (45355) */ - 3343, /* B12C (45356) */ - 3343, /* B12D (45357) */ - 3343, /* B12E (45358) */ - 3343, /* B12F (45359) */ - 3343, /* B130 (45360) */ - 3343, /* B131 (45361) */ - 3343, /* B132 (45362) */ - 3343, /* B133 (45363) */ - 3343, /* B134 (45364) */ - 3343, /* B135 (45365) */ - 3343, /* B136 (45366) */ - 3343, /* B137 (45367) */ - 3343, /* B138 (45368) */ - 3343, /* B139 (45369) */ - 3343, /* B13A (45370) */ - 3343, /* B13B (45371) */ - 3343, /* B13C (45372) */ - 3343, /* B13D (45373) */ - 3343, /* B13E (45374) */ - 3343, /* B13F (45375) */ - 3343, /* B140 (45376) */ - 3343, /* B141 (45377) */ - 3343, /* B142 (45378) */ - 3343, /* B143 (45379) */ - 3343, /* B144 (45380) */ - 3343, /* B145 (45381) */ - 3343, /* B146 (45382) */ - 3343, /* B147 (45383) */ - 3343, /* B148 (45384) */ - 3343, /* B149 (45385) */ - 3343, /* B14A (45386) */ - 3343, /* B14B (45387) */ - 3343, /* B14C (45388) */ - 3343, /* B14D (45389) */ - 3343, /* B14E (45390) */ - 3343, /* B14F (45391) */ - 3343, /* B150 (45392) */ - 3343, /* B151 (45393) */ - 3343, /* B152 (45394) */ - 3343, /* B153 (45395) */ - 3343, /* B154 (45396) */ - 3343, /* B155 (45397) */ - 3343, /* B156 (45398) */ - 3343, /* B157 (45399) */ - 3343, /* B158 (45400) */ - 3343, /* B159 (45401) */ - 3343, /* B15A (45402) */ - 3343, /* B15B (45403) */ - 3343, /* B15C (45404) */ - 3343, /* B15D (45405) */ - 3343, /* B15E (45406) */ - 3343, /* B15F (45407) */ - 3343, /* B160 (45408) */ - 3343, /* B161 (45409) */ - 3343, /* B162 (45410) */ - 3343, /* B163 (45411) */ - 3343, /* B164 (45412) */ - 3343, /* B165 (45413) */ - 3343, /* B166 (45414) */ - 3343, /* B167 (45415) */ - 3343, /* B168 (45416) */ - 3343, /* B169 (45417) */ - 3343, /* B16A (45418) */ - 3343, /* B16B (45419) */ - 3343, /* B16C (45420) */ - 3343, /* B16D (45421) */ - 3343, /* B16E (45422) */ - 3343, /* B16F (45423) */ - 3343, /* B170 (45424) */ - 3343, /* B171 (45425) */ - 3343, /* B172 (45426) */ - 3343, /* B173 (45427) */ - 3343, /* B174 (45428) */ - 3343, /* B175 (45429) */ - 3343, /* B176 (45430) */ - 3343, /* B177 (45431) */ - 3343, /* B178 (45432) */ - 3343, /* B179 (45433) */ - 3343, /* B17A (45434) */ - 3343, /* B17B (45435) */ - 3343, /* B17C (45436) */ - 3343, /* B17D (45437) */ - 3343, /* B17E (45438) */ - 3343, /* B17F (45439) */ - 3343, /* B180 (45440) */ - 3343, /* B181 (45441) */ - 3343, /* B182 (45442) */ - 3343, /* B183 (45443) */ - 3343, /* B184 (45444) */ - 3343, /* B185 (45445) */ - 3343, /* B186 (45446) */ - 3343, /* B187 (45447) */ - 3343, /* B188 (45448) */ - 3343, /* B189 (45449) */ - 3343, /* B18A (45450) */ - 3343, /* B18B (45451) */ - 3343, /* B18C (45452) */ - 3343, /* B18D (45453) */ - 3343, /* B18E (45454) */ - 3343, /* B18F (45455) */ - 3343, /* B190 (45456) */ - 3343, /* B191 (45457) */ - 3343, /* B192 (45458) */ - 3343, /* B193 (45459) */ - 3343, /* B194 (45460) */ - 3343, /* B195 (45461) */ - 3343, /* B196 (45462) */ - 3343, /* B197 (45463) */ - 3343, /* B198 (45464) */ - 3343, /* B199 (45465) */ - 3343, /* B19A (45466) */ - 3343, /* B19B (45467) */ - 3343, /* B19C (45468) */ - 3343, /* B19D (45469) */ - 3343, /* B19E (45470) */ - 3343, /* B19F (45471) */ - 3343, /* B1A0 (45472) */ - 3343, /* B1A1 (45473) */ - 3343, /* B1A2 (45474) */ - 3343, /* B1A3 (45475) */ - 3343, /* B1A4 (45476) */ - 3343, /* B1A5 (45477) */ - 3343, /* B1A6 (45478) */ - 3343, /* B1A7 (45479) */ - 3343, /* B1A8 (45480) */ - 3343, /* B1A9 (45481) */ - 3343, /* B1AA (45482) */ - 3343, /* B1AB (45483) */ - 3343, /* B1AC (45484) */ - 3343, /* B1AD (45485) */ - 3343, /* B1AE (45486) */ - 3343, /* B1AF (45487) */ - 3343, /* B1B0 (45488) */ - 3343, /* B1B1 (45489) */ - 3343, /* B1B2 (45490) */ - 3343, /* B1B3 (45491) */ - 3343, /* B1B4 (45492) */ - 3343, /* B1B5 (45493) */ - 3343, /* B1B6 (45494) */ - 3343, /* B1B7 (45495) */ - 3343, /* B1B8 (45496) */ - 3343, /* B1B9 (45497) */ - 3343, /* B1BA (45498) */ - 3343, /* B1BB (45499) */ - 3343, /* B1BC (45500) */ - 3343, /* B1BD (45501) */ - 3343, /* B1BE (45502) */ - 3343, /* B1BF (45503) */ - 3343, /* B1C0 (45504) */ - 3343, /* B1C1 (45505) */ - 3343, /* B1C2 (45506) */ - 3343, /* B1C3 (45507) */ - 3343, /* B1C4 (45508) */ - 3343, /* B1C5 (45509) */ - 3343, /* B1C6 (45510) */ - 3343, /* B1C7 (45511) */ - 3343, /* B1C8 (45512) */ - 3343, /* B1C9 (45513) */ - 3343, /* B1CA (45514) */ - 3343, /* B1CB (45515) */ - 3343, /* B1CC (45516) */ - 3343, /* B1CD (45517) */ - 3343, /* B1CE (45518) */ - 3343, /* B1CF (45519) */ - 3343, /* B1D0 (45520) */ - 3343, /* B1D1 (45521) */ - 3343, /* B1D2 (45522) */ - 3343, /* B1D3 (45523) */ - 3343, /* B1D4 (45524) */ - 3343, /* B1D5 (45525) */ - 3343, /* B1D6 (45526) */ - 3343, /* B1D7 (45527) */ - 3343, /* B1D8 (45528) */ - 3343, /* B1D9 (45529) */ - 3343, /* B1DA (45530) */ - 3343, /* B1DB (45531) */ - 3343, /* B1DC (45532) */ - 3343, /* B1DD (45533) */ - 3343, /* B1DE (45534) */ - 3343, /* B1DF (45535) */ - 3343, /* B1E0 (45536) */ - 3343, /* B1E1 (45537) */ - 3343, /* B1E2 (45538) */ - 3343, /* B1E3 (45539) */ - 3343, /* B1E4 (45540) */ - 3343, /* B1E5 (45541) */ - 3343, /* B1E6 (45542) */ - 3343, /* B1E7 (45543) */ - 3343, /* B1E8 (45544) */ - 3343, /* B1E9 (45545) */ - 3343, /* B1EA (45546) */ - 3343, /* B1EB (45547) */ - 3343, /* B1EC (45548) */ - 3343, /* B1ED (45549) */ - 3343, /* B1EE (45550) */ - 3343, /* B1EF (45551) */ - 3343, /* B1F0 (45552) */ - 3343, /* B1F1 (45553) */ - 3343, /* B1F2 (45554) */ - 3343, /* B1F3 (45555) */ - 3343, /* B1F4 (45556) */ - 3343, /* B1F5 (45557) */ - 3343, /* B1F6 (45558) */ - 3343, /* B1F7 (45559) */ - 3343, /* B1F8 (45560) */ - 3343, /* B1F9 (45561) */ - 3343, /* B1FA (45562) */ - 3343, /* B1FB (45563) */ - 3343, /* B1FC (45564) */ - 3343, /* B1FD (45565) */ - 3343, /* B1FE (45566) */ - 3343, /* B1FF (45567) */ - 3343, /* B200 (45568) */ - 3343, /* B201 (45569) */ - 3343, /* B202 (45570) */ - 3343, /* B203 (45571) */ - 3343, /* B204 (45572) */ - 3343, /* B205 (45573) */ - 3343, /* B206 (45574) */ - 3343, /* B207 (45575) */ - 3343, /* B208 (45576) */ - 3343, /* B209 (45577) */ - 3343, /* B20A (45578) */ - 3343, /* B20B (45579) */ - 3343, /* B20C (45580) */ - 3343, /* B20D (45581) */ - 3343, /* B20E (45582) */ - 3343, /* B20F (45583) */ - 3343, /* B210 (45584) */ - 3343, /* B211 (45585) */ - 3343, /* B212 (45586) */ - 3343, /* B213 (45587) */ - 3343, /* B214 (45588) */ - 3343, /* B215 (45589) */ - 3343, /* B216 (45590) */ - 3343, /* B217 (45591) */ - 3343, /* B218 (45592) */ - 3343, /* B219 (45593) */ - 3343, /* B21A (45594) */ - 3343, /* B21B (45595) */ - 3343, /* B21C (45596) */ - 3343, /* B21D (45597) */ - 3343, /* B21E (45598) */ - 3343, /* B21F (45599) */ - 3343, /* B220 (45600) */ - 3343, /* B221 (45601) */ - 3343, /* B222 (45602) */ - 3343, /* B223 (45603) */ - 3343, /* B224 (45604) */ - 3343, /* B225 (45605) */ - 3343, /* B226 (45606) */ - 3343, /* B227 (45607) */ - 3343, /* B228 (45608) */ - 3343, /* B229 (45609) */ - 3343, /* B22A (45610) */ - 3343, /* B22B (45611) */ - 3343, /* B22C (45612) */ - 3343, /* B22D (45613) */ - 3343, /* B22E (45614) */ - 3343, /* B22F (45615) */ - 3343, /* B230 (45616) */ - 3343, /* B231 (45617) */ - 3343, /* B232 (45618) */ - 3343, /* B233 (45619) */ - 3343, /* B234 (45620) */ - 3343, /* B235 (45621) */ - 3343, /* B236 (45622) */ - 3343, /* B237 (45623) */ - 3343, /* B238 (45624) */ - 3343, /* B239 (45625) */ - 3343, /* B23A (45626) */ - 3343, /* B23B (45627) */ - 3343, /* B23C (45628) */ - 3343, /* B23D (45629) */ - 3343, /* B23E (45630) */ - 3343, /* B23F (45631) */ - 3343, /* B240 (45632) */ - 3343, /* B241 (45633) */ - 3343, /* B242 (45634) */ - 3343, /* B243 (45635) */ - 3343, /* B244 (45636) */ - 3343, /* B245 (45637) */ - 3343, /* B246 (45638) */ - 3343, /* B247 (45639) */ - 3343, /* B248 (45640) */ - 3343, /* B249 (45641) */ - 3343, /* B24A (45642) */ - 3343, /* B24B (45643) */ - 3343, /* B24C (45644) */ - 3343, /* B24D (45645) */ - 3343, /* B24E (45646) */ - 3343, /* B24F (45647) */ - 3343, /* B250 (45648) */ - 3343, /* B251 (45649) */ - 3343, /* B252 (45650) */ - 3343, /* B253 (45651) */ - 3343, /* B254 (45652) */ - 3343, /* B255 (45653) */ - 3343, /* B256 (45654) */ - 3343, /* B257 (45655) */ - 3343, /* B258 (45656) */ - 3343, /* B259 (45657) */ - 3343, /* B25A (45658) */ - 3343, /* B25B (45659) */ - 3343, /* B25C (45660) */ - 3343, /* B25D (45661) */ - 3343, /* B25E (45662) */ - 3343, /* B25F (45663) */ - 3343, /* B260 (45664) */ - 3343, /* B261 (45665) */ - 3343, /* B262 (45666) */ - 3343, /* B263 (45667) */ - 3343, /* B264 (45668) */ - 3343, /* B265 (45669) */ - 3343, /* B266 (45670) */ - 3343, /* B267 (45671) */ - 3343, /* B268 (45672) */ - 3343, /* B269 (45673) */ - 3343, /* B26A (45674) */ - 3343, /* B26B (45675) */ - 3343, /* B26C (45676) */ - 3343, /* B26D (45677) */ - 3343, /* B26E (45678) */ - 3343, /* B26F (45679) */ - 3343, /* B270 (45680) */ - 3343, /* B271 (45681) */ - 3343, /* B272 (45682) */ - 3343, /* B273 (45683) */ - 3343, /* B274 (45684) */ - 3343, /* B275 (45685) */ - 3343, /* B276 (45686) */ - 3343, /* B277 (45687) */ - 3343, /* B278 (45688) */ - 3343, /* B279 (45689) */ - 3343, /* B27A (45690) */ - 3343, /* B27B (45691) */ - 3343, /* B27C (45692) */ - 3343, /* B27D (45693) */ - 3343, /* B27E (45694) */ - 3343, /* B27F (45695) */ - 3343, /* B280 (45696) */ - 3343, /* B281 (45697) */ - 3343, /* B282 (45698) */ - 3343, /* B283 (45699) */ - 3343, /* B284 (45700) */ - 3343, /* B285 (45701) */ - 3343, /* B286 (45702) */ - 3343, /* B287 (45703) */ - 3343, /* B288 (45704) */ - 3343, /* B289 (45705) */ - 3343, /* B28A (45706) */ - 3343, /* B28B (45707) */ - 3343, /* B28C (45708) */ - 3343, /* B28D (45709) */ - 3343, /* B28E (45710) */ - 3343, /* B28F (45711) */ - 3343, /* B290 (45712) */ - 3343, /* B291 (45713) */ - 3343, /* B292 (45714) */ - 3343, /* B293 (45715) */ - 3343, /* B294 (45716) */ - 3343, /* B295 (45717) */ - 3343, /* B296 (45718) */ - 3343, /* B297 (45719) */ - 3343, /* B298 (45720) */ - 3343, /* B299 (45721) */ - 3343, /* B29A (45722) */ - 3343, /* B29B (45723) */ - 3343, /* B29C (45724) */ - 3343, /* B29D (45725) */ - 3343, /* B29E (45726) */ - 3343, /* B29F (45727) */ - 3343, /* B2A0 (45728) */ - 3343, /* B2A1 (45729) */ - 3343, /* B2A2 (45730) */ - 3343, /* B2A3 (45731) */ - 3343, /* B2A4 (45732) */ - 3343, /* B2A5 (45733) */ - 3343, /* B2A6 (45734) */ - 3343, /* B2A7 (45735) */ - 3343, /* B2A8 (45736) */ - 3343, /* B2A9 (45737) */ - 3343, /* B2AA (45738) */ - 3343, /* B2AB (45739) */ - 3343, /* B2AC (45740) */ - 3343, /* B2AD (45741) */ - 3343, /* B2AE (45742) */ - 3343, /* B2AF (45743) */ - 3343, /* B2B0 (45744) */ - 3343, /* B2B1 (45745) */ - 3343, /* B2B2 (45746) */ - 3343, /* B2B3 (45747) */ - 3343, /* B2B4 (45748) */ - 3343, /* B2B5 (45749) */ - 3343, /* B2B6 (45750) */ - 3343, /* B2B7 (45751) */ - 3343, /* B2B8 (45752) */ - 3343, /* B2B9 (45753) */ - 3343, /* B2BA (45754) */ - 3343, /* B2BB (45755) */ - 3343, /* B2BC (45756) */ - 3343, /* B2BD (45757) */ - 3343, /* B2BE (45758) */ - 3343, /* B2BF (45759) */ - 3343, /* B2C0 (45760) */ - 3343, /* B2C1 (45761) */ - 3343, /* B2C2 (45762) */ - 3343, /* B2C3 (45763) */ - 3343, /* B2C4 (45764) */ - 3343, /* B2C5 (45765) */ - 3343, /* B2C6 (45766) */ - 3343, /* B2C7 (45767) */ - 3343, /* B2C8 (45768) */ - 3343, /* B2C9 (45769) */ - 3343, /* B2CA (45770) */ - 3343, /* B2CB (45771) */ - 3343, /* B2CC (45772) */ - 3343, /* B2CD (45773) */ - 3343, /* B2CE (45774) */ - 3343, /* B2CF (45775) */ - 3343, /* B2D0 (45776) */ - 3343, /* B2D1 (45777) */ - 3343, /* B2D2 (45778) */ - 3343, /* B2D3 (45779) */ - 3343, /* B2D4 (45780) */ - 3343, /* B2D5 (45781) */ - 3343, /* B2D6 (45782) */ - 3343, /* B2D7 (45783) */ - 3343, /* B2D8 (45784) */ - 3343, /* B2D9 (45785) */ - 3343, /* B2DA (45786) */ - 3343, /* B2DB (45787) */ - 3343, /* B2DC (45788) */ - 3343, /* B2DD (45789) */ - 3343, /* B2DE (45790) */ - 3343, /* B2DF (45791) */ - 3343, /* B2E0 (45792) */ - 3343, /* B2E1 (45793) */ - 3343, /* B2E2 (45794) */ - 3343, /* B2E3 (45795) */ - 3343, /* B2E4 (45796) */ - 3343, /* B2E5 (45797) */ - 3343, /* B2E6 (45798) */ - 3343, /* B2E7 (45799) */ - 3343, /* B2E8 (45800) */ - 3343, /* B2E9 (45801) */ - 3343, /* B2EA (45802) */ - 3343, /* B2EB (45803) */ - 3343, /* B2EC (45804) */ - 3343, /* B2ED (45805) */ - 3343, /* B2EE (45806) */ - 3343, /* B2EF (45807) */ - 3343, /* B2F0 (45808) */ - 3343, /* B2F1 (45809) */ - 3343, /* B2F2 (45810) */ - 3343, /* B2F3 (45811) */ - 3343, /* B2F4 (45812) */ - 3343, /* B2F5 (45813) */ - 3343, /* B2F6 (45814) */ - 3343, /* B2F7 (45815) */ - 3343, /* B2F8 (45816) */ - 3343, /* B2F9 (45817) */ - 3343, /* B2FA (45818) */ - 3343, /* B2FB (45819) */ - 3343, /* B2FC (45820) */ - 3343, /* B2FD (45821) */ - 3343, /* B2FE (45822) */ - 3343, /* B2FF (45823) */ - 3343, /* B300 (45824) */ - 3343, /* B301 (45825) */ - 3343, /* B302 (45826) */ - 3343, /* B303 (45827) */ - 3343, /* B304 (45828) */ - 3343, /* B305 (45829) */ - 3343, /* B306 (45830) */ - 3343, /* B307 (45831) */ - 3343, /* B308 (45832) */ - 3343, /* B309 (45833) */ - 3343, /* B30A (45834) */ - 3343, /* B30B (45835) */ - 3343, /* B30C (45836) */ - 3343, /* B30D (45837) */ - 3343, /* B30E (45838) */ - 3343, /* B30F (45839) */ - 3343, /* B310 (45840) */ - 3343, /* B311 (45841) */ - 3343, /* B312 (45842) */ - 3343, /* B313 (45843) */ - 3343, /* B314 (45844) */ - 3343, /* B315 (45845) */ - 3343, /* B316 (45846) */ - 3343, /* B317 (45847) */ - 3343, /* B318 (45848) */ - 3343, /* B319 (45849) */ - 3343, /* B31A (45850) */ - 3343, /* B31B (45851) */ - 3343, /* B31C (45852) */ - 3343, /* B31D (45853) */ - 3343, /* B31E (45854) */ - 3343, /* B31F (45855) */ - 3343, /* B320 (45856) */ - 3343, /* B321 (45857) */ - 3343, /* B322 (45858) */ - 3343, /* B323 (45859) */ - 3343, /* B324 (45860) */ - 3343, /* B325 (45861) */ - 3343, /* B326 (45862) */ - 3343, /* B327 (45863) */ - 3343, /* B328 (45864) */ - 3343, /* B329 (45865) */ - 3343, /* B32A (45866) */ - 3343, /* B32B (45867) */ - 3343, /* B32C (45868) */ - 3343, /* B32D (45869) */ - 3343, /* B32E (45870) */ - 3343, /* B32F (45871) */ - 3343, /* B330 (45872) */ - 3343, /* B331 (45873) */ - 3343, /* B332 (45874) */ - 3343, /* B333 (45875) */ - 3343, /* B334 (45876) */ - 3343, /* B335 (45877) */ - 3343, /* B336 (45878) */ - 3343, /* B337 (45879) */ - 3343, /* B338 (45880) */ - 3343, /* B339 (45881) */ - 3343, /* B33A (45882) */ - 3343, /* B33B (45883) */ - 3343, /* B33C (45884) */ - 3343, /* B33D (45885) */ - 3343, /* B33E (45886) */ - 3343, /* B33F (45887) */ - 3343, /* B340 (45888) */ - 3343, /* B341 (45889) */ - 3343, /* B342 (45890) */ - 3343, /* B343 (45891) */ - 3343, /* B344 (45892) */ - 3343, /* B345 (45893) */ - 3343, /* B346 (45894) */ - 3343, /* B347 (45895) */ - 3343, /* B348 (45896) */ - 3343, /* B349 (45897) */ - 3343, /* B34A (45898) */ - 3343, /* B34B (45899) */ - 3343, /* B34C (45900) */ - 3343, /* B34D (45901) */ - 3343, /* B34E (45902) */ - 3343, /* B34F (45903) */ - 3343, /* B350 (45904) */ - 3343, /* B351 (45905) */ - 3343, /* B352 (45906) */ - 3343, /* B353 (45907) */ - 3343, /* B354 (45908) */ - 3343, /* B355 (45909) */ - 3343, /* B356 (45910) */ - 3343, /* B357 (45911) */ - 3343, /* B358 (45912) */ - 3343, /* B359 (45913) */ - 3343, /* B35A (45914) */ - 3343, /* B35B (45915) */ - 3343, /* B35C (45916) */ - 3343, /* B35D (45917) */ - 3343, /* B35E (45918) */ - 3343, /* B35F (45919) */ - 3343, /* B360 (45920) */ - 3343, /* B361 (45921) */ - 3343, /* B362 (45922) */ - 3343, /* B363 (45923) */ - 3343, /* B364 (45924) */ - 3343, /* B365 (45925) */ - 3343, /* B366 (45926) */ - 3343, /* B367 (45927) */ - 3343, /* B368 (45928) */ - 3343, /* B369 (45929) */ - 3343, /* B36A (45930) */ - 3343, /* B36B (45931) */ - 3343, /* B36C (45932) */ - 3343, /* B36D (45933) */ - 3343, /* B36E (45934) */ - 3343, /* B36F (45935) */ - 3343, /* B370 (45936) */ - 3343, /* B371 (45937) */ - 3343, /* B372 (45938) */ - 3343, /* B373 (45939) */ - 3343, /* B374 (45940) */ - 3343, /* B375 (45941) */ - 3343, /* B376 (45942) */ - 3343, /* B377 (45943) */ - 3343, /* B378 (45944) */ - 3343, /* B379 (45945) */ - 3343, /* B37A (45946) */ - 3343, /* B37B (45947) */ - 3343, /* B37C (45948) */ - 3343, /* B37D (45949) */ - 3343, /* B37E (45950) */ - 3343, /* B37F (45951) */ - 3343, /* B380 (45952) */ - 3343, /* B381 (45953) */ - 3343, /* B382 (45954) */ - 3343, /* B383 (45955) */ - 3343, /* B384 (45956) */ - 3343, /* B385 (45957) */ - 3343, /* B386 (45958) */ - 3343, /* B387 (45959) */ - 3343, /* B388 (45960) */ - 3343, /* B389 (45961) */ - 3343, /* B38A (45962) */ - 3343, /* B38B (45963) */ - 3343, /* B38C (45964) */ - 3343, /* B38D (45965) */ - 3343, /* B38E (45966) */ - 3343, /* B38F (45967) */ - 3343, /* B390 (45968) */ - 3343, /* B391 (45969) */ - 3343, /* B392 (45970) */ - 3343, /* B393 (45971) */ - 3343, /* B394 (45972) */ - 3343, /* B395 (45973) */ - 3343, /* B396 (45974) */ - 3343, /* B397 (45975) */ - 3343, /* B398 (45976) */ - 3343, /* B399 (45977) */ - 3343, /* B39A (45978) */ - 3343, /* B39B (45979) */ - 3343, /* B39C (45980) */ - 3343, /* B39D (45981) */ - 3343, /* B39E (45982) */ - 3343, /* B39F (45983) */ - 3343, /* B3A0 (45984) */ - 3343, /* B3A1 (45985) */ - 3343, /* B3A2 (45986) */ - 3343, /* B3A3 (45987) */ - 3343, /* B3A4 (45988) */ - 3343, /* B3A5 (45989) */ - 3343, /* B3A6 (45990) */ - 3343, /* B3A7 (45991) */ - 3343, /* B3A8 (45992) */ - 3343, /* B3A9 (45993) */ - 3343, /* B3AA (45994) */ - 3343, /* B3AB (45995) */ - 3343, /* B3AC (45996) */ - 3343, /* B3AD (45997) */ - 3343, /* B3AE (45998) */ - 3343, /* B3AF (45999) */ - 3343, /* B3B0 (46000) */ - 3343, /* B3B1 (46001) */ - 3343, /* B3B2 (46002) */ - 3343, /* B3B3 (46003) */ - 3343, /* B3B4 (46004) */ - 3343, /* B3B5 (46005) */ - 3343, /* B3B6 (46006) */ - 3343, /* B3B7 (46007) */ - 3343, /* B3B8 (46008) */ - 3343, /* B3B9 (46009) */ - 3343, /* B3BA (46010) */ - 3343, /* B3BB (46011) */ - 3343, /* B3BC (46012) */ - 3343, /* B3BD (46013) */ - 3343, /* B3BE (46014) */ - 3343, /* B3BF (46015) */ - 3343, /* B3C0 (46016) */ - 3343, /* B3C1 (46017) */ - 3343, /* B3C2 (46018) */ - 3343, /* B3C3 (46019) */ - 3343, /* B3C4 (46020) */ - 3343, /* B3C5 (46021) */ - 3343, /* B3C6 (46022) */ - 3343, /* B3C7 (46023) */ - 3343, /* B3C8 (46024) */ - 3343, /* B3C9 (46025) */ - 3343, /* B3CA (46026) */ - 3343, /* B3CB (46027) */ - 3343, /* B3CC (46028) */ - 3343, /* B3CD (46029) */ - 3343, /* B3CE (46030) */ - 3343, /* B3CF (46031) */ - 3343, /* B3D0 (46032) */ - 3343, /* B3D1 (46033) */ - 3343, /* B3D2 (46034) */ - 3343, /* B3D3 (46035) */ - 3343, /* B3D4 (46036) */ - 3343, /* B3D5 (46037) */ - 3343, /* B3D6 (46038) */ - 3343, /* B3D7 (46039) */ - 3343, /* B3D8 (46040) */ - 3343, /* B3D9 (46041) */ - 3343, /* B3DA (46042) */ - 3343, /* B3DB (46043) */ - 3343, /* B3DC (46044) */ - 3343, /* B3DD (46045) */ - 3343, /* B3DE (46046) */ - 3343, /* B3DF (46047) */ - 3343, /* B3E0 (46048) */ - 3343, /* B3E1 (46049) */ - 3343, /* B3E2 (46050) */ - 3343, /* B3E3 (46051) */ - 3343, /* B3E4 (46052) */ - 3343, /* B3E5 (46053) */ - 3343, /* B3E6 (46054) */ - 3343, /* B3E7 (46055) */ - 3343, /* B3E8 (46056) */ - 3343, /* B3E9 (46057) */ - 3343, /* B3EA (46058) */ - 3343, /* B3EB (46059) */ - 3343, /* B3EC (46060) */ - 3343, /* B3ED (46061) */ - 3343, /* B3EE (46062) */ - 3343, /* B3EF (46063) */ - 3343, /* B3F0 (46064) */ - 3343, /* B3F1 (46065) */ - 3343, /* B3F2 (46066) */ - 3343, /* B3F3 (46067) */ - 3343, /* B3F4 (46068) */ - 3343, /* B3F5 (46069) */ - 3343, /* B3F6 (46070) */ - 3343, /* B3F7 (46071) */ - 3343, /* B3F8 (46072) */ - 3343, /* B3F9 (46073) */ - 3343, /* B3FA (46074) */ - 3343, /* B3FB (46075) */ - 3343, /* B3FC (46076) */ - 3343, /* B3FD (46077) */ - 3343, /* B3FE (46078) */ - 3343, /* B3FF (46079) */ - 3343, /* B400 (46080) */ - 3343, /* B401 (46081) */ - 3343, /* B402 (46082) */ - 3343, /* B403 (46083) */ - 3343, /* B404 (46084) */ - 3343, /* B405 (46085) */ - 3343, /* B406 (46086) */ - 3343, /* B407 (46087) */ - 3343, /* B408 (46088) */ - 3343, /* B409 (46089) */ - 3343, /* B40A (46090) */ - 3343, /* B40B (46091) */ - 3343, /* B40C (46092) */ - 3343, /* B40D (46093) */ - 3343, /* B40E (46094) */ - 3343, /* B40F (46095) */ - 3343, /* B410 (46096) */ - 3343, /* B411 (46097) */ - 3343, /* B412 (46098) */ - 3343, /* B413 (46099) */ - 3343, /* B414 (46100) */ - 3343, /* B415 (46101) */ - 3343, /* B416 (46102) */ - 3343, /* B417 (46103) */ - 3343, /* B418 (46104) */ - 3343, /* B419 (46105) */ - 3343, /* B41A (46106) */ - 3343, /* B41B (46107) */ - 3343, /* B41C (46108) */ - 3343, /* B41D (46109) */ - 3343, /* B41E (46110) */ - 3343, /* B41F (46111) */ - 3343, /* B420 (46112) */ - 3343, /* B421 (46113) */ - 3343, /* B422 (46114) */ - 3343, /* B423 (46115) */ - 3343, /* B424 (46116) */ - 3343, /* B425 (46117) */ - 3343, /* B426 (46118) */ - 3343, /* B427 (46119) */ - 3343, /* B428 (46120) */ - 3343, /* B429 (46121) */ - 3343, /* B42A (46122) */ - 3343, /* B42B (46123) */ - 3343, /* B42C (46124) */ - 3343, /* B42D (46125) */ - 3343, /* B42E (46126) */ - 3343, /* B42F (46127) */ - 3343, /* B430 (46128) */ - 3343, /* B431 (46129) */ - 3343, /* B432 (46130) */ - 3343, /* B433 (46131) */ - 3343, /* B434 (46132) */ - 3343, /* B435 (46133) */ - 3343, /* B436 (46134) */ - 3343, /* B437 (46135) */ - 3343, /* B438 (46136) */ - 3343, /* B439 (46137) */ - 3343, /* B43A (46138) */ - 3343, /* B43B (46139) */ - 3343, /* B43C (46140) */ - 3343, /* B43D (46141) */ - 3343, /* B43E (46142) */ - 3343, /* B43F (46143) */ - 3343, /* B440 (46144) */ - 3343, /* B441 (46145) */ - 3343, /* B442 (46146) */ - 3343, /* B443 (46147) */ - 3343, /* B444 (46148) */ - 3343, /* B445 (46149) */ - 3343, /* B446 (46150) */ - 3343, /* B447 (46151) */ - 3343, /* B448 (46152) */ - 3343, /* B449 (46153) */ - 3343, /* B44A (46154) */ - 3343, /* B44B (46155) */ - 3343, /* B44C (46156) */ - 3343, /* B44D (46157) */ - 3343, /* B44E (46158) */ - 3343, /* B44F (46159) */ - 3343, /* B450 (46160) */ - 3343, /* B451 (46161) */ - 3343, /* B452 (46162) */ - 3343, /* B453 (46163) */ - 3343, /* B454 (46164) */ - 3343, /* B455 (46165) */ - 3343, /* B456 (46166) */ - 3343, /* B457 (46167) */ - 3343, /* B458 (46168) */ - 3343, /* B459 (46169) */ - 3343, /* B45A (46170) */ - 3343, /* B45B (46171) */ - 3343, /* B45C (46172) */ - 3343, /* B45D (46173) */ - 3343, /* B45E (46174) */ - 3343, /* B45F (46175) */ - 3343, /* B460 (46176) */ - 3343, /* B461 (46177) */ - 3343, /* B462 (46178) */ - 3343, /* B463 (46179) */ - 3343, /* B464 (46180) */ - 3343, /* B465 (46181) */ - 3343, /* B466 (46182) */ - 3343, /* B467 (46183) */ - 3343, /* B468 (46184) */ - 3343, /* B469 (46185) */ - 3343, /* B46A (46186) */ - 3343, /* B46B (46187) */ - 3343, /* B46C (46188) */ - 3343, /* B46D (46189) */ - 3343, /* B46E (46190) */ - 3343, /* B46F (46191) */ - 3343, /* B470 (46192) */ - 3343, /* B471 (46193) */ - 3343, /* B472 (46194) */ - 3343, /* B473 (46195) */ - 3343, /* B474 (46196) */ - 3343, /* B475 (46197) */ - 3343, /* B476 (46198) */ - 3343, /* B477 (46199) */ - 3343, /* B478 (46200) */ - 3343, /* B479 (46201) */ - 3343, /* B47A (46202) */ - 3343, /* B47B (46203) */ - 3343, /* B47C (46204) */ - 3343, /* B47D (46205) */ - 3343, /* B47E (46206) */ - 3343, /* B47F (46207) */ - 3343, /* B480 (46208) */ - 3343, /* B481 (46209) */ - 3343, /* B482 (46210) */ - 3343, /* B483 (46211) */ - 3343, /* B484 (46212) */ - 3343, /* B485 (46213) */ - 3343, /* B486 (46214) */ - 3343, /* B487 (46215) */ - 3343, /* B488 (46216) */ - 3343, /* B489 (46217) */ - 3343, /* B48A (46218) */ - 3343, /* B48B (46219) */ - 3343, /* B48C (46220) */ - 3343, /* B48D (46221) */ - 3343, /* B48E (46222) */ - 3343, /* B48F (46223) */ - 3343, /* B490 (46224) */ - 3343, /* B491 (46225) */ - 3343, /* B492 (46226) */ - 3343, /* B493 (46227) */ - 3343, /* B494 (46228) */ - 3343, /* B495 (46229) */ - 3343, /* B496 (46230) */ - 3343, /* B497 (46231) */ - 3343, /* B498 (46232) */ - 3343, /* B499 (46233) */ - 3343, /* B49A (46234) */ - 3343, /* B49B (46235) */ - 3343, /* B49C (46236) */ - 3343, /* B49D (46237) */ - 3343, /* B49E (46238) */ - 3343, /* B49F (46239) */ - 3343, /* B4A0 (46240) */ - 3343, /* B4A1 (46241) */ - 3343, /* B4A2 (46242) */ - 3343, /* B4A3 (46243) */ - 3343, /* B4A4 (46244) */ - 3343, /* B4A5 (46245) */ - 3343, /* B4A6 (46246) */ - 3343, /* B4A7 (46247) */ - 3343, /* B4A8 (46248) */ - 3343, /* B4A9 (46249) */ - 3343, /* B4AA (46250) */ - 3343, /* B4AB (46251) */ - 3343, /* B4AC (46252) */ - 3343, /* B4AD (46253) */ - 3343, /* B4AE (46254) */ - 3343, /* B4AF (46255) */ - 3343, /* B4B0 (46256) */ - 3343, /* B4B1 (46257) */ - 3343, /* B4B2 (46258) */ - 3343, /* B4B3 (46259) */ - 3343, /* B4B4 (46260) */ - 3343, /* B4B5 (46261) */ - 3343, /* B4B6 (46262) */ - 3343, /* B4B7 (46263) */ - 3343, /* B4B8 (46264) */ - 3343, /* B4B9 (46265) */ - 3343, /* B4BA (46266) */ - 3343, /* B4BB (46267) */ - 3343, /* B4BC (46268) */ - 3343, /* B4BD (46269) */ - 3343, /* B4BE (46270) */ - 3343, /* B4BF (46271) */ - 3343, /* B4C0 (46272) */ - 3343, /* B4C1 (46273) */ - 3343, /* B4C2 (46274) */ - 3343, /* B4C3 (46275) */ - 3343, /* B4C4 (46276) */ - 3343, /* B4C5 (46277) */ - 3343, /* B4C6 (46278) */ - 3343, /* B4C7 (46279) */ - 3343, /* B4C8 (46280) */ - 3343, /* B4C9 (46281) */ - 3343, /* B4CA (46282) */ - 3343, /* B4CB (46283) */ - 3343, /* B4CC (46284) */ - 3343, /* B4CD (46285) */ - 3343, /* B4CE (46286) */ - 3343, /* B4CF (46287) */ - 3343, /* B4D0 (46288) */ - 3343, /* B4D1 (46289) */ - 3343, /* B4D2 (46290) */ - 3343, /* B4D3 (46291) */ - 3343, /* B4D4 (46292) */ - 3343, /* B4D5 (46293) */ - 3343, /* B4D6 (46294) */ - 3343, /* B4D7 (46295) */ - 3343, /* B4D8 (46296) */ - 3343, /* B4D9 (46297) */ - 3343, /* B4DA (46298) */ - 3343, /* B4DB (46299) */ - 3343, /* B4DC (46300) */ - 3343, /* B4DD (46301) */ - 3343, /* B4DE (46302) */ - 3343, /* B4DF (46303) */ - 3343, /* B4E0 (46304) */ - 3343, /* B4E1 (46305) */ - 3343, /* B4E2 (46306) */ - 3343, /* B4E3 (46307) */ - 3343, /* B4E4 (46308) */ - 3343, /* B4E5 (46309) */ - 3343, /* B4E6 (46310) */ - 3343, /* B4E7 (46311) */ - 3343, /* B4E8 (46312) */ - 3343, /* B4E9 (46313) */ - 3343, /* B4EA (46314) */ - 3343, /* B4EB (46315) */ - 3343, /* B4EC (46316) */ - 3343, /* B4ED (46317) */ - 3343, /* B4EE (46318) */ - 3343, /* B4EF (46319) */ - 3343, /* B4F0 (46320) */ - 3343, /* B4F1 (46321) */ - 3343, /* B4F2 (46322) */ - 3343, /* B4F3 (46323) */ - 3343, /* B4F4 (46324) */ - 3343, /* B4F5 (46325) */ - 3343, /* B4F6 (46326) */ - 3343, /* B4F7 (46327) */ - 3343, /* B4F8 (46328) */ - 3343, /* B4F9 (46329) */ - 3343, /* B4FA (46330) */ - 3343, /* B4FB (46331) */ - 3343, /* B4FC (46332) */ - 3343, /* B4FD (46333) */ - 3343, /* B4FE (46334) */ - 3343, /* B4FF (46335) */ - 3343, /* B500 (46336) */ - 3343, /* B501 (46337) */ - 3343, /* B502 (46338) */ - 3343, /* B503 (46339) */ - 3343, /* B504 (46340) */ - 3343, /* B505 (46341) */ - 3343, /* B506 (46342) */ - 3343, /* B507 (46343) */ - 3343, /* B508 (46344) */ - 3343, /* B509 (46345) */ - 3343, /* B50A (46346) */ - 3343, /* B50B (46347) */ - 3343, /* B50C (46348) */ - 3343, /* B50D (46349) */ - 3343, /* B50E (46350) */ - 3343, /* B50F (46351) */ - 3343, /* B510 (46352) */ - 3343, /* B511 (46353) */ - 3343, /* B512 (46354) */ - 3343, /* B513 (46355) */ - 3343, /* B514 (46356) */ - 3343, /* B515 (46357) */ - 3343, /* B516 (46358) */ - 3343, /* B517 (46359) */ - 3343, /* B518 (46360) */ - 3343, /* B519 (46361) */ - 3343, /* B51A (46362) */ - 3343, /* B51B (46363) */ - 3343, /* B51C (46364) */ - 3343, /* B51D (46365) */ - 3343, /* B51E (46366) */ - 3343, /* B51F (46367) */ - 3343, /* B520 (46368) */ - 3343, /* B521 (46369) */ - 3343, /* B522 (46370) */ - 3343, /* B523 (46371) */ - 3343, /* B524 (46372) */ - 3343, /* B525 (46373) */ - 3343, /* B526 (46374) */ - 3343, /* B527 (46375) */ - 3343, /* B528 (46376) */ - 3343, /* B529 (46377) */ - 3343, /* B52A (46378) */ - 3343, /* B52B (46379) */ - 3343, /* B52C (46380) */ - 3343, /* B52D (46381) */ - 3343, /* B52E (46382) */ - 3343, /* B52F (46383) */ - 3343, /* B530 (46384) */ - 3343, /* B531 (46385) */ - 3343, /* B532 (46386) */ - 3343, /* B533 (46387) */ - 3343, /* B534 (46388) */ - 3343, /* B535 (46389) */ - 3343, /* B536 (46390) */ - 3343, /* B537 (46391) */ - 3343, /* B538 (46392) */ - 3343, /* B539 (46393) */ - 3343, /* B53A (46394) */ - 3343, /* B53B (46395) */ - 3343, /* B53C (46396) */ - 3343, /* B53D (46397) */ - 3343, /* B53E (46398) */ - 3343, /* B53F (46399) */ - 3343, /* B540 (46400) */ - 3343, /* B541 (46401) */ - 3343, /* B542 (46402) */ - 3343, /* B543 (46403) */ - 3343, /* B544 (46404) */ - 3343, /* B545 (46405) */ - 3343, /* B546 (46406) */ - 3343, /* B547 (46407) */ - 3343, /* B548 (46408) */ - 3343, /* B549 (46409) */ - 3343, /* B54A (46410) */ - 3343, /* B54B (46411) */ - 3343, /* B54C (46412) */ - 3343, /* B54D (46413) */ - 3343, /* B54E (46414) */ - 3343, /* B54F (46415) */ - 3343, /* B550 (46416) */ - 3343, /* B551 (46417) */ - 3343, /* B552 (46418) */ - 3343, /* B553 (46419) */ - 3343, /* B554 (46420) */ - 3343, /* B555 (46421) */ - 3343, /* B556 (46422) */ - 3343, /* B557 (46423) */ - 3343, /* B558 (46424) */ - 3343, /* B559 (46425) */ - 3343, /* B55A (46426) */ - 3343, /* B55B (46427) */ - 3343, /* B55C (46428) */ - 3343, /* B55D (46429) */ - 3343, /* B55E (46430) */ - 3343, /* B55F (46431) */ - 3343, /* B560 (46432) */ - 3343, /* B561 (46433) */ - 3343, /* B562 (46434) */ - 3343, /* B563 (46435) */ - 3343, /* B564 (46436) */ - 3343, /* B565 (46437) */ - 3343, /* B566 (46438) */ - 3343, /* B567 (46439) */ - 3343, /* B568 (46440) */ - 3343, /* B569 (46441) */ - 3343, /* B56A (46442) */ - 3343, /* B56B (46443) */ - 3343, /* B56C (46444) */ - 3343, /* B56D (46445) */ - 3343, /* B56E (46446) */ - 3343, /* B56F (46447) */ - 3343, /* B570 (46448) */ - 3343, /* B571 (46449) */ - 3343, /* B572 (46450) */ - 3343, /* B573 (46451) */ - 3343, /* B574 (46452) */ - 3343, /* B575 (46453) */ - 3343, /* B576 (46454) */ - 3343, /* B577 (46455) */ - 3343, /* B578 (46456) */ - 3343, /* B579 (46457) */ - 3343, /* B57A (46458) */ - 3343, /* B57B (46459) */ - 3343, /* B57C (46460) */ - 3343, /* B57D (46461) */ - 3343, /* B57E (46462) */ - 3343, /* B57F (46463) */ - 3343, /* B580 (46464) */ - 3343, /* B581 (46465) */ - 3343, /* B582 (46466) */ - 3343, /* B583 (46467) */ - 3343, /* B584 (46468) */ - 3343, /* B585 (46469) */ - 3343, /* B586 (46470) */ - 3343, /* B587 (46471) */ - 3343, /* B588 (46472) */ - 3343, /* B589 (46473) */ - 3343, /* B58A (46474) */ - 3343, /* B58B (46475) */ - 3343, /* B58C (46476) */ - 3343, /* B58D (46477) */ - 3343, /* B58E (46478) */ - 3343, /* B58F (46479) */ - 3343, /* B590 (46480) */ - 3343, /* B591 (46481) */ - 3343, /* B592 (46482) */ - 3343, /* B593 (46483) */ - 3343, /* B594 (46484) */ - 3343, /* B595 (46485) */ - 3343, /* B596 (46486) */ - 3343, /* B597 (46487) */ - 3343, /* B598 (46488) */ - 3343, /* B599 (46489) */ - 3343, /* B59A (46490) */ - 3343, /* B59B (46491) */ - 3343, /* B59C (46492) */ - 3343, /* B59D (46493) */ - 3343, /* B59E (46494) */ - 3343, /* B59F (46495) */ - 3343, /* B5A0 (46496) */ - 3343, /* B5A1 (46497) */ - 3343, /* B5A2 (46498) */ - 3343, /* B5A3 (46499) */ - 3343, /* B5A4 (46500) */ - 3343, /* B5A5 (46501) */ - 3343, /* B5A6 (46502) */ - 3343, /* B5A7 (46503) */ - 3343, /* B5A8 (46504) */ - 3343, /* B5A9 (46505) */ - 3343, /* B5AA (46506) */ - 3343, /* B5AB (46507) */ - 3343, /* B5AC (46508) */ - 3343, /* B5AD (46509) */ - 3343, /* B5AE (46510) */ - 3343, /* B5AF (46511) */ - 3343, /* B5B0 (46512) */ - 3343, /* B5B1 (46513) */ - 3343, /* B5B2 (46514) */ - 3343, /* B5B3 (46515) */ - 3343, /* B5B4 (46516) */ - 3343, /* B5B5 (46517) */ - 3343, /* B5B6 (46518) */ - 3343, /* B5B7 (46519) */ - 3343, /* B5B8 (46520) */ - 3343, /* B5B9 (46521) */ - 3343, /* B5BA (46522) */ - 3343, /* B5BB (46523) */ - 3343, /* B5BC (46524) */ - 3343, /* B5BD (46525) */ - 3343, /* B5BE (46526) */ - 3343, /* B5BF (46527) */ - 3343, /* B5C0 (46528) */ - 3343, /* B5C1 (46529) */ - 3343, /* B5C2 (46530) */ - 3343, /* B5C3 (46531) */ - 3343, /* B5C4 (46532) */ - 3343, /* B5C5 (46533) */ - 3343, /* B5C6 (46534) */ - 3343, /* B5C7 (46535) */ - 3343, /* B5C8 (46536) */ - 3343, /* B5C9 (46537) */ - 3343, /* B5CA (46538) */ - 3343, /* B5CB (46539) */ - 3343, /* B5CC (46540) */ - 3343, /* B5CD (46541) */ - 3343, /* B5CE (46542) */ - 3343, /* B5CF (46543) */ - 3343, /* B5D0 (46544) */ - 3343, /* B5D1 (46545) */ - 3343, /* B5D2 (46546) */ - 3343, /* B5D3 (46547) */ - 3343, /* B5D4 (46548) */ - 3343, /* B5D5 (46549) */ - 3343, /* B5D6 (46550) */ - 3343, /* B5D7 (46551) */ - 3343, /* B5D8 (46552) */ - 3343, /* B5D9 (46553) */ - 3343, /* B5DA (46554) */ - 3343, /* B5DB (46555) */ - 3343, /* B5DC (46556) */ - 3343, /* B5DD (46557) */ - 3343, /* B5DE (46558) */ - 3343, /* B5DF (46559) */ - 3343, /* B5E0 (46560) */ - 3343, /* B5E1 (46561) */ - 3343, /* B5E2 (46562) */ - 3343, /* B5E3 (46563) */ - 3343, /* B5E4 (46564) */ - 3343, /* B5E5 (46565) */ - 3343, /* B5E6 (46566) */ - 3343, /* B5E7 (46567) */ - 3343, /* B5E8 (46568) */ - 3343, /* B5E9 (46569) */ - 3343, /* B5EA (46570) */ - 3343, /* B5EB (46571) */ - 3343, /* B5EC (46572) */ - 3343, /* B5ED (46573) */ - 3343, /* B5EE (46574) */ - 3343, /* B5EF (46575) */ - 3343, /* B5F0 (46576) */ - 3343, /* B5F1 (46577) */ - 3343, /* B5F2 (46578) */ - 3343, /* B5F3 (46579) */ - 3343, /* B5F4 (46580) */ - 3343, /* B5F5 (46581) */ - 3343, /* B5F6 (46582) */ - 3343, /* B5F7 (46583) */ - 3343, /* B5F8 (46584) */ - 3343, /* B5F9 (46585) */ - 3343, /* B5FA (46586) */ - 3343, /* B5FB (46587) */ - 3343, /* B5FC (46588) */ - 3343, /* B5FD (46589) */ - 3343, /* B5FE (46590) */ - 3343, /* B5FF (46591) */ - 3343, /* B600 (46592) */ - 3343, /* B601 (46593) */ - 3343, /* B602 (46594) */ - 3343, /* B603 (46595) */ - 3343, /* B604 (46596) */ - 3343, /* B605 (46597) */ - 3343, /* B606 (46598) */ - 3343, /* B607 (46599) */ - 3343, /* B608 (46600) */ - 3343, /* B609 (46601) */ - 3343, /* B60A (46602) */ - 3343, /* B60B (46603) */ - 3343, /* B60C (46604) */ - 3343, /* B60D (46605) */ - 3343, /* B60E (46606) */ - 3343, /* B60F (46607) */ - 3343, /* B610 (46608) */ - 3343, /* B611 (46609) */ - 3343, /* B612 (46610) */ - 3343, /* B613 (46611) */ - 3343, /* B614 (46612) */ - 3343, /* B615 (46613) */ - 3343, /* B616 (46614) */ - 3343, /* B617 (46615) */ - 3343, /* B618 (46616) */ - 3343, /* B619 (46617) */ - 3343, /* B61A (46618) */ - 3343, /* B61B (46619) */ - 3343, /* B61C (46620) */ - 3343, /* B61D (46621) */ - 3343, /* B61E (46622) */ - 3343, /* B61F (46623) */ - 3343, /* B620 (46624) */ - 3343, /* B621 (46625) */ - 3343, /* B622 (46626) */ - 3343, /* B623 (46627) */ - 3343, /* B624 (46628) */ - 3343, /* B625 (46629) */ - 3343, /* B626 (46630) */ - 3343, /* B627 (46631) */ - 3343, /* B628 (46632) */ - 3343, /* B629 (46633) */ - 3343, /* B62A (46634) */ - 3343, /* B62B (46635) */ - 3343, /* B62C (46636) */ - 3343, /* B62D (46637) */ - 3343, /* B62E (46638) */ - 3343, /* B62F (46639) */ - 3343, /* B630 (46640) */ - 3343, /* B631 (46641) */ - 3343, /* B632 (46642) */ - 3343, /* B633 (46643) */ - 3343, /* B634 (46644) */ - 3343, /* B635 (46645) */ - 3343, /* B636 (46646) */ - 3343, /* B637 (46647) */ - 3343, /* B638 (46648) */ - 3343, /* B639 (46649) */ - 3343, /* B63A (46650) */ - 3343, /* B63B (46651) */ - 3343, /* B63C (46652) */ - 3343, /* B63D (46653) */ - 3343, /* B63E (46654) */ - 3343, /* B63F (46655) */ - 3343, /* B640 (46656) */ - 3343, /* B641 (46657) */ - 3343, /* B642 (46658) */ - 3343, /* B643 (46659) */ - 3343, /* B644 (46660) */ - 3343, /* B645 (46661) */ - 3343, /* B646 (46662) */ - 3343, /* B647 (46663) */ - 3343, /* B648 (46664) */ - 3343, /* B649 (46665) */ - 3343, /* B64A (46666) */ - 3343, /* B64B (46667) */ - 3343, /* B64C (46668) */ - 3343, /* B64D (46669) */ - 3343, /* B64E (46670) */ - 3343, /* B64F (46671) */ - 3343, /* B650 (46672) */ - 3343, /* B651 (46673) */ - 3343, /* B652 (46674) */ - 3343, /* B653 (46675) */ - 3343, /* B654 (46676) */ - 3343, /* B655 (46677) */ - 3343, /* B656 (46678) */ - 3343, /* B657 (46679) */ - 3343, /* B658 (46680) */ - 3343, /* B659 (46681) */ - 3343, /* B65A (46682) */ - 3343, /* B65B (46683) */ - 3343, /* B65C (46684) */ - 3343, /* B65D (46685) */ - 3343, /* B65E (46686) */ - 3343, /* B65F (46687) */ - 3343, /* B660 (46688) */ - 3343, /* B661 (46689) */ - 3343, /* B662 (46690) */ - 3343, /* B663 (46691) */ - 3343, /* B664 (46692) */ - 3343, /* B665 (46693) */ - 3343, /* B666 (46694) */ - 3343, /* B667 (46695) */ - 3343, /* B668 (46696) */ - 3343, /* B669 (46697) */ - 3343, /* B66A (46698) */ - 3343, /* B66B (46699) */ - 3343, /* B66C (46700) */ - 3343, /* B66D (46701) */ - 3343, /* B66E (46702) */ - 3343, /* B66F (46703) */ - 3343, /* B670 (46704) */ - 3343, /* B671 (46705) */ - 3343, /* B672 (46706) */ - 3343, /* B673 (46707) */ - 3343, /* B674 (46708) */ - 3343, /* B675 (46709) */ - 3343, /* B676 (46710) */ - 3343, /* B677 (46711) */ - 3343, /* B678 (46712) */ - 3343, /* B679 (46713) */ - 3343, /* B67A (46714) */ - 3343, /* B67B (46715) */ - 3343, /* B67C (46716) */ - 3343, /* B67D (46717) */ - 3343, /* B67E (46718) */ - 3343, /* B67F (46719) */ - 3343, /* B680 (46720) */ - 3343, /* B681 (46721) */ - 3343, /* B682 (46722) */ - 3343, /* B683 (46723) */ - 3343, /* B684 (46724) */ - 3343, /* B685 (46725) */ - 3343, /* B686 (46726) */ - 3343, /* B687 (46727) */ - 3343, /* B688 (46728) */ - 3343, /* B689 (46729) */ - 3343, /* B68A (46730) */ - 3343, /* B68B (46731) */ - 3343, /* B68C (46732) */ - 3343, /* B68D (46733) */ - 3343, /* B68E (46734) */ - 3343, /* B68F (46735) */ - 3343, /* B690 (46736) */ - 3343, /* B691 (46737) */ - 3343, /* B692 (46738) */ - 3343, /* B693 (46739) */ - 3343, /* B694 (46740) */ - 3343, /* B695 (46741) */ - 3343, /* B696 (46742) */ - 3343, /* B697 (46743) */ - 3343, /* B698 (46744) */ - 3343, /* B699 (46745) */ - 3343, /* B69A (46746) */ - 3343, /* B69B (46747) */ - 3343, /* B69C (46748) */ - 3343, /* B69D (46749) */ - 3343, /* B69E (46750) */ - 3343, /* B69F (46751) */ - 3343, /* B6A0 (46752) */ - 3343, /* B6A1 (46753) */ - 3343, /* B6A2 (46754) */ - 3343, /* B6A3 (46755) */ - 3343, /* B6A4 (46756) */ - 3343, /* B6A5 (46757) */ - 3343, /* B6A6 (46758) */ - 3343, /* B6A7 (46759) */ - 3343, /* B6A8 (46760) */ - 3343, /* B6A9 (46761) */ - 3343, /* B6AA (46762) */ - 3343, /* B6AB (46763) */ - 3343, /* B6AC (46764) */ - 3343, /* B6AD (46765) */ - 3343, /* B6AE (46766) */ - 3343, /* B6AF (46767) */ - 3343, /* B6B0 (46768) */ - 3343, /* B6B1 (46769) */ - 3343, /* B6B2 (46770) */ - 3343, /* B6B3 (46771) */ - 3343, /* B6B4 (46772) */ - 3343, /* B6B5 (46773) */ - 3343, /* B6B6 (46774) */ - 3343, /* B6B7 (46775) */ - 3343, /* B6B8 (46776) */ - 3343, /* B6B9 (46777) */ - 3343, /* B6BA (46778) */ - 3343, /* B6BB (46779) */ - 3343, /* B6BC (46780) */ - 3343, /* B6BD (46781) */ - 3343, /* B6BE (46782) */ - 3343, /* B6BF (46783) */ - 3343, /* B6C0 (46784) */ - 3343, /* B6C1 (46785) */ - 3343, /* B6C2 (46786) */ - 3343, /* B6C3 (46787) */ - 3343, /* B6C4 (46788) */ - 3343, /* B6C5 (46789) */ - 3343, /* B6C6 (46790) */ - 3343, /* B6C7 (46791) */ - 3343, /* B6C8 (46792) */ - 3343, /* B6C9 (46793) */ - 3343, /* B6CA (46794) */ - 3343, /* B6CB (46795) */ - 3343, /* B6CC (46796) */ - 3343, /* B6CD (46797) */ - 3343, /* B6CE (46798) */ - 3343, /* B6CF (46799) */ - 3343, /* B6D0 (46800) */ - 3343, /* B6D1 (46801) */ - 3343, /* B6D2 (46802) */ - 3343, /* B6D3 (46803) */ - 3343, /* B6D4 (46804) */ - 3343, /* B6D5 (46805) */ - 3343, /* B6D6 (46806) */ - 3343, /* B6D7 (46807) */ - 3343, /* B6D8 (46808) */ - 3343, /* B6D9 (46809) */ - 3343, /* B6DA (46810) */ - 3343, /* B6DB (46811) */ - 3343, /* B6DC (46812) */ - 3343, /* B6DD (46813) */ - 3343, /* B6DE (46814) */ - 3343, /* B6DF (46815) */ - 3343, /* B6E0 (46816) */ - 3343, /* B6E1 (46817) */ - 3343, /* B6E2 (46818) */ - 3343, /* B6E3 (46819) */ - 3343, /* B6E4 (46820) */ - 3343, /* B6E5 (46821) */ - 3343, /* B6E6 (46822) */ - 3343, /* B6E7 (46823) */ - 3343, /* B6E8 (46824) */ - 3343, /* B6E9 (46825) */ - 3343, /* B6EA (46826) */ - 3343, /* B6EB (46827) */ - 3343, /* B6EC (46828) */ - 3343, /* B6ED (46829) */ - 3343, /* B6EE (46830) */ - 3343, /* B6EF (46831) */ - 3343, /* B6F0 (46832) */ - 3343, /* B6F1 (46833) */ - 3343, /* B6F2 (46834) */ - 3343, /* B6F3 (46835) */ - 3343, /* B6F4 (46836) */ - 3343, /* B6F5 (46837) */ - 3343, /* B6F6 (46838) */ - 3343, /* B6F7 (46839) */ - 3343, /* B6F8 (46840) */ - 3343, /* B6F9 (46841) */ - 3343, /* B6FA (46842) */ - 3343, /* B6FB (46843) */ - 3343, /* B6FC (46844) */ - 3343, /* B6FD (46845) */ - 3343, /* B6FE (46846) */ - 3343, /* B6FF (46847) */ - 3343, /* B700 (46848) */ - 3343, /* B701 (46849) */ - 3343, /* B702 (46850) */ - 3343, /* B703 (46851) */ - 3343, /* B704 (46852) */ - 3343, /* B705 (46853) */ - 3343, /* B706 (46854) */ - 3343, /* B707 (46855) */ - 3343, /* B708 (46856) */ - 3343, /* B709 (46857) */ - 3343, /* B70A (46858) */ - 3343, /* B70B (46859) */ - 3343, /* B70C (46860) */ - 3343, /* B70D (46861) */ - 3343, /* B70E (46862) */ - 3343, /* B70F (46863) */ - 3343, /* B710 (46864) */ - 3343, /* B711 (46865) */ - 3343, /* B712 (46866) */ - 3343, /* B713 (46867) */ - 3343, /* B714 (46868) */ - 3343, /* B715 (46869) */ - 3343, /* B716 (46870) */ - 3343, /* B717 (46871) */ - 3343, /* B718 (46872) */ - 3343, /* B719 (46873) */ - 3343, /* B71A (46874) */ - 3343, /* B71B (46875) */ - 3343, /* B71C (46876) */ - 3343, /* B71D (46877) */ - 3343, /* B71E (46878) */ - 3343, /* B71F (46879) */ - 3343, /* B720 (46880) */ - 3343, /* B721 (46881) */ - 3343, /* B722 (46882) */ - 3343, /* B723 (46883) */ - 3343, /* B724 (46884) */ - 3343, /* B725 (46885) */ - 3343, /* B726 (46886) */ - 3343, /* B727 (46887) */ - 3343, /* B728 (46888) */ - 3343, /* B729 (46889) */ - 3343, /* B72A (46890) */ - 3343, /* B72B (46891) */ - 3343, /* B72C (46892) */ - 3343, /* B72D (46893) */ - 3343, /* B72E (46894) */ - 3343, /* B72F (46895) */ - 3343, /* B730 (46896) */ - 3343, /* B731 (46897) */ - 3343, /* B732 (46898) */ - 3343, /* B733 (46899) */ - 3343, /* B734 (46900) */ - 3343, /* B735 (46901) */ - 3343, /* B736 (46902) */ - 3343, /* B737 (46903) */ - 3343, /* B738 (46904) */ - 3343, /* B739 (46905) */ - 3343, /* B73A (46906) */ - 3343, /* B73B (46907) */ - 3343, /* B73C (46908) */ - 3343, /* B73D (46909) */ - 3343, /* B73E (46910) */ - 3343, /* B73F (46911) */ - 3343, /* B740 (46912) */ - 3343, /* B741 (46913) */ - 3343, /* B742 (46914) */ - 3343, /* B743 (46915) */ - 3343, /* B744 (46916) */ - 3343, /* B745 (46917) */ - 3343, /* B746 (46918) */ - 3343, /* B747 (46919) */ - 3343, /* B748 (46920) */ - 3343, /* B749 (46921) */ - 3343, /* B74A (46922) */ - 3343, /* B74B (46923) */ - 3343, /* B74C (46924) */ - 3343, /* B74D (46925) */ - 3343, /* B74E (46926) */ - 3343, /* B74F (46927) */ - 3343, /* B750 (46928) */ - 3343, /* B751 (46929) */ - 3343, /* B752 (46930) */ - 3343, /* B753 (46931) */ - 3343, /* B754 (46932) */ - 3343, /* B755 (46933) */ - 3343, /* B756 (46934) */ - 3343, /* B757 (46935) */ - 3343, /* B758 (46936) */ - 3343, /* B759 (46937) */ - 3343, /* B75A (46938) */ - 3343, /* B75B (46939) */ - 3343, /* B75C (46940) */ - 3343, /* B75D (46941) */ - 3343, /* B75E (46942) */ - 3343, /* B75F (46943) */ - 3343, /* B760 (46944) */ - 3343, /* B761 (46945) */ - 3343, /* B762 (46946) */ - 3343, /* B763 (46947) */ - 3343, /* B764 (46948) */ - 3343, /* B765 (46949) */ - 3343, /* B766 (46950) */ - 3343, /* B767 (46951) */ - 3343, /* B768 (46952) */ - 3343, /* B769 (46953) */ - 3343, /* B76A (46954) */ - 3343, /* B76B (46955) */ - 3343, /* B76C (46956) */ - 3343, /* B76D (46957) */ - 3343, /* B76E (46958) */ - 3343, /* B76F (46959) */ - 3343, /* B770 (46960) */ - 3343, /* B771 (46961) */ - 3343, /* B772 (46962) */ - 3343, /* B773 (46963) */ - 3343, /* B774 (46964) */ - 3343, /* B775 (46965) */ - 3343, /* B776 (46966) */ - 3343, /* B777 (46967) */ - 3343, /* B778 (46968) */ - 3343, /* B779 (46969) */ - 3343, /* B77A (46970) */ - 3343, /* B77B (46971) */ - 3343, /* B77C (46972) */ - 3343, /* B77D (46973) */ - 3343, /* B77E (46974) */ - 3343, /* B77F (46975) */ - 3343, /* B780 (46976) */ - 3343, /* B781 (46977) */ - 3343, /* B782 (46978) */ - 3343, /* B783 (46979) */ - 3343, /* B784 (46980) */ - 3343, /* B785 (46981) */ - 3343, /* B786 (46982) */ - 3343, /* B787 (46983) */ - 3343, /* B788 (46984) */ - 3343, /* B789 (46985) */ - 3343, /* B78A (46986) */ - 3343, /* B78B (46987) */ - 3343, /* B78C (46988) */ - 3343, /* B78D (46989) */ - 3343, /* B78E (46990) */ - 3343, /* B78F (46991) */ - 3343, /* B790 (46992) */ - 3343, /* B791 (46993) */ - 3343, /* B792 (46994) */ - 3343, /* B793 (46995) */ - 3343, /* B794 (46996) */ - 3343, /* B795 (46997) */ - 3343, /* B796 (46998) */ - 3343, /* B797 (46999) */ - 3343, /* B798 (47000) */ - 3343, /* B799 (47001) */ - 3343, /* B79A (47002) */ - 3343, /* B79B (47003) */ - 3343, /* B79C (47004) */ - 3343, /* B79D (47005) */ - 3343, /* B79E (47006) */ - 3343, /* B79F (47007) */ - 3343, /* B7A0 (47008) */ - 3343, /* B7A1 (47009) */ - 3343, /* B7A2 (47010) */ - 3343, /* B7A3 (47011) */ - 3343, /* B7A4 (47012) */ - 3343, /* B7A5 (47013) */ - 3343, /* B7A6 (47014) */ - 3343, /* B7A7 (47015) */ - 3343, /* B7A8 (47016) */ - 3343, /* B7A9 (47017) */ - 3343, /* B7AA (47018) */ - 3343, /* B7AB (47019) */ - 3343, /* B7AC (47020) */ - 3343, /* B7AD (47021) */ - 3343, /* B7AE (47022) */ - 3343, /* B7AF (47023) */ - 3343, /* B7B0 (47024) */ - 3343, /* B7B1 (47025) */ - 3343, /* B7B2 (47026) */ - 3343, /* B7B3 (47027) */ - 3343, /* B7B4 (47028) */ - 3343, /* B7B5 (47029) */ - 3343, /* B7B6 (47030) */ - 3343, /* B7B7 (47031) */ - 3343, /* B7B8 (47032) */ - 3343, /* B7B9 (47033) */ - 3343, /* B7BA (47034) */ - 3343, /* B7BB (47035) */ - 3343, /* B7BC (47036) */ - 3343, /* B7BD (47037) */ - 3343, /* B7BE (47038) */ - 3343, /* B7BF (47039) */ - 3343, /* B7C0 (47040) */ - 3343, /* B7C1 (47041) */ - 3343, /* B7C2 (47042) */ - 3343, /* B7C3 (47043) */ - 3343, /* B7C4 (47044) */ - 3343, /* B7C5 (47045) */ - 3343, /* B7C6 (47046) */ - 3343, /* B7C7 (47047) */ - 3343, /* B7C8 (47048) */ - 3343, /* B7C9 (47049) */ - 3343, /* B7CA (47050) */ - 3343, /* B7CB (47051) */ - 3343, /* B7CC (47052) */ - 3343, /* B7CD (47053) */ - 3343, /* B7CE (47054) */ - 3343, /* B7CF (47055) */ - 3343, /* B7D0 (47056) */ - 3343, /* B7D1 (47057) */ - 3343, /* B7D2 (47058) */ - 3343, /* B7D3 (47059) */ - 3343, /* B7D4 (47060) */ - 3343, /* B7D5 (47061) */ - 3343, /* B7D6 (47062) */ - 3343, /* B7D7 (47063) */ - 3343, /* B7D8 (47064) */ - 3343, /* B7D9 (47065) */ - 3343, /* B7DA (47066) */ - 3343, /* B7DB (47067) */ - 3343, /* B7DC (47068) */ - 3343, /* B7DD (47069) */ - 3343, /* B7DE (47070) */ - 3343, /* B7DF (47071) */ - 3343, /* B7E0 (47072) */ - 3343, /* B7E1 (47073) */ - 3343, /* B7E2 (47074) */ - 3343, /* B7E3 (47075) */ - 3343, /* B7E4 (47076) */ - 3343, /* B7E5 (47077) */ - 3343, /* B7E6 (47078) */ - 3343, /* B7E7 (47079) */ - 3343, /* B7E8 (47080) */ - 3343, /* B7E9 (47081) */ - 3343, /* B7EA (47082) */ - 3343, /* B7EB (47083) */ - 3343, /* B7EC (47084) */ - 3343, /* B7ED (47085) */ - 3343, /* B7EE (47086) */ - 3343, /* B7EF (47087) */ - 3343, /* B7F0 (47088) */ - 3343, /* B7F1 (47089) */ - 3343, /* B7F2 (47090) */ - 3343, /* B7F3 (47091) */ - 3343, /* B7F4 (47092) */ - 3343, /* B7F5 (47093) */ - 3343, /* B7F6 (47094) */ - 3343, /* B7F7 (47095) */ - 3343, /* B7F8 (47096) */ - 3343, /* B7F9 (47097) */ - 3343, /* B7FA (47098) */ - 3343, /* B7FB (47099) */ - 3343, /* B7FC (47100) */ - 3343, /* B7FD (47101) */ - 3343, /* B7FE (47102) */ - 3343, /* B7FF (47103) */ - 3343, /* B800 (47104) */ - 3343, /* B801 (47105) */ - 3343, /* B802 (47106) */ - 3343, /* B803 (47107) */ - 3343, /* B804 (47108) */ - 3343, /* B805 (47109) */ - 3343, /* B806 (47110) */ - 3343, /* B807 (47111) */ - 3343, /* B808 (47112) */ - 3343, /* B809 (47113) */ - 3343, /* B80A (47114) */ - 3343, /* B80B (47115) */ - 3343, /* B80C (47116) */ - 3343, /* B80D (47117) */ - 3343, /* B80E (47118) */ - 3343, /* B80F (47119) */ - 3343, /* B810 (47120) */ - 3343, /* B811 (47121) */ - 3343, /* B812 (47122) */ - 3343, /* B813 (47123) */ - 3343, /* B814 (47124) */ - 3343, /* B815 (47125) */ - 3343, /* B816 (47126) */ - 3343, /* B817 (47127) */ - 3343, /* B818 (47128) */ - 3343, /* B819 (47129) */ - 3343, /* B81A (47130) */ - 3343, /* B81B (47131) */ - 3343, /* B81C (47132) */ - 3343, /* B81D (47133) */ - 3343, /* B81E (47134) */ - 3343, /* B81F (47135) */ - 3343, /* B820 (47136) */ - 3343, /* B821 (47137) */ - 3343, /* B822 (47138) */ - 3343, /* B823 (47139) */ - 3343, /* B824 (47140) */ - 3343, /* B825 (47141) */ - 3343, /* B826 (47142) */ - 3343, /* B827 (47143) */ - 3343, /* B828 (47144) */ - 3343, /* B829 (47145) */ - 3343, /* B82A (47146) */ - 3343, /* B82B (47147) */ - 3343, /* B82C (47148) */ - 3343, /* B82D (47149) */ - 3343, /* B82E (47150) */ - 3343, /* B82F (47151) */ - 3343, /* B830 (47152) */ - 3343, /* B831 (47153) */ - 3343, /* B832 (47154) */ - 3343, /* B833 (47155) */ - 3343, /* B834 (47156) */ - 3343, /* B835 (47157) */ - 3343, /* B836 (47158) */ - 3343, /* B837 (47159) */ - 3343, /* B838 (47160) */ - 3343, /* B839 (47161) */ - 3343, /* B83A (47162) */ - 3343, /* B83B (47163) */ - 3343, /* B83C (47164) */ - 3343, /* B83D (47165) */ - 3343, /* B83E (47166) */ - 3343, /* B83F (47167) */ - 3343, /* B840 (47168) */ - 3343, /* B841 (47169) */ - 3343, /* B842 (47170) */ - 3343, /* B843 (47171) */ - 3343, /* B844 (47172) */ - 3343, /* B845 (47173) */ - 3343, /* B846 (47174) */ - 3343, /* B847 (47175) */ - 3343, /* B848 (47176) */ - 3343, /* B849 (47177) */ - 3343, /* B84A (47178) */ - 3343, /* B84B (47179) */ - 3343, /* B84C (47180) */ - 3343, /* B84D (47181) */ - 3343, /* B84E (47182) */ - 3343, /* B84F (47183) */ - 3343, /* B850 (47184) */ - 3343, /* B851 (47185) */ - 3343, /* B852 (47186) */ - 3343, /* B853 (47187) */ - 3343, /* B854 (47188) */ - 3343, /* B855 (47189) */ - 3343, /* B856 (47190) */ - 3343, /* B857 (47191) */ - 3343, /* B858 (47192) */ - 3343, /* B859 (47193) */ - 3343, /* B85A (47194) */ - 3343, /* B85B (47195) */ - 3343, /* B85C (47196) */ - 3343, /* B85D (47197) */ - 3343, /* B85E (47198) */ - 3343, /* B85F (47199) */ - 3343, /* B860 (47200) */ - 3343, /* B861 (47201) */ - 3343, /* B862 (47202) */ - 3343, /* B863 (47203) */ - 3343, /* B864 (47204) */ - 3343, /* B865 (47205) */ - 3343, /* B866 (47206) */ - 3343, /* B867 (47207) */ - 3343, /* B868 (47208) */ - 3343, /* B869 (47209) */ - 3343, /* B86A (47210) */ - 3343, /* B86B (47211) */ - 3343, /* B86C (47212) */ - 3343, /* B86D (47213) */ - 3343, /* B86E (47214) */ - 3343, /* B86F (47215) */ - 3343, /* B870 (47216) */ - 3343, /* B871 (47217) */ - 3343, /* B872 (47218) */ - 3343, /* B873 (47219) */ - 3343, /* B874 (47220) */ - 3343, /* B875 (47221) */ - 3343, /* B876 (47222) */ - 3343, /* B877 (47223) */ - 3343, /* B878 (47224) */ - 3343, /* B879 (47225) */ - 3343, /* B87A (47226) */ - 3343, /* B87B (47227) */ - 3343, /* B87C (47228) */ - 3343, /* B87D (47229) */ - 3343, /* B87E (47230) */ - 3343, /* B87F (47231) */ - 3343, /* B880 (47232) */ - 3343, /* B881 (47233) */ - 3343, /* B882 (47234) */ - 3343, /* B883 (47235) */ - 3343, /* B884 (47236) */ - 3343, /* B885 (47237) */ - 3343, /* B886 (47238) */ - 3343, /* B887 (47239) */ - 3343, /* B888 (47240) */ - 3343, /* B889 (47241) */ - 3343, /* B88A (47242) */ - 3343, /* B88B (47243) */ - 3343, /* B88C (47244) */ - 3343, /* B88D (47245) */ - 3343, /* B88E (47246) */ - 3343, /* B88F (47247) */ - 3343, /* B890 (47248) */ - 3343, /* B891 (47249) */ - 3343, /* B892 (47250) */ - 3343, /* B893 (47251) */ - 3343, /* B894 (47252) */ - 3343, /* B895 (47253) */ - 3343, /* B896 (47254) */ - 3343, /* B897 (47255) */ - 3343, /* B898 (47256) */ - 3343, /* B899 (47257) */ - 3343, /* B89A (47258) */ - 3343, /* B89B (47259) */ - 3343, /* B89C (47260) */ - 3343, /* B89D (47261) */ - 3343, /* B89E (47262) */ - 3343, /* B89F (47263) */ - 3343, /* B8A0 (47264) */ - 3343, /* B8A1 (47265) */ - 3343, /* B8A2 (47266) */ - 3343, /* B8A3 (47267) */ - 3343, /* B8A4 (47268) */ - 3343, /* B8A5 (47269) */ - 3343, /* B8A6 (47270) */ - 3343, /* B8A7 (47271) */ - 3343, /* B8A8 (47272) */ - 3343, /* B8A9 (47273) */ - 3343, /* B8AA (47274) */ - 3343, /* B8AB (47275) */ - 3343, /* B8AC (47276) */ - 3343, /* B8AD (47277) */ - 3343, /* B8AE (47278) */ - 3343, /* B8AF (47279) */ - 3343, /* B8B0 (47280) */ - 3343, /* B8B1 (47281) */ - 3343, /* B8B2 (47282) */ - 3343, /* B8B3 (47283) */ - 3343, /* B8B4 (47284) */ - 3343, /* B8B5 (47285) */ - 3343, /* B8B6 (47286) */ - 3343, /* B8B7 (47287) */ - 3343, /* B8B8 (47288) */ - 3343, /* B8B9 (47289) */ - 3343, /* B8BA (47290) */ - 3343, /* B8BB (47291) */ - 3343, /* B8BC (47292) */ - 3343, /* B8BD (47293) */ - 3343, /* B8BE (47294) */ - 3343, /* B8BF (47295) */ - 3343, /* B8C0 (47296) */ - 3343, /* B8C1 (47297) */ - 3343, /* B8C2 (47298) */ - 3343, /* B8C3 (47299) */ - 3343, /* B8C4 (47300) */ - 3343, /* B8C5 (47301) */ - 3343, /* B8C6 (47302) */ - 3343, /* B8C7 (47303) */ - 3343, /* B8C8 (47304) */ - 3343, /* B8C9 (47305) */ - 3343, /* B8CA (47306) */ - 3343, /* B8CB (47307) */ - 3343, /* B8CC (47308) */ - 3343, /* B8CD (47309) */ - 3343, /* B8CE (47310) */ - 3343, /* B8CF (47311) */ - 3343, /* B8D0 (47312) */ - 3343, /* B8D1 (47313) */ - 3343, /* B8D2 (47314) */ - 3343, /* B8D3 (47315) */ - 3343, /* B8D4 (47316) */ - 3343, /* B8D5 (47317) */ - 3343, /* B8D6 (47318) */ - 3343, /* B8D7 (47319) */ - 3343, /* B8D8 (47320) */ - 3343, /* B8D9 (47321) */ - 3343, /* B8DA (47322) */ - 3343, /* B8DB (47323) */ - 3343, /* B8DC (47324) */ - 3343, /* B8DD (47325) */ - 3343, /* B8DE (47326) */ - 3343, /* B8DF (47327) */ - 3343, /* B8E0 (47328) */ - 3343, /* B8E1 (47329) */ - 3343, /* B8E2 (47330) */ - 3343, /* B8E3 (47331) */ - 3343, /* B8E4 (47332) */ - 3343, /* B8E5 (47333) */ - 3343, /* B8E6 (47334) */ - 3343, /* B8E7 (47335) */ - 3343, /* B8E8 (47336) */ - 3343, /* B8E9 (47337) */ - 3343, /* B8EA (47338) */ - 3343, /* B8EB (47339) */ - 3343, /* B8EC (47340) */ - 3343, /* B8ED (47341) */ - 3343, /* B8EE (47342) */ - 3343, /* B8EF (47343) */ - 3343, /* B8F0 (47344) */ - 3343, /* B8F1 (47345) */ - 3343, /* B8F2 (47346) */ - 3343, /* B8F3 (47347) */ - 3343, /* B8F4 (47348) */ - 3343, /* B8F5 (47349) */ - 3343, /* B8F6 (47350) */ - 3343, /* B8F7 (47351) */ - 3343, /* B8F8 (47352) */ - 3343, /* B8F9 (47353) */ - 3343, /* B8FA (47354) */ - 3343, /* B8FB (47355) */ - 3343, /* B8FC (47356) */ - 3343, /* B8FD (47357) */ - 3343, /* B8FE (47358) */ - 3343, /* B8FF (47359) */ - 3343, /* B900 (47360) */ - 3343, /* B901 (47361) */ - 3343, /* B902 (47362) */ - 3343, /* B903 (47363) */ - 3343, /* B904 (47364) */ - 3343, /* B905 (47365) */ - 3343, /* B906 (47366) */ - 3343, /* B907 (47367) */ - 3343, /* B908 (47368) */ - 3343, /* B909 (47369) */ - 3343, /* B90A (47370) */ - 3343, /* B90B (47371) */ - 3343, /* B90C (47372) */ - 3343, /* B90D (47373) */ - 3343, /* B90E (47374) */ - 3343, /* B90F (47375) */ - 3343, /* B910 (47376) */ - 3343, /* B911 (47377) */ - 3343, /* B912 (47378) */ - 3343, /* B913 (47379) */ - 3343, /* B914 (47380) */ - 3343, /* B915 (47381) */ - 3343, /* B916 (47382) */ - 3343, /* B917 (47383) */ - 3343, /* B918 (47384) */ - 3343, /* B919 (47385) */ - 3343, /* B91A (47386) */ - 3343, /* B91B (47387) */ - 3343, /* B91C (47388) */ - 3343, /* B91D (47389) */ - 3343, /* B91E (47390) */ - 3343, /* B91F (47391) */ - 3343, /* B920 (47392) */ - 3343, /* B921 (47393) */ - 3343, /* B922 (47394) */ - 3343, /* B923 (47395) */ - 3343, /* B924 (47396) */ - 3343, /* B925 (47397) */ - 3343, /* B926 (47398) */ - 3343, /* B927 (47399) */ - 3343, /* B928 (47400) */ - 3343, /* B929 (47401) */ - 3343, /* B92A (47402) */ - 3343, /* B92B (47403) */ - 3343, /* B92C (47404) */ - 3343, /* B92D (47405) */ - 3343, /* B92E (47406) */ - 3343, /* B92F (47407) */ - 3343, /* B930 (47408) */ - 3343, /* B931 (47409) */ - 3343, /* B932 (47410) */ - 3343, /* B933 (47411) */ - 3343, /* B934 (47412) */ - 3343, /* B935 (47413) */ - 3343, /* B936 (47414) */ - 3343, /* B937 (47415) */ - 3343, /* B938 (47416) */ - 3343, /* B939 (47417) */ - 3343, /* B93A (47418) */ - 3343, /* B93B (47419) */ - 3343, /* B93C (47420) */ - 3343, /* B93D (47421) */ - 3343, /* B93E (47422) */ - 3343, /* B93F (47423) */ - 3343, /* B940 (47424) */ - 3343, /* B941 (47425) */ - 3343, /* B942 (47426) */ - 3343, /* B943 (47427) */ - 3343, /* B944 (47428) */ - 3343, /* B945 (47429) */ - 3343, /* B946 (47430) */ - 3343, /* B947 (47431) */ - 3343, /* B948 (47432) */ - 3343, /* B949 (47433) */ - 3343, /* B94A (47434) */ - 3343, /* B94B (47435) */ - 3343, /* B94C (47436) */ - 3343, /* B94D (47437) */ - 3343, /* B94E (47438) */ - 3343, /* B94F (47439) */ - 3343, /* B950 (47440) */ - 3343, /* B951 (47441) */ - 3343, /* B952 (47442) */ - 3343, /* B953 (47443) */ - 3343, /* B954 (47444) */ - 3343, /* B955 (47445) */ - 3343, /* B956 (47446) */ - 3343, /* B957 (47447) */ - 3343, /* B958 (47448) */ - 3343, /* B959 (47449) */ - 3343, /* B95A (47450) */ - 3343, /* B95B (47451) */ - 3343, /* B95C (47452) */ - 3343, /* B95D (47453) */ - 3343, /* B95E (47454) */ - 3343, /* B95F (47455) */ - 3343, /* B960 (47456) */ - 3343, /* B961 (47457) */ - 3343, /* B962 (47458) */ - 3343, /* B963 (47459) */ - 3343, /* B964 (47460) */ - 3343, /* B965 (47461) */ - 3343, /* B966 (47462) */ - 3343, /* B967 (47463) */ - 3343, /* B968 (47464) */ - 3343, /* B969 (47465) */ - 3343, /* B96A (47466) */ - 3343, /* B96B (47467) */ - 3343, /* B96C (47468) */ - 3343, /* B96D (47469) */ - 3343, /* B96E (47470) */ - 3343, /* B96F (47471) */ - 3343, /* B970 (47472) */ - 3343, /* B971 (47473) */ - 3343, /* B972 (47474) */ - 3343, /* B973 (47475) */ - 3343, /* B974 (47476) */ - 3343, /* B975 (47477) */ - 3343, /* B976 (47478) */ - 3343, /* B977 (47479) */ - 3343, /* B978 (47480) */ - 3343, /* B979 (47481) */ - 3343, /* B97A (47482) */ - 3343, /* B97B (47483) */ - 3343, /* B97C (47484) */ - 3343, /* B97D (47485) */ - 3343, /* B97E (47486) */ - 3343, /* B97F (47487) */ - 3343, /* B980 (47488) */ - 3343, /* B981 (47489) */ - 3343, /* B982 (47490) */ - 3343, /* B983 (47491) */ - 3343, /* B984 (47492) */ - 3343, /* B985 (47493) */ - 3343, /* B986 (47494) */ - 3343, /* B987 (47495) */ - 3343, /* B988 (47496) */ - 3343, /* B989 (47497) */ - 3343, /* B98A (47498) */ - 3343, /* B98B (47499) */ - 3343, /* B98C (47500) */ - 3343, /* B98D (47501) */ - 3343, /* B98E (47502) */ - 3343, /* B98F (47503) */ - 3343, /* B990 (47504) */ - 3343, /* B991 (47505) */ - 3343, /* B992 (47506) */ - 3343, /* B993 (47507) */ - 3343, /* B994 (47508) */ - 3343, /* B995 (47509) */ - 3343, /* B996 (47510) */ - 3343, /* B997 (47511) */ - 3343, /* B998 (47512) */ - 3343, /* B999 (47513) */ - 3343, /* B99A (47514) */ - 3343, /* B99B (47515) */ - 3343, /* B99C (47516) */ - 3343, /* B99D (47517) */ - 3343, /* B99E (47518) */ - 3343, /* B99F (47519) */ - 3343, /* B9A0 (47520) */ - 3343, /* B9A1 (47521) */ - 3343, /* B9A2 (47522) */ - 3343, /* B9A3 (47523) */ - 3343, /* B9A4 (47524) */ - 3343, /* B9A5 (47525) */ - 3343, /* B9A6 (47526) */ - 3343, /* B9A7 (47527) */ - 3343, /* B9A8 (47528) */ - 3343, /* B9A9 (47529) */ - 3343, /* B9AA (47530) */ - 3343, /* B9AB (47531) */ - 3343, /* B9AC (47532) */ - 3343, /* B9AD (47533) */ - 3343, /* B9AE (47534) */ - 3343, /* B9AF (47535) */ - 3343, /* B9B0 (47536) */ - 3343, /* B9B1 (47537) */ - 3343, /* B9B2 (47538) */ - 3343, /* B9B3 (47539) */ - 3343, /* B9B4 (47540) */ - 3343, /* B9B5 (47541) */ - 3343, /* B9B6 (47542) */ - 3343, /* B9B7 (47543) */ - 3343, /* B9B8 (47544) */ - 3343, /* B9B9 (47545) */ - 3343, /* B9BA (47546) */ - 3343, /* B9BB (47547) */ - 3343, /* B9BC (47548) */ - 3343, /* B9BD (47549) */ - 3343, /* B9BE (47550) */ - 3343, /* B9BF (47551) */ - 3343, /* B9C0 (47552) */ - 3343, /* B9C1 (47553) */ - 3343, /* B9C2 (47554) */ - 3343, /* B9C3 (47555) */ - 3343, /* B9C4 (47556) */ - 3343, /* B9C5 (47557) */ - 3343, /* B9C6 (47558) */ - 3343, /* B9C7 (47559) */ - 3343, /* B9C8 (47560) */ - 3343, /* B9C9 (47561) */ - 3343, /* B9CA (47562) */ - 3343, /* B9CB (47563) */ - 3343, /* B9CC (47564) */ - 3343, /* B9CD (47565) */ - 3343, /* B9CE (47566) */ - 3343, /* B9CF (47567) */ - 3343, /* B9D0 (47568) */ - 3343, /* B9D1 (47569) */ - 3343, /* B9D2 (47570) */ - 3343, /* B9D3 (47571) */ - 3343, /* B9D4 (47572) */ - 3343, /* B9D5 (47573) */ - 3343, /* B9D6 (47574) */ - 3343, /* B9D7 (47575) */ - 3343, /* B9D8 (47576) */ - 3343, /* B9D9 (47577) */ - 3343, /* B9DA (47578) */ - 3343, /* B9DB (47579) */ - 3343, /* B9DC (47580) */ - 3343, /* B9DD (47581) */ - 3343, /* B9DE (47582) */ - 3343, /* B9DF (47583) */ - 3343, /* B9E0 (47584) */ - 3343, /* B9E1 (47585) */ - 3343, /* B9E2 (47586) */ - 3343, /* B9E3 (47587) */ - 3343, /* B9E4 (47588) */ - 3343, /* B9E5 (47589) */ - 3343, /* B9E6 (47590) */ - 3343, /* B9E7 (47591) */ - 3343, /* B9E8 (47592) */ - 3343, /* B9E9 (47593) */ - 3343, /* B9EA (47594) */ - 3343, /* B9EB (47595) */ - 3343, /* B9EC (47596) */ - 3343, /* B9ED (47597) */ - 3343, /* B9EE (47598) */ - 3343, /* B9EF (47599) */ - 3343, /* B9F0 (47600) */ - 3343, /* B9F1 (47601) */ - 3343, /* B9F2 (47602) */ - 3343, /* B9F3 (47603) */ - 3343, /* B9F4 (47604) */ - 3343, /* B9F5 (47605) */ - 3343, /* B9F6 (47606) */ - 3343, /* B9F7 (47607) */ - 3343, /* B9F8 (47608) */ - 3343, /* B9F9 (47609) */ - 3343, /* B9FA (47610) */ - 3343, /* B9FB (47611) */ - 3343, /* B9FC (47612) */ - 3343, /* B9FD (47613) */ - 3343, /* B9FE (47614) */ - 3343, /* B9FF (47615) */ - 3343, /* BA00 (47616) */ - 3343, /* BA01 (47617) */ - 3343, /* BA02 (47618) */ - 3343, /* BA03 (47619) */ - 3343, /* BA04 (47620) */ - 3343, /* BA05 (47621) */ - 3343, /* BA06 (47622) */ - 3343, /* BA07 (47623) */ - 3343, /* BA08 (47624) */ - 3343, /* BA09 (47625) */ - 3343, /* BA0A (47626) */ - 3343, /* BA0B (47627) */ - 3343, /* BA0C (47628) */ - 3343, /* BA0D (47629) */ - 3343, /* BA0E (47630) */ - 3343, /* BA0F (47631) */ - 3343, /* BA10 (47632) */ - 3343, /* BA11 (47633) */ - 3343, /* BA12 (47634) */ - 3343, /* BA13 (47635) */ - 3343, /* BA14 (47636) */ - 3343, /* BA15 (47637) */ - 3343, /* BA16 (47638) */ - 3343, /* BA17 (47639) */ - 3343, /* BA18 (47640) */ - 3343, /* BA19 (47641) */ - 3343, /* BA1A (47642) */ - 3343, /* BA1B (47643) */ - 3343, /* BA1C (47644) */ - 3343, /* BA1D (47645) */ - 3343, /* BA1E (47646) */ - 3343, /* BA1F (47647) */ - 3343, /* BA20 (47648) */ - 3343, /* BA21 (47649) */ - 3343, /* BA22 (47650) */ - 3343, /* BA23 (47651) */ - 3343, /* BA24 (47652) */ - 3343, /* BA25 (47653) */ - 3343, /* BA26 (47654) */ - 3343, /* BA27 (47655) */ - 3343, /* BA28 (47656) */ - 3343, /* BA29 (47657) */ - 3343, /* BA2A (47658) */ - 3343, /* BA2B (47659) */ - 3343, /* BA2C (47660) */ - 3343, /* BA2D (47661) */ - 3343, /* BA2E (47662) */ - 3343, /* BA2F (47663) */ - 3343, /* BA30 (47664) */ - 3343, /* BA31 (47665) */ - 3343, /* BA32 (47666) */ - 3343, /* BA33 (47667) */ - 3343, /* BA34 (47668) */ - 3343, /* BA35 (47669) */ - 3343, /* BA36 (47670) */ - 3343, /* BA37 (47671) */ - 3343, /* BA38 (47672) */ - 3343, /* BA39 (47673) */ - 3343, /* BA3A (47674) */ - 3343, /* BA3B (47675) */ - 3343, /* BA3C (47676) */ - 3343, /* BA3D (47677) */ - 3343, /* BA3E (47678) */ - 3343, /* BA3F (47679) */ - 3343, /* BA40 (47680) */ - 3343, /* BA41 (47681) */ - 3343, /* BA42 (47682) */ - 3343, /* BA43 (47683) */ - 3343, /* BA44 (47684) */ - 3343, /* BA45 (47685) */ - 3343, /* BA46 (47686) */ - 3343, /* BA47 (47687) */ - 3343, /* BA48 (47688) */ - 3343, /* BA49 (47689) */ - 3343, /* BA4A (47690) */ - 3343, /* BA4B (47691) */ - 3343, /* BA4C (47692) */ - 3343, /* BA4D (47693) */ - 3343, /* BA4E (47694) */ - 3343, /* BA4F (47695) */ - 3343, /* BA50 (47696) */ - 3343, /* BA51 (47697) */ - 3343, /* BA52 (47698) */ - 3343, /* BA53 (47699) */ - 3343, /* BA54 (47700) */ - 3343, /* BA55 (47701) */ - 3343, /* BA56 (47702) */ - 3343, /* BA57 (47703) */ - 3343, /* BA58 (47704) */ - 3343, /* BA59 (47705) */ - 3343, /* BA5A (47706) */ - 3343, /* BA5B (47707) */ - 3343, /* BA5C (47708) */ - 3343, /* BA5D (47709) */ - 3343, /* BA5E (47710) */ - 3343, /* BA5F (47711) */ - 3343, /* BA60 (47712) */ - 3343, /* BA61 (47713) */ - 3343, /* BA62 (47714) */ - 3343, /* BA63 (47715) */ - 3343, /* BA64 (47716) */ - 3343, /* BA65 (47717) */ - 3343, /* BA66 (47718) */ - 3343, /* BA67 (47719) */ - 3343, /* BA68 (47720) */ - 3343, /* BA69 (47721) */ - 3343, /* BA6A (47722) */ - 3343, /* BA6B (47723) */ - 3343, /* BA6C (47724) */ - 3343, /* BA6D (47725) */ - 3343, /* BA6E (47726) */ - 3343, /* BA6F (47727) */ - 3343, /* BA70 (47728) */ - 3343, /* BA71 (47729) */ - 3343, /* BA72 (47730) */ - 3343, /* BA73 (47731) */ - 3343, /* BA74 (47732) */ - 3343, /* BA75 (47733) */ - 3343, /* BA76 (47734) */ - 3343, /* BA77 (47735) */ - 3343, /* BA78 (47736) */ - 3343, /* BA79 (47737) */ - 3343, /* BA7A (47738) */ - 3343, /* BA7B (47739) */ - 3343, /* BA7C (47740) */ - 3343, /* BA7D (47741) */ - 3343, /* BA7E (47742) */ - 3343, /* BA7F (47743) */ - 3343, /* BA80 (47744) */ - 3343, /* BA81 (47745) */ - 3343, /* BA82 (47746) */ - 3343, /* BA83 (47747) */ - 3343, /* BA84 (47748) */ - 3343, /* BA85 (47749) */ - 3343, /* BA86 (47750) */ - 3343, /* BA87 (47751) */ - 3343, /* BA88 (47752) */ - 3343, /* BA89 (47753) */ - 3343, /* BA8A (47754) */ - 3343, /* BA8B (47755) */ - 3343, /* BA8C (47756) */ - 3343, /* BA8D (47757) */ - 3343, /* BA8E (47758) */ - 3343, /* BA8F (47759) */ - 3343, /* BA90 (47760) */ - 3343, /* BA91 (47761) */ - 3343, /* BA92 (47762) */ - 3343, /* BA93 (47763) */ - 3343, /* BA94 (47764) */ - 3343, /* BA95 (47765) */ - 3343, /* BA96 (47766) */ - 3343, /* BA97 (47767) */ - 3343, /* BA98 (47768) */ - 3343, /* BA99 (47769) */ - 3343, /* BA9A (47770) */ - 3343, /* BA9B (47771) */ - 3343, /* BA9C (47772) */ - 3343, /* BA9D (47773) */ - 3343, /* BA9E (47774) */ - 3343, /* BA9F (47775) */ - 3343, /* BAA0 (47776) */ - 3343, /* BAA1 (47777) */ - 3343, /* BAA2 (47778) */ - 3343, /* BAA3 (47779) */ - 3343, /* BAA4 (47780) */ - 3343, /* BAA5 (47781) */ - 3343, /* BAA6 (47782) */ - 3343, /* BAA7 (47783) */ - 3343, /* BAA8 (47784) */ - 3343, /* BAA9 (47785) */ - 3343, /* BAAA (47786) */ - 3343, /* BAAB (47787) */ - 3343, /* BAAC (47788) */ - 3343, /* BAAD (47789) */ - 3343, /* BAAE (47790) */ - 3343, /* BAAF (47791) */ - 3343, /* BAB0 (47792) */ - 3343, /* BAB1 (47793) */ - 3343, /* BAB2 (47794) */ - 3343, /* BAB3 (47795) */ - 3343, /* BAB4 (47796) */ - 3343, /* BAB5 (47797) */ - 3343, /* BAB6 (47798) */ - 3343, /* BAB7 (47799) */ - 3343, /* BAB8 (47800) */ - 3343, /* BAB9 (47801) */ - 3343, /* BABA (47802) */ - 3343, /* BABB (47803) */ - 3343, /* BABC (47804) */ - 3343, /* BABD (47805) */ - 3343, /* BABE (47806) */ - 3343, /* BABF (47807) */ - 3343, /* BAC0 (47808) */ - 3343, /* BAC1 (47809) */ - 3343, /* BAC2 (47810) */ - 3343, /* BAC3 (47811) */ - 3343, /* BAC4 (47812) */ - 3343, /* BAC5 (47813) */ - 3343, /* BAC6 (47814) */ - 3343, /* BAC7 (47815) */ - 3343, /* BAC8 (47816) */ - 3343, /* BAC9 (47817) */ - 3343, /* BACA (47818) */ - 3343, /* BACB (47819) */ - 3343, /* BACC (47820) */ - 3343, /* BACD (47821) */ - 3343, /* BACE (47822) */ - 3343, /* BACF (47823) */ - 3343, /* BAD0 (47824) */ - 3343, /* BAD1 (47825) */ - 3343, /* BAD2 (47826) */ - 3343, /* BAD3 (47827) */ - 3343, /* BAD4 (47828) */ - 3343, /* BAD5 (47829) */ - 3343, /* BAD6 (47830) */ - 3343, /* BAD7 (47831) */ - 3343, /* BAD8 (47832) */ - 3343, /* BAD9 (47833) */ - 3343, /* BADA (47834) */ - 3343, /* BADB (47835) */ - 3343, /* BADC (47836) */ - 3343, /* BADD (47837) */ - 3343, /* BADE (47838) */ - 3343, /* BADF (47839) */ - 3343, /* BAE0 (47840) */ - 3343, /* BAE1 (47841) */ - 3343, /* BAE2 (47842) */ - 3343, /* BAE3 (47843) */ - 3343, /* BAE4 (47844) */ - 3343, /* BAE5 (47845) */ - 3343, /* BAE6 (47846) */ - 3343, /* BAE7 (47847) */ - 3343, /* BAE8 (47848) */ - 3343, /* BAE9 (47849) */ - 3343, /* BAEA (47850) */ - 3343, /* BAEB (47851) */ - 3343, /* BAEC (47852) */ - 3343, /* BAED (47853) */ - 3343, /* BAEE (47854) */ - 3343, /* BAEF (47855) */ - 3343, /* BAF0 (47856) */ - 3343, /* BAF1 (47857) */ - 3343, /* BAF2 (47858) */ - 3343, /* BAF3 (47859) */ - 3343, /* BAF4 (47860) */ - 3343, /* BAF5 (47861) */ - 3343, /* BAF6 (47862) */ - 3343, /* BAF7 (47863) */ - 3343, /* BAF8 (47864) */ - 3343, /* BAF9 (47865) */ - 3343, /* BAFA (47866) */ - 3343, /* BAFB (47867) */ - 3343, /* BAFC (47868) */ - 3343, /* BAFD (47869) */ - 3343, /* BAFE (47870) */ - 3343, /* BAFF (47871) */ - 3343, /* BB00 (47872) */ - 3343, /* BB01 (47873) */ - 3343, /* BB02 (47874) */ - 3343, /* BB03 (47875) */ - 3343, /* BB04 (47876) */ - 3343, /* BB05 (47877) */ - 3343, /* BB06 (47878) */ - 3343, /* BB07 (47879) */ - 3343, /* BB08 (47880) */ - 3343, /* BB09 (47881) */ - 3343, /* BB0A (47882) */ - 3343, /* BB0B (47883) */ - 3343, /* BB0C (47884) */ - 3343, /* BB0D (47885) */ - 3343, /* BB0E (47886) */ - 3343, /* BB0F (47887) */ - 3343, /* BB10 (47888) */ - 3343, /* BB11 (47889) */ - 3343, /* BB12 (47890) */ - 3343, /* BB13 (47891) */ - 3343, /* BB14 (47892) */ - 3343, /* BB15 (47893) */ - 3343, /* BB16 (47894) */ - 3343, /* BB17 (47895) */ - 3343, /* BB18 (47896) */ - 3343, /* BB19 (47897) */ - 3343, /* BB1A (47898) */ - 3343, /* BB1B (47899) */ - 3343, /* BB1C (47900) */ - 3343, /* BB1D (47901) */ - 3343, /* BB1E (47902) */ - 3343, /* BB1F (47903) */ - 3343, /* BB20 (47904) */ - 3343, /* BB21 (47905) */ - 3343, /* BB22 (47906) */ - 3343, /* BB23 (47907) */ - 3343, /* BB24 (47908) */ - 3343, /* BB25 (47909) */ - 3343, /* BB26 (47910) */ - 3343, /* BB27 (47911) */ - 3343, /* BB28 (47912) */ - 3343, /* BB29 (47913) */ - 3343, /* BB2A (47914) */ - 3343, /* BB2B (47915) */ - 3343, /* BB2C (47916) */ - 3343, /* BB2D (47917) */ - 3343, /* BB2E (47918) */ - 3343, /* BB2F (47919) */ - 3343, /* BB30 (47920) */ - 3343, /* BB31 (47921) */ - 3343, /* BB32 (47922) */ - 3343, /* BB33 (47923) */ - 3343, /* BB34 (47924) */ - 3343, /* BB35 (47925) */ - 3343, /* BB36 (47926) */ - 3343, /* BB37 (47927) */ - 3343, /* BB38 (47928) */ - 3343, /* BB39 (47929) */ - 3343, /* BB3A (47930) */ - 3343, /* BB3B (47931) */ - 3343, /* BB3C (47932) */ - 3343, /* BB3D (47933) */ - 3343, /* BB3E (47934) */ - 3343, /* BB3F (47935) */ - 3343, /* BB40 (47936) */ - 3343, /* BB41 (47937) */ - 3343, /* BB42 (47938) */ - 3343, /* BB43 (47939) */ - 3343, /* BB44 (47940) */ - 3343, /* BB45 (47941) */ - 3343, /* BB46 (47942) */ - 3343, /* BB47 (47943) */ - 3343, /* BB48 (47944) */ - 3343, /* BB49 (47945) */ - 3343, /* BB4A (47946) */ - 3343, /* BB4B (47947) */ - 3343, /* BB4C (47948) */ - 3343, /* BB4D (47949) */ - 3343, /* BB4E (47950) */ - 3343, /* BB4F (47951) */ - 3343, /* BB50 (47952) */ - 3343, /* BB51 (47953) */ - 3343, /* BB52 (47954) */ - 3343, /* BB53 (47955) */ - 3343, /* BB54 (47956) */ - 3343, /* BB55 (47957) */ - 3343, /* BB56 (47958) */ - 3343, /* BB57 (47959) */ - 3343, /* BB58 (47960) */ - 3343, /* BB59 (47961) */ - 3343, /* BB5A (47962) */ - 3343, /* BB5B (47963) */ - 3343, /* BB5C (47964) */ - 3343, /* BB5D (47965) */ - 3343, /* BB5E (47966) */ - 3343, /* BB5F (47967) */ - 3343, /* BB60 (47968) */ - 3343, /* BB61 (47969) */ - 3343, /* BB62 (47970) */ - 3343, /* BB63 (47971) */ - 3343, /* BB64 (47972) */ - 3343, /* BB65 (47973) */ - 3343, /* BB66 (47974) */ - 3343, /* BB67 (47975) */ - 3343, /* BB68 (47976) */ - 3343, /* BB69 (47977) */ - 3343, /* BB6A (47978) */ - 3343, /* BB6B (47979) */ - 3343, /* BB6C (47980) */ - 3343, /* BB6D (47981) */ - 3343, /* BB6E (47982) */ - 3343, /* BB6F (47983) */ - 3343, /* BB70 (47984) */ - 3343, /* BB71 (47985) */ - 3343, /* BB72 (47986) */ - 3343, /* BB73 (47987) */ - 3343, /* BB74 (47988) */ - 3343, /* BB75 (47989) */ - 3343, /* BB76 (47990) */ - 3343, /* BB77 (47991) */ - 3343, /* BB78 (47992) */ - 3343, /* BB79 (47993) */ - 3343, /* BB7A (47994) */ - 3343, /* BB7B (47995) */ - 3343, /* BB7C (47996) */ - 3343, /* BB7D (47997) */ - 3343, /* BB7E (47998) */ - 3343, /* BB7F (47999) */ - 3343, /* BB80 (48000) */ - 3343, /* BB81 (48001) */ - 3343, /* BB82 (48002) */ - 3343, /* BB83 (48003) */ - 3343, /* BB84 (48004) */ - 3343, /* BB85 (48005) */ - 3343, /* BB86 (48006) */ - 3343, /* BB87 (48007) */ - 3343, /* BB88 (48008) */ - 3343, /* BB89 (48009) */ - 3343, /* BB8A (48010) */ - 3343, /* BB8B (48011) */ - 3343, /* BB8C (48012) */ - 3343, /* BB8D (48013) */ - 3343, /* BB8E (48014) */ - 3343, /* BB8F (48015) */ - 3343, /* BB90 (48016) */ - 3343, /* BB91 (48017) */ - 3343, /* BB92 (48018) */ - 3343, /* BB93 (48019) */ - 3343, /* BB94 (48020) */ - 3343, /* BB95 (48021) */ - 3343, /* BB96 (48022) */ - 3343, /* BB97 (48023) */ - 3343, /* BB98 (48024) */ - 3343, /* BB99 (48025) */ - 3343, /* BB9A (48026) */ - 3343, /* BB9B (48027) */ - 3343, /* BB9C (48028) */ - 3343, /* BB9D (48029) */ - 3343, /* BB9E (48030) */ - 3343, /* BB9F (48031) */ - 3343, /* BBA0 (48032) */ - 3343, /* BBA1 (48033) */ - 3343, /* BBA2 (48034) */ - 3343, /* BBA3 (48035) */ - 3343, /* BBA4 (48036) */ - 3343, /* BBA5 (48037) */ - 3343, /* BBA6 (48038) */ - 3343, /* BBA7 (48039) */ - 3343, /* BBA8 (48040) */ - 3343, /* BBA9 (48041) */ - 3343, /* BBAA (48042) */ - 3343, /* BBAB (48043) */ - 3343, /* BBAC (48044) */ - 3343, /* BBAD (48045) */ - 3343, /* BBAE (48046) */ - 3343, /* BBAF (48047) */ - 3343, /* BBB0 (48048) */ - 3343, /* BBB1 (48049) */ - 3343, /* BBB2 (48050) */ - 3343, /* BBB3 (48051) */ - 3343, /* BBB4 (48052) */ - 3343, /* BBB5 (48053) */ - 3343, /* BBB6 (48054) */ - 3343, /* BBB7 (48055) */ - 3343, /* BBB8 (48056) */ - 3343, /* BBB9 (48057) */ - 3343, /* BBBA (48058) */ - 3343, /* BBBB (48059) */ - 3343, /* BBBC (48060) */ - 3343, /* BBBD (48061) */ - 3343, /* BBBE (48062) */ - 3343, /* BBBF (48063) */ - 3343, /* BBC0 (48064) */ - 3343, /* BBC1 (48065) */ - 3343, /* BBC2 (48066) */ - 3343, /* BBC3 (48067) */ - 3343, /* BBC4 (48068) */ - 3343, /* BBC5 (48069) */ - 3343, /* BBC6 (48070) */ - 3343, /* BBC7 (48071) */ - 3343, /* BBC8 (48072) */ - 3343, /* BBC9 (48073) */ - 3343, /* BBCA (48074) */ - 3343, /* BBCB (48075) */ - 3343, /* BBCC (48076) */ - 3343, /* BBCD (48077) */ - 3343, /* BBCE (48078) */ - 3343, /* BBCF (48079) */ - 3343, /* BBD0 (48080) */ - 3343, /* BBD1 (48081) */ - 3343, /* BBD2 (48082) */ - 3343, /* BBD3 (48083) */ - 3343, /* BBD4 (48084) */ - 3343, /* BBD5 (48085) */ - 3343, /* BBD6 (48086) */ - 3343, /* BBD7 (48087) */ - 3343, /* BBD8 (48088) */ - 3343, /* BBD9 (48089) */ - 3343, /* BBDA (48090) */ - 3343, /* BBDB (48091) */ - 3343, /* BBDC (48092) */ - 3343, /* BBDD (48093) */ - 3343, /* BBDE (48094) */ - 3343, /* BBDF (48095) */ - 3343, /* BBE0 (48096) */ - 3343, /* BBE1 (48097) */ - 3343, /* BBE2 (48098) */ - 3343, /* BBE3 (48099) */ - 3343, /* BBE4 (48100) */ - 3343, /* BBE5 (48101) */ - 3343, /* BBE6 (48102) */ - 3343, /* BBE7 (48103) */ - 3343, /* BBE8 (48104) */ - 3343, /* BBE9 (48105) */ - 3343, /* BBEA (48106) */ - 3343, /* BBEB (48107) */ - 3343, /* BBEC (48108) */ - 3343, /* BBED (48109) */ - 3343, /* BBEE (48110) */ - 3343, /* BBEF (48111) */ - 3343, /* BBF0 (48112) */ - 3343, /* BBF1 (48113) */ - 3343, /* BBF2 (48114) */ - 3343, /* BBF3 (48115) */ - 3343, /* BBF4 (48116) */ - 3343, /* BBF5 (48117) */ - 3343, /* BBF6 (48118) */ - 3343, /* BBF7 (48119) */ - 3343, /* BBF8 (48120) */ - 3343, /* BBF9 (48121) */ - 3343, /* BBFA (48122) */ - 3343, /* BBFB (48123) */ - 3343, /* BBFC (48124) */ - 3343, /* BBFD (48125) */ - 3343, /* BBFE (48126) */ - 3343, /* BBFF (48127) */ - 3343, /* BC00 (48128) */ - 3343, /* BC01 (48129) */ - 3343, /* BC02 (48130) */ - 3343, /* BC03 (48131) */ - 3343, /* BC04 (48132) */ - 3343, /* BC05 (48133) */ - 3343, /* BC06 (48134) */ - 3343, /* BC07 (48135) */ - 3343, /* BC08 (48136) */ - 3343, /* BC09 (48137) */ - 3343, /* BC0A (48138) */ - 3343, /* BC0B (48139) */ - 3343, /* BC0C (48140) */ - 3343, /* BC0D (48141) */ - 3343, /* BC0E (48142) */ - 3343, /* BC0F (48143) */ - 3343, /* BC10 (48144) */ - 3343, /* BC11 (48145) */ - 3343, /* BC12 (48146) */ - 3343, /* BC13 (48147) */ - 3343, /* BC14 (48148) */ - 3343, /* BC15 (48149) */ - 3343, /* BC16 (48150) */ - 3343, /* BC17 (48151) */ - 3343, /* BC18 (48152) */ - 3343, /* BC19 (48153) */ - 3343, /* BC1A (48154) */ - 3343, /* BC1B (48155) */ - 3343, /* BC1C (48156) */ - 3343, /* BC1D (48157) */ - 3343, /* BC1E (48158) */ - 3343, /* BC1F (48159) */ - 3343, /* BC20 (48160) */ - 3343, /* BC21 (48161) */ - 3343, /* BC22 (48162) */ - 3343, /* BC23 (48163) */ - 3343, /* BC24 (48164) */ - 3343, /* BC25 (48165) */ - 3343, /* BC26 (48166) */ - 3343, /* BC27 (48167) */ - 3343, /* BC28 (48168) */ - 3343, /* BC29 (48169) */ - 3343, /* BC2A (48170) */ - 3343, /* BC2B (48171) */ - 3343, /* BC2C (48172) */ - 3343, /* BC2D (48173) */ - 3343, /* BC2E (48174) */ - 3343, /* BC2F (48175) */ - 3343, /* BC30 (48176) */ - 3343, /* BC31 (48177) */ - 3343, /* BC32 (48178) */ - 3343, /* BC33 (48179) */ - 3343, /* BC34 (48180) */ - 3343, /* BC35 (48181) */ - 3343, /* BC36 (48182) */ - 3343, /* BC37 (48183) */ - 3343, /* BC38 (48184) */ - 3343, /* BC39 (48185) */ - 3343, /* BC3A (48186) */ - 3343, /* BC3B (48187) */ - 3343, /* BC3C (48188) */ - 3343, /* BC3D (48189) */ - 3343, /* BC3E (48190) */ - 3343, /* BC3F (48191) */ - 3343, /* BC40 (48192) */ - 3343, /* BC41 (48193) */ - 3343, /* BC42 (48194) */ - 3343, /* BC43 (48195) */ - 3343, /* BC44 (48196) */ - 3343, /* BC45 (48197) */ - 3343, /* BC46 (48198) */ - 3343, /* BC47 (48199) */ - 3343, /* BC48 (48200) */ - 3343, /* BC49 (48201) */ - 3343, /* BC4A (48202) */ - 3343, /* BC4B (48203) */ - 3343, /* BC4C (48204) */ - 3343, /* BC4D (48205) */ - 3343, /* BC4E (48206) */ - 3343, /* BC4F (48207) */ - 3343, /* BC50 (48208) */ - 3343, /* BC51 (48209) */ - 3343, /* BC52 (48210) */ - 3343, /* BC53 (48211) */ - 3343, /* BC54 (48212) */ - 3343, /* BC55 (48213) */ - 3343, /* BC56 (48214) */ - 3343, /* BC57 (48215) */ - 3343, /* BC58 (48216) */ - 3343, /* BC59 (48217) */ - 3343, /* BC5A (48218) */ - 3343, /* BC5B (48219) */ - 3343, /* BC5C (48220) */ - 3343, /* BC5D (48221) */ - 3343, /* BC5E (48222) */ - 3343, /* BC5F (48223) */ - 3343, /* BC60 (48224) */ - 3343, /* BC61 (48225) */ - 3343, /* BC62 (48226) */ - 3343, /* BC63 (48227) */ - 3343, /* BC64 (48228) */ - 3343, /* BC65 (48229) */ - 3343, /* BC66 (48230) */ - 3343, /* BC67 (48231) */ - 3343, /* BC68 (48232) */ - 3343, /* BC69 (48233) */ - 3343, /* BC6A (48234) */ - 3343, /* BC6B (48235) */ - 3343, /* BC6C (48236) */ - 3343, /* BC6D (48237) */ - 3343, /* BC6E (48238) */ - 3343, /* BC6F (48239) */ - 3343, /* BC70 (48240) */ - 3343, /* BC71 (48241) */ - 3343, /* BC72 (48242) */ - 3343, /* BC73 (48243) */ - 3343, /* BC74 (48244) */ - 3343, /* BC75 (48245) */ - 3343, /* BC76 (48246) */ - 3343, /* BC77 (48247) */ - 3343, /* BC78 (48248) */ - 3343, /* BC79 (48249) */ - 3343, /* BC7A (48250) */ - 3343, /* BC7B (48251) */ - 3343, /* BC7C (48252) */ - 3343, /* BC7D (48253) */ - 3343, /* BC7E (48254) */ - 3343, /* BC7F (48255) */ - 3343, /* BC80 (48256) */ - 3343, /* BC81 (48257) */ - 3343, /* BC82 (48258) */ - 3343, /* BC83 (48259) */ - 3343, /* BC84 (48260) */ - 3343, /* BC85 (48261) */ - 3343, /* BC86 (48262) */ - 3343, /* BC87 (48263) */ - 3343, /* BC88 (48264) */ - 3343, /* BC89 (48265) */ - 3343, /* BC8A (48266) */ - 3343, /* BC8B (48267) */ - 3343, /* BC8C (48268) */ - 3343, /* BC8D (48269) */ - 3343, /* BC8E (48270) */ - 3343, /* BC8F (48271) */ - 3343, /* BC90 (48272) */ - 3343, /* BC91 (48273) */ - 3343, /* BC92 (48274) */ - 3343, /* BC93 (48275) */ - 3343, /* BC94 (48276) */ - 3343, /* BC95 (48277) */ - 3343, /* BC96 (48278) */ - 3343, /* BC97 (48279) */ - 3343, /* BC98 (48280) */ - 3343, /* BC99 (48281) */ - 3343, /* BC9A (48282) */ - 3343, /* BC9B (48283) */ - 3343, /* BC9C (48284) */ - 3343, /* BC9D (48285) */ - 3343, /* BC9E (48286) */ - 3343, /* BC9F (48287) */ - 3343, /* BCA0 (48288) */ - 3343, /* BCA1 (48289) */ - 3343, /* BCA2 (48290) */ - 3343, /* BCA3 (48291) */ - 3343, /* BCA4 (48292) */ - 3343, /* BCA5 (48293) */ - 3343, /* BCA6 (48294) */ - 3343, /* BCA7 (48295) */ - 3343, /* BCA8 (48296) */ - 3343, /* BCA9 (48297) */ - 3343, /* BCAA (48298) */ - 3343, /* BCAB (48299) */ - 3343, /* BCAC (48300) */ - 3343, /* BCAD (48301) */ - 3343, /* BCAE (48302) */ - 3343, /* BCAF (48303) */ - 3343, /* BCB0 (48304) */ - 3343, /* BCB1 (48305) */ - 3343, /* BCB2 (48306) */ - 3343, /* BCB3 (48307) */ - 3343, /* BCB4 (48308) */ - 3343, /* BCB5 (48309) */ - 3343, /* BCB6 (48310) */ - 3343, /* BCB7 (48311) */ - 3343, /* BCB8 (48312) */ - 3343, /* BCB9 (48313) */ - 3343, /* BCBA (48314) */ - 3343, /* BCBB (48315) */ - 3343, /* BCBC (48316) */ - 3343, /* BCBD (48317) */ - 3343, /* BCBE (48318) */ - 3343, /* BCBF (48319) */ - 3343, /* BCC0 (48320) */ - 3343, /* BCC1 (48321) */ - 3343, /* BCC2 (48322) */ - 3343, /* BCC3 (48323) */ - 3343, /* BCC4 (48324) */ - 3343, /* BCC5 (48325) */ - 3343, /* BCC6 (48326) */ - 3343, /* BCC7 (48327) */ - 3343, /* BCC8 (48328) */ - 3343, /* BCC9 (48329) */ - 3343, /* BCCA (48330) */ - 3343, /* BCCB (48331) */ - 3343, /* BCCC (48332) */ - 3343, /* BCCD (48333) */ - 3343, /* BCCE (48334) */ - 3343, /* BCCF (48335) */ - 3343, /* BCD0 (48336) */ - 3343, /* BCD1 (48337) */ - 3343, /* BCD2 (48338) */ - 3343, /* BCD3 (48339) */ - 3343, /* BCD4 (48340) */ - 3343, /* BCD5 (48341) */ - 3343, /* BCD6 (48342) */ - 3343, /* BCD7 (48343) */ - 3343, /* BCD8 (48344) */ - 3343, /* BCD9 (48345) */ - 3343, /* BCDA (48346) */ - 3343, /* BCDB (48347) */ - 3343, /* BCDC (48348) */ - 3343, /* BCDD (48349) */ - 3343, /* BCDE (48350) */ - 3343, /* BCDF (48351) */ - 3343, /* BCE0 (48352) */ - 3343, /* BCE1 (48353) */ - 3343, /* BCE2 (48354) */ - 3343, /* BCE3 (48355) */ - 3343, /* BCE4 (48356) */ - 3343, /* BCE5 (48357) */ - 3343, /* BCE6 (48358) */ - 3343, /* BCE7 (48359) */ - 3343, /* BCE8 (48360) */ - 3343, /* BCE9 (48361) */ - 3343, /* BCEA (48362) */ - 3343, /* BCEB (48363) */ - 3343, /* BCEC (48364) */ - 3343, /* BCED (48365) */ - 3343, /* BCEE (48366) */ - 3343, /* BCEF (48367) */ - 3343, /* BCF0 (48368) */ - 3343, /* BCF1 (48369) */ - 3343, /* BCF2 (48370) */ - 3343, /* BCF3 (48371) */ - 3343, /* BCF4 (48372) */ - 3343, /* BCF5 (48373) */ - 3343, /* BCF6 (48374) */ - 3343, /* BCF7 (48375) */ - 3343, /* BCF8 (48376) */ - 3343, /* BCF9 (48377) */ - 3343, /* BCFA (48378) */ - 3343, /* BCFB (48379) */ - 3343, /* BCFC (48380) */ - 3343, /* BCFD (48381) */ - 3343, /* BCFE (48382) */ - 3343, /* BCFF (48383) */ - 3343, /* BD00 (48384) */ - 3343, /* BD01 (48385) */ - 3343, /* BD02 (48386) */ - 3343, /* BD03 (48387) */ - 3343, /* BD04 (48388) */ - 3343, /* BD05 (48389) */ - 3343, /* BD06 (48390) */ - 3343, /* BD07 (48391) */ - 3343, /* BD08 (48392) */ - 3343, /* BD09 (48393) */ - 3343, /* BD0A (48394) */ - 3343, /* BD0B (48395) */ - 3343, /* BD0C (48396) */ - 3343, /* BD0D (48397) */ - 3343, /* BD0E (48398) */ - 3343, /* BD0F (48399) */ - 3343, /* BD10 (48400) */ - 3343, /* BD11 (48401) */ - 3343, /* BD12 (48402) */ - 3343, /* BD13 (48403) */ - 3343, /* BD14 (48404) */ - 3343, /* BD15 (48405) */ - 3343, /* BD16 (48406) */ - 3343, /* BD17 (48407) */ - 3343, /* BD18 (48408) */ - 3343, /* BD19 (48409) */ - 3343, /* BD1A (48410) */ - 3343, /* BD1B (48411) */ - 3343, /* BD1C (48412) */ - 3343, /* BD1D (48413) */ - 3343, /* BD1E (48414) */ - 3343, /* BD1F (48415) */ - 3343, /* BD20 (48416) */ - 3343, /* BD21 (48417) */ - 3343, /* BD22 (48418) */ - 3343, /* BD23 (48419) */ - 3343, /* BD24 (48420) */ - 3343, /* BD25 (48421) */ - 3343, /* BD26 (48422) */ - 3343, /* BD27 (48423) */ - 3343, /* BD28 (48424) */ - 3343, /* BD29 (48425) */ - 3343, /* BD2A (48426) */ - 3343, /* BD2B (48427) */ - 3343, /* BD2C (48428) */ - 3343, /* BD2D (48429) */ - 3343, /* BD2E (48430) */ - 3343, /* BD2F (48431) */ - 3343, /* BD30 (48432) */ - 3343, /* BD31 (48433) */ - 3343, /* BD32 (48434) */ - 3343, /* BD33 (48435) */ - 3343, /* BD34 (48436) */ - 3343, /* BD35 (48437) */ - 3343, /* BD36 (48438) */ - 3343, /* BD37 (48439) */ - 3343, /* BD38 (48440) */ - 3343, /* BD39 (48441) */ - 3343, /* BD3A (48442) */ - 3343, /* BD3B (48443) */ - 3343, /* BD3C (48444) */ - 3343, /* BD3D (48445) */ - 3343, /* BD3E (48446) */ - 3343, /* BD3F (48447) */ - 3343, /* BD40 (48448) */ - 3343, /* BD41 (48449) */ - 3343, /* BD42 (48450) */ - 3343, /* BD43 (48451) */ - 3343, /* BD44 (48452) */ - 3343, /* BD45 (48453) */ - 3343, /* BD46 (48454) */ - 3343, /* BD47 (48455) */ - 3343, /* BD48 (48456) */ - 3343, /* BD49 (48457) */ - 3343, /* BD4A (48458) */ - 3343, /* BD4B (48459) */ - 3343, /* BD4C (48460) */ - 3343, /* BD4D (48461) */ - 3343, /* BD4E (48462) */ - 3343, /* BD4F (48463) */ - 3343, /* BD50 (48464) */ - 3343, /* BD51 (48465) */ - 3343, /* BD52 (48466) */ - 3343, /* BD53 (48467) */ - 3343, /* BD54 (48468) */ - 3343, /* BD55 (48469) */ - 3343, /* BD56 (48470) */ - 3343, /* BD57 (48471) */ - 3343, /* BD58 (48472) */ - 3343, /* BD59 (48473) */ - 3343, /* BD5A (48474) */ - 3343, /* BD5B (48475) */ - 3343, /* BD5C (48476) */ - 3343, /* BD5D (48477) */ - 3343, /* BD5E (48478) */ - 3343, /* BD5F (48479) */ - 3343, /* BD60 (48480) */ - 3343, /* BD61 (48481) */ - 3343, /* BD62 (48482) */ - 3343, /* BD63 (48483) */ - 3343, /* BD64 (48484) */ - 3343, /* BD65 (48485) */ - 3343, /* BD66 (48486) */ - 3343, /* BD67 (48487) */ - 3343, /* BD68 (48488) */ - 3343, /* BD69 (48489) */ - 3343, /* BD6A (48490) */ - 3343, /* BD6B (48491) */ - 3343, /* BD6C (48492) */ - 3343, /* BD6D (48493) */ - 3343, /* BD6E (48494) */ - 3343, /* BD6F (48495) */ - 3343, /* BD70 (48496) */ - 3343, /* BD71 (48497) */ - 3343, /* BD72 (48498) */ - 3343, /* BD73 (48499) */ - 3343, /* BD74 (48500) */ - 3343, /* BD75 (48501) */ - 3343, /* BD76 (48502) */ - 3343, /* BD77 (48503) */ - 3343, /* BD78 (48504) */ - 3343, /* BD79 (48505) */ - 3343, /* BD7A (48506) */ - 3343, /* BD7B (48507) */ - 3343, /* BD7C (48508) */ - 3343, /* BD7D (48509) */ - 3343, /* BD7E (48510) */ - 3343, /* BD7F (48511) */ - 3343, /* BD80 (48512) */ - 3343, /* BD81 (48513) */ - 3343, /* BD82 (48514) */ - 3343, /* BD83 (48515) */ - 3343, /* BD84 (48516) */ - 3343, /* BD85 (48517) */ - 3343, /* BD86 (48518) */ - 3343, /* BD87 (48519) */ - 3343, /* BD88 (48520) */ - 3343, /* BD89 (48521) */ - 3343, /* BD8A (48522) */ - 3343, /* BD8B (48523) */ - 3343, /* BD8C (48524) */ - 3343, /* BD8D (48525) */ - 3343, /* BD8E (48526) */ - 3343, /* BD8F (48527) */ - 3343, /* BD90 (48528) */ - 3343, /* BD91 (48529) */ - 3343, /* BD92 (48530) */ - 3343, /* BD93 (48531) */ - 3343, /* BD94 (48532) */ - 3343, /* BD95 (48533) */ - 3343, /* BD96 (48534) */ - 3343, /* BD97 (48535) */ - 3343, /* BD98 (48536) */ - 3343, /* BD99 (48537) */ - 3343, /* BD9A (48538) */ - 3343, /* BD9B (48539) */ - 3343, /* BD9C (48540) */ - 3343, /* BD9D (48541) */ - 3343, /* BD9E (48542) */ - 3343, /* BD9F (48543) */ - 3343, /* BDA0 (48544) */ - 3343, /* BDA1 (48545) */ - 3343, /* BDA2 (48546) */ - 3343, /* BDA3 (48547) */ - 3343, /* BDA4 (48548) */ - 3343, /* BDA5 (48549) */ - 3343, /* BDA6 (48550) */ - 3343, /* BDA7 (48551) */ - 3343, /* BDA8 (48552) */ - 3343, /* BDA9 (48553) */ - 3343, /* BDAA (48554) */ - 3343, /* BDAB (48555) */ - 3343, /* BDAC (48556) */ - 3343, /* BDAD (48557) */ - 3343, /* BDAE (48558) */ - 3343, /* BDAF (48559) */ - 3343, /* BDB0 (48560) */ - 3343, /* BDB1 (48561) */ - 3343, /* BDB2 (48562) */ - 3343, /* BDB3 (48563) */ - 3343, /* BDB4 (48564) */ - 3343, /* BDB5 (48565) */ - 3343, /* BDB6 (48566) */ - 3343, /* BDB7 (48567) */ - 3343, /* BDB8 (48568) */ - 3343, /* BDB9 (48569) */ - 3343, /* BDBA (48570) */ - 3343, /* BDBB (48571) */ - 3343, /* BDBC (48572) */ - 3343, /* BDBD (48573) */ - 3343, /* BDBE (48574) */ - 3343, /* BDBF (48575) */ - 3343, /* BDC0 (48576) */ - 3343, /* BDC1 (48577) */ - 3343, /* BDC2 (48578) */ - 3343, /* BDC3 (48579) */ - 3343, /* BDC4 (48580) */ - 3343, /* BDC5 (48581) */ - 3343, /* BDC6 (48582) */ - 3343, /* BDC7 (48583) */ - 3343, /* BDC8 (48584) */ - 3343, /* BDC9 (48585) */ - 3343, /* BDCA (48586) */ - 3343, /* BDCB (48587) */ - 3343, /* BDCC (48588) */ - 3343, /* BDCD (48589) */ - 3343, /* BDCE (48590) */ - 3343, /* BDCF (48591) */ - 3343, /* BDD0 (48592) */ - 3343, /* BDD1 (48593) */ - 3343, /* BDD2 (48594) */ - 3343, /* BDD3 (48595) */ - 3343, /* BDD4 (48596) */ - 3343, /* BDD5 (48597) */ - 3343, /* BDD6 (48598) */ - 3343, /* BDD7 (48599) */ - 3343, /* BDD8 (48600) */ - 3343, /* BDD9 (48601) */ - 3343, /* BDDA (48602) */ - 3343, /* BDDB (48603) */ - 3343, /* BDDC (48604) */ - 3343, /* BDDD (48605) */ - 3343, /* BDDE (48606) */ - 3343, /* BDDF (48607) */ - 3343, /* BDE0 (48608) */ - 3343, /* BDE1 (48609) */ - 3343, /* BDE2 (48610) */ - 3343, /* BDE3 (48611) */ - 3343, /* BDE4 (48612) */ - 3343, /* BDE5 (48613) */ - 3343, /* BDE6 (48614) */ - 3343, /* BDE7 (48615) */ - 3343, /* BDE8 (48616) */ - 3343, /* BDE9 (48617) */ - 3343, /* BDEA (48618) */ - 3343, /* BDEB (48619) */ - 3343, /* BDEC (48620) */ - 3343, /* BDED (48621) */ - 3343, /* BDEE (48622) */ - 3343, /* BDEF (48623) */ - 3343, /* BDF0 (48624) */ - 3343, /* BDF1 (48625) */ - 3343, /* BDF2 (48626) */ - 3343, /* BDF3 (48627) */ - 3343, /* BDF4 (48628) */ - 3343, /* BDF5 (48629) */ - 3343, /* BDF6 (48630) */ - 3343, /* BDF7 (48631) */ - 3343, /* BDF8 (48632) */ - 3343, /* BDF9 (48633) */ - 3343, /* BDFA (48634) */ - 3343, /* BDFB (48635) */ - 3343, /* BDFC (48636) */ - 3343, /* BDFD (48637) */ - 3343, /* BDFE (48638) */ - 3343, /* BDFF (48639) */ - 3343, /* BE00 (48640) */ - 3343, /* BE01 (48641) */ - 3343, /* BE02 (48642) */ - 3343, /* BE03 (48643) */ - 3343, /* BE04 (48644) */ - 3343, /* BE05 (48645) */ - 3343, /* BE06 (48646) */ - 3343, /* BE07 (48647) */ - 3343, /* BE08 (48648) */ - 3343, /* BE09 (48649) */ - 3343, /* BE0A (48650) */ - 3343, /* BE0B (48651) */ - 3343, /* BE0C (48652) */ - 3343, /* BE0D (48653) */ - 3343, /* BE0E (48654) */ - 3343, /* BE0F (48655) */ - 3343, /* BE10 (48656) */ - 3343, /* BE11 (48657) */ - 3343, /* BE12 (48658) */ - 3343, /* BE13 (48659) */ - 3343, /* BE14 (48660) */ - 3343, /* BE15 (48661) */ - 3343, /* BE16 (48662) */ - 3343, /* BE17 (48663) */ - 3343, /* BE18 (48664) */ - 3343, /* BE19 (48665) */ - 3343, /* BE1A (48666) */ - 3343, /* BE1B (48667) */ - 3343, /* BE1C (48668) */ - 3343, /* BE1D (48669) */ - 3343, /* BE1E (48670) */ - 3343, /* BE1F (48671) */ - 3343, /* BE20 (48672) */ - 3343, /* BE21 (48673) */ - 3343, /* BE22 (48674) */ - 3343, /* BE23 (48675) */ - 3343, /* BE24 (48676) */ - 3343, /* BE25 (48677) */ - 3343, /* BE26 (48678) */ - 3343, /* BE27 (48679) */ - 3343, /* BE28 (48680) */ - 3343, /* BE29 (48681) */ - 3343, /* BE2A (48682) */ - 3343, /* BE2B (48683) */ - 3343, /* BE2C (48684) */ - 3343, /* BE2D (48685) */ - 3343, /* BE2E (48686) */ - 3343, /* BE2F (48687) */ - 3343, /* BE30 (48688) */ - 3343, /* BE31 (48689) */ - 3343, /* BE32 (48690) */ - 3343, /* BE33 (48691) */ - 3343, /* BE34 (48692) */ - 3343, /* BE35 (48693) */ - 3343, /* BE36 (48694) */ - 3343, /* BE37 (48695) */ - 3343, /* BE38 (48696) */ - 3343, /* BE39 (48697) */ - 3343, /* BE3A (48698) */ - 3343, /* BE3B (48699) */ - 3343, /* BE3C (48700) */ - 3343, /* BE3D (48701) */ - 3343, /* BE3E (48702) */ - 3343, /* BE3F (48703) */ - 3343, /* BE40 (48704) */ - 3343, /* BE41 (48705) */ - 3343, /* BE42 (48706) */ - 3343, /* BE43 (48707) */ - 3343, /* BE44 (48708) */ - 3343, /* BE45 (48709) */ - 3343, /* BE46 (48710) */ - 3343, /* BE47 (48711) */ - 3343, /* BE48 (48712) */ - 3343, /* BE49 (48713) */ - 3343, /* BE4A (48714) */ - 3343, /* BE4B (48715) */ - 3343, /* BE4C (48716) */ - 3343, /* BE4D (48717) */ - 3343, /* BE4E (48718) */ - 3343, /* BE4F (48719) */ - 3343, /* BE50 (48720) */ - 3343, /* BE51 (48721) */ - 3343, /* BE52 (48722) */ - 3343, /* BE53 (48723) */ - 3343, /* BE54 (48724) */ - 3343, /* BE55 (48725) */ - 3343, /* BE56 (48726) */ - 3343, /* BE57 (48727) */ - 3343, /* BE58 (48728) */ - 3343, /* BE59 (48729) */ - 3343, /* BE5A (48730) */ - 3343, /* BE5B (48731) */ - 3343, /* BE5C (48732) */ - 3343, /* BE5D (48733) */ - 3343, /* BE5E (48734) */ - 3343, /* BE5F (48735) */ - 3343, /* BE60 (48736) */ - 3343, /* BE61 (48737) */ - 3343, /* BE62 (48738) */ - 3343, /* BE63 (48739) */ - 3343, /* BE64 (48740) */ - 3343, /* BE65 (48741) */ - 3343, /* BE66 (48742) */ - 3343, /* BE67 (48743) */ - 3343, /* BE68 (48744) */ - 3343, /* BE69 (48745) */ - 3343, /* BE6A (48746) */ - 3343, /* BE6B (48747) */ - 3343, /* BE6C (48748) */ - 3343, /* BE6D (48749) */ - 3343, /* BE6E (48750) */ - 3343, /* BE6F (48751) */ - 3343, /* BE70 (48752) */ - 3343, /* BE71 (48753) */ - 3343, /* BE72 (48754) */ - 3343, /* BE73 (48755) */ - 3343, /* BE74 (48756) */ - 3343, /* BE75 (48757) */ - 3343, /* BE76 (48758) */ - 3343, /* BE77 (48759) */ - 3343, /* BE78 (48760) */ - 3343, /* BE79 (48761) */ - 3343, /* BE7A (48762) */ - 3343, /* BE7B (48763) */ - 3343, /* BE7C (48764) */ - 3343, /* BE7D (48765) */ - 3343, /* BE7E (48766) */ - 3343, /* BE7F (48767) */ - 3343, /* BE80 (48768) */ - 3343, /* BE81 (48769) */ - 3343, /* BE82 (48770) */ - 3343, /* BE83 (48771) */ - 3343, /* BE84 (48772) */ - 3343, /* BE85 (48773) */ - 3343, /* BE86 (48774) */ - 3343, /* BE87 (48775) */ - 3343, /* BE88 (48776) */ - 3343, /* BE89 (48777) */ - 3343, /* BE8A (48778) */ - 3343, /* BE8B (48779) */ - 3343, /* BE8C (48780) */ - 3343, /* BE8D (48781) */ - 3343, /* BE8E (48782) */ - 3343, /* BE8F (48783) */ - 3343, /* BE90 (48784) */ - 3343, /* BE91 (48785) */ - 3343, /* BE92 (48786) */ - 3343, /* BE93 (48787) */ - 3343, /* BE94 (48788) */ - 3343, /* BE95 (48789) */ - 3343, /* BE96 (48790) */ - 3343, /* BE97 (48791) */ - 3343, /* BE98 (48792) */ - 3343, /* BE99 (48793) */ - 3343, /* BE9A (48794) */ - 3343, /* BE9B (48795) */ - 3343, /* BE9C (48796) */ - 3343, /* BE9D (48797) */ - 3343, /* BE9E (48798) */ - 3343, /* BE9F (48799) */ - 3343, /* BEA0 (48800) */ - 3343, /* BEA1 (48801) */ - 3343, /* BEA2 (48802) */ - 3343, /* BEA3 (48803) */ - 3343, /* BEA4 (48804) */ - 3343, /* BEA5 (48805) */ - 3343, /* BEA6 (48806) */ - 3343, /* BEA7 (48807) */ - 3343, /* BEA8 (48808) */ - 3343, /* BEA9 (48809) */ - 3343, /* BEAA (48810) */ - 3343, /* BEAB (48811) */ - 3343, /* BEAC (48812) */ - 3343, /* BEAD (48813) */ - 3343, /* BEAE (48814) */ - 3343, /* BEAF (48815) */ - 3343, /* BEB0 (48816) */ - 3343, /* BEB1 (48817) */ - 3343, /* BEB2 (48818) */ - 3343, /* BEB3 (48819) */ - 3343, /* BEB4 (48820) */ - 3343, /* BEB5 (48821) */ - 3343, /* BEB6 (48822) */ - 3343, /* BEB7 (48823) */ - 3343, /* BEB8 (48824) */ - 3343, /* BEB9 (48825) */ - 3343, /* BEBA (48826) */ - 3343, /* BEBB (48827) */ - 3343, /* BEBC (48828) */ - 3343, /* BEBD (48829) */ - 3343, /* BEBE (48830) */ - 3343, /* BEBF (48831) */ - 3343, /* BEC0 (48832) */ - 3343, /* BEC1 (48833) */ - 3343, /* BEC2 (48834) */ - 3343, /* BEC3 (48835) */ - 3343, /* BEC4 (48836) */ - 3343, /* BEC5 (48837) */ - 3343, /* BEC6 (48838) */ - 3343, /* BEC7 (48839) */ - 3343, /* BEC8 (48840) */ - 3343, /* BEC9 (48841) */ - 3343, /* BECA (48842) */ - 3343, /* BECB (48843) */ - 3343, /* BECC (48844) */ - 3343, /* BECD (48845) */ - 3343, /* BECE (48846) */ - 3343, /* BECF (48847) */ - 3343, /* BED0 (48848) */ - 3343, /* BED1 (48849) */ - 3343, /* BED2 (48850) */ - 3343, /* BED3 (48851) */ - 3343, /* BED4 (48852) */ - 3343, /* BED5 (48853) */ - 3343, /* BED6 (48854) */ - 3343, /* BED7 (48855) */ - 3343, /* BED8 (48856) */ - 3343, /* BED9 (48857) */ - 3343, /* BEDA (48858) */ - 3343, /* BEDB (48859) */ - 3343, /* BEDC (48860) */ - 3343, /* BEDD (48861) */ - 3343, /* BEDE (48862) */ - 3343, /* BEDF (48863) */ - 3343, /* BEE0 (48864) */ - 3343, /* BEE1 (48865) */ - 3343, /* BEE2 (48866) */ - 3343, /* BEE3 (48867) */ - 3343, /* BEE4 (48868) */ - 3343, /* BEE5 (48869) */ - 3343, /* BEE6 (48870) */ - 3343, /* BEE7 (48871) */ - 3343, /* BEE8 (48872) */ - 3343, /* BEE9 (48873) */ - 3343, /* BEEA (48874) */ - 3343, /* BEEB (48875) */ - 3343, /* BEEC (48876) */ - 3343, /* BEED (48877) */ - 3343, /* BEEE (48878) */ - 3343, /* BEEF (48879) */ - 3343, /* BEF0 (48880) */ - 3343, /* BEF1 (48881) */ - 3343, /* BEF2 (48882) */ - 3343, /* BEF3 (48883) */ - 3343, /* BEF4 (48884) */ - 3343, /* BEF5 (48885) */ - 3343, /* BEF6 (48886) */ - 3343, /* BEF7 (48887) */ - 3343, /* BEF8 (48888) */ - 3343, /* BEF9 (48889) */ - 3343, /* BEFA (48890) */ - 3343, /* BEFB (48891) */ - 3343, /* BEFC (48892) */ - 3343, /* BEFD (48893) */ - 3343, /* BEFE (48894) */ - 3343, /* BEFF (48895) */ - 3343, /* BF00 (48896) */ - 3343, /* BF01 (48897) */ - 3343, /* BF02 (48898) */ - 3343, /* BF03 (48899) */ - 3343, /* BF04 (48900) */ - 3343, /* BF05 (48901) */ - 3343, /* BF06 (48902) */ - 3343, /* BF07 (48903) */ - 3343, /* BF08 (48904) */ - 3343, /* BF09 (48905) */ - 3343, /* BF0A (48906) */ - 3343, /* BF0B (48907) */ - 3343, /* BF0C (48908) */ - 3343, /* BF0D (48909) */ - 3343, /* BF0E (48910) */ - 3343, /* BF0F (48911) */ - 3343, /* BF10 (48912) */ - 3343, /* BF11 (48913) */ - 3343, /* BF12 (48914) */ - 3343, /* BF13 (48915) */ - 3343, /* BF14 (48916) */ - 3343, /* BF15 (48917) */ - 3343, /* BF16 (48918) */ - 3343, /* BF17 (48919) */ - 3343, /* BF18 (48920) */ - 3343, /* BF19 (48921) */ - 3343, /* BF1A (48922) */ - 3343, /* BF1B (48923) */ - 3343, /* BF1C (48924) */ - 3343, /* BF1D (48925) */ - 3343, /* BF1E (48926) */ - 3343, /* BF1F (48927) */ - 3343, /* BF20 (48928) */ - 3343, /* BF21 (48929) */ - 3343, /* BF22 (48930) */ - 3343, /* BF23 (48931) */ - 3343, /* BF24 (48932) */ - 3343, /* BF25 (48933) */ - 3343, /* BF26 (48934) */ - 3343, /* BF27 (48935) */ - 3343, /* BF28 (48936) */ - 3343, /* BF29 (48937) */ - 3343, /* BF2A (48938) */ - 3343, /* BF2B (48939) */ - 3343, /* BF2C (48940) */ - 3343, /* BF2D (48941) */ - 3343, /* BF2E (48942) */ - 3343, /* BF2F (48943) */ - 3343, /* BF30 (48944) */ - 3343, /* BF31 (48945) */ - 3343, /* BF32 (48946) */ - 3343, /* BF33 (48947) */ - 3343, /* BF34 (48948) */ - 3343, /* BF35 (48949) */ - 3343, /* BF36 (48950) */ - 3343, /* BF37 (48951) */ - 3343, /* BF38 (48952) */ - 3343, /* BF39 (48953) */ - 3343, /* BF3A (48954) */ - 3343, /* BF3B (48955) */ - 3343, /* BF3C (48956) */ - 3343, /* BF3D (48957) */ - 3343, /* BF3E (48958) */ - 3343, /* BF3F (48959) */ - 3343, /* BF40 (48960) */ - 3343, /* BF41 (48961) */ - 3343, /* BF42 (48962) */ - 3343, /* BF43 (48963) */ - 3343, /* BF44 (48964) */ - 3343, /* BF45 (48965) */ - 3343, /* BF46 (48966) */ - 3343, /* BF47 (48967) */ - 3343, /* BF48 (48968) */ - 3343, /* BF49 (48969) */ - 3343, /* BF4A (48970) */ - 3343, /* BF4B (48971) */ - 3343, /* BF4C (48972) */ - 3343, /* BF4D (48973) */ - 3343, /* BF4E (48974) */ - 3343, /* BF4F (48975) */ - 3343, /* BF50 (48976) */ - 3343, /* BF51 (48977) */ - 3343, /* BF52 (48978) */ - 3343, /* BF53 (48979) */ - 3343, /* BF54 (48980) */ - 3343, /* BF55 (48981) */ - 3343, /* BF56 (48982) */ - 3343, /* BF57 (48983) */ - 3343, /* BF58 (48984) */ - 3343, /* BF59 (48985) */ - 3343, /* BF5A (48986) */ - 3343, /* BF5B (48987) */ - 3343, /* BF5C (48988) */ - 3343, /* BF5D (48989) */ - 3343, /* BF5E (48990) */ - 3343, /* BF5F (48991) */ - 3343, /* BF60 (48992) */ - 3343, /* BF61 (48993) */ - 3343, /* BF62 (48994) */ - 3343, /* BF63 (48995) */ - 3343, /* BF64 (48996) */ - 3343, /* BF65 (48997) */ - 3343, /* BF66 (48998) */ - 3343, /* BF67 (48999) */ - 3343, /* BF68 (49000) */ - 3343, /* BF69 (49001) */ - 3343, /* BF6A (49002) */ - 3343, /* BF6B (49003) */ - 3343, /* BF6C (49004) */ - 3343, /* BF6D (49005) */ - 3343, /* BF6E (49006) */ - 3343, /* BF6F (49007) */ - 3343, /* BF70 (49008) */ - 3343, /* BF71 (49009) */ - 3343, /* BF72 (49010) */ - 3343, /* BF73 (49011) */ - 3343, /* BF74 (49012) */ - 3343, /* BF75 (49013) */ - 3343, /* BF76 (49014) */ - 3343, /* BF77 (49015) */ - 3343, /* BF78 (49016) */ - 3343, /* BF79 (49017) */ - 3343, /* BF7A (49018) */ - 3343, /* BF7B (49019) */ - 3343, /* BF7C (49020) */ - 3343, /* BF7D (49021) */ - 3343, /* BF7E (49022) */ - 3343, /* BF7F (49023) */ - 3343, /* BF80 (49024) */ - 3343, /* BF81 (49025) */ - 3343, /* BF82 (49026) */ - 3343, /* BF83 (49027) */ - 3343, /* BF84 (49028) */ - 3343, /* BF85 (49029) */ - 3343, /* BF86 (49030) */ - 3343, /* BF87 (49031) */ - 3343, /* BF88 (49032) */ - 3343, /* BF89 (49033) */ - 3343, /* BF8A (49034) */ - 3343, /* BF8B (49035) */ - 3343, /* BF8C (49036) */ - 3343, /* BF8D (49037) */ - 3343, /* BF8E (49038) */ - 3343, /* BF8F (49039) */ - 3343, /* BF90 (49040) */ - 3343, /* BF91 (49041) */ - 3343, /* BF92 (49042) */ - 3343, /* BF93 (49043) */ - 3343, /* BF94 (49044) */ - 3343, /* BF95 (49045) */ - 3343, /* BF96 (49046) */ - 3343, /* BF97 (49047) */ - 3343, /* BF98 (49048) */ - 3343, /* BF99 (49049) */ - 3343, /* BF9A (49050) */ - 3343, /* BF9B (49051) */ - 3343, /* BF9C (49052) */ - 3343, /* BF9D (49053) */ - 3343, /* BF9E (49054) */ - 3343, /* BF9F (49055) */ - 3343, /* BFA0 (49056) */ - 3343, /* BFA1 (49057) */ - 3343, /* BFA2 (49058) */ - 3343, /* BFA3 (49059) */ - 3343, /* BFA4 (49060) */ - 3343, /* BFA5 (49061) */ - 3343, /* BFA6 (49062) */ - 3343, /* BFA7 (49063) */ - 3343, /* BFA8 (49064) */ - 3343, /* BFA9 (49065) */ - 3343, /* BFAA (49066) */ - 3343, /* BFAB (49067) */ - 3343, /* BFAC (49068) */ - 3343, /* BFAD (49069) */ - 3343, /* BFAE (49070) */ - 3343, /* BFAF (49071) */ - 3343, /* BFB0 (49072) */ - 3343, /* BFB1 (49073) */ - 3343, /* BFB2 (49074) */ - 3343, /* BFB3 (49075) */ - 3343, /* BFB4 (49076) */ - 3343, /* BFB5 (49077) */ - 3343, /* BFB6 (49078) */ - 3343, /* BFB7 (49079) */ - 3343, /* BFB8 (49080) */ - 3343, /* BFB9 (49081) */ - 3343, /* BFBA (49082) */ - 3343, /* BFBB (49083) */ - 3343, /* BFBC (49084) */ - 3343, /* BFBD (49085) */ - 3343, /* BFBE (49086) */ - 3343, /* BFBF (49087) */ - 3343, /* BFC0 (49088) */ - 3343, /* BFC1 (49089) */ - 3343, /* BFC2 (49090) */ - 3343, /* BFC3 (49091) */ - 3343, /* BFC4 (49092) */ - 3343, /* BFC5 (49093) */ - 3343, /* BFC6 (49094) */ - 3343, /* BFC7 (49095) */ - 3343, /* BFC8 (49096) */ - 3343, /* BFC9 (49097) */ - 3343, /* BFCA (49098) */ - 3343, /* BFCB (49099) */ - 3343, /* BFCC (49100) */ - 3343, /* BFCD (49101) */ - 3343, /* BFCE (49102) */ - 3343, /* BFCF (49103) */ - 3343, /* BFD0 (49104) */ - 3343, /* BFD1 (49105) */ - 3343, /* BFD2 (49106) */ - 3343, /* BFD3 (49107) */ - 3343, /* BFD4 (49108) */ - 3343, /* BFD5 (49109) */ - 3343, /* BFD6 (49110) */ - 3343, /* BFD7 (49111) */ - 3343, /* BFD8 (49112) */ - 3343, /* BFD9 (49113) */ - 3343, /* BFDA (49114) */ - 3343, /* BFDB (49115) */ - 3343, /* BFDC (49116) */ - 3343, /* BFDD (49117) */ - 3343, /* BFDE (49118) */ - 3343, /* BFDF (49119) */ - 3343, /* BFE0 (49120) */ - 3343, /* BFE1 (49121) */ - 3343, /* BFE2 (49122) */ - 3343, /* BFE3 (49123) */ - 3343, /* BFE4 (49124) */ - 3343, /* BFE5 (49125) */ - 3343, /* BFE6 (49126) */ - 3343, /* BFE7 (49127) */ - 3343, /* BFE8 (49128) */ - 3343, /* BFE9 (49129) */ - 3343, /* BFEA (49130) */ - 3343, /* BFEB (49131) */ - 3343, /* BFEC (49132) */ - 3343, /* BFED (49133) */ - 3343, /* BFEE (49134) */ - 3343, /* BFEF (49135) */ - 3343, /* BFF0 (49136) */ - 3343, /* BFF1 (49137) */ - 3343, /* BFF2 (49138) */ - 3343, /* BFF3 (49139) */ - 3343, /* BFF4 (49140) */ - 3343, /* BFF5 (49141) */ - 3343, /* BFF6 (49142) */ - 3343, /* BFF7 (49143) */ - 3343, /* BFF8 (49144) */ - 3343, /* BFF9 (49145) */ - 3343, /* BFFA (49146) */ - 3343, /* BFFB (49147) */ - 3343, /* BFFC (49148) */ - 3343, /* BFFD (49149) */ - 3343, /* BFFE (49150) */ - 3343, /* BFFF (49151) */ - 3343, /* C000 (49152) */ - 3343, /* C001 (49153) */ - 3343, /* C002 (49154) */ - 3343, /* C003 (49155) */ - 3343, /* C004 (49156) */ - 3343, /* C005 (49157) */ - 3343, /* C006 (49158) */ - 3343, /* C007 (49159) */ - 3343, /* C008 (49160) */ - 3343, /* C009 (49161) */ - 3343, /* C00A (49162) */ - 3343, /* C00B (49163) */ - 3343, /* C00C (49164) */ - 3343, /* C00D (49165) */ - 3343, /* C00E (49166) */ - 3343, /* C00F (49167) */ - 3343, /* C010 (49168) */ - 3343, /* C011 (49169) */ - 3343, /* C012 (49170) */ - 3343, /* C013 (49171) */ - 3343, /* C014 (49172) */ - 3343, /* C015 (49173) */ - 3343, /* C016 (49174) */ - 3343, /* C017 (49175) */ - 3343, /* C018 (49176) */ - 3343, /* C019 (49177) */ - 3343, /* C01A (49178) */ - 3343, /* C01B (49179) */ - 3343, /* C01C (49180) */ - 3343, /* C01D (49181) */ - 3343, /* C01E (49182) */ - 3343, /* C01F (49183) */ - 3343, /* C020 (49184) */ - 3343, /* C021 (49185) */ - 3343, /* C022 (49186) */ - 3343, /* C023 (49187) */ - 3343, /* C024 (49188) */ - 3343, /* C025 (49189) */ - 3343, /* C026 (49190) */ - 3343, /* C027 (49191) */ - 3343, /* C028 (49192) */ - 3343, /* C029 (49193) */ - 3343, /* C02A (49194) */ - 3343, /* C02B (49195) */ - 3343, /* C02C (49196) */ - 3343, /* C02D (49197) */ - 3343, /* C02E (49198) */ - 3343, /* C02F (49199) */ - 3343, /* C030 (49200) */ - 3343, /* C031 (49201) */ - 3343, /* C032 (49202) */ - 3343, /* C033 (49203) */ - 3343, /* C034 (49204) */ - 3343, /* C035 (49205) */ - 3343, /* C036 (49206) */ - 3343, /* C037 (49207) */ - 3343, /* C038 (49208) */ - 3343, /* C039 (49209) */ - 3343, /* C03A (49210) */ - 3343, /* C03B (49211) */ - 3343, /* C03C (49212) */ - 3343, /* C03D (49213) */ - 3343, /* C03E (49214) */ - 3343, /* C03F (49215) */ - 3343, /* C040 (49216) */ - 3343, /* C041 (49217) */ - 3343, /* C042 (49218) */ - 3343, /* C043 (49219) */ - 3343, /* C044 (49220) */ - 3343, /* C045 (49221) */ - 3343, /* C046 (49222) */ - 3343, /* C047 (49223) */ - 3343, /* C048 (49224) */ - 3343, /* C049 (49225) */ - 3343, /* C04A (49226) */ - 3343, /* C04B (49227) */ - 3343, /* C04C (49228) */ - 3343, /* C04D (49229) */ - 3343, /* C04E (49230) */ - 3343, /* C04F (49231) */ - 3343, /* C050 (49232) */ - 3343, /* C051 (49233) */ - 3343, /* C052 (49234) */ - 3343, /* C053 (49235) */ - 3343, /* C054 (49236) */ - 3343, /* C055 (49237) */ - 3343, /* C056 (49238) */ - 3343, /* C057 (49239) */ - 3343, /* C058 (49240) */ - 3343, /* C059 (49241) */ - 3343, /* C05A (49242) */ - 3343, /* C05B (49243) */ - 3343, /* C05C (49244) */ - 3343, /* C05D (49245) */ - 3343, /* C05E (49246) */ - 3343, /* C05F (49247) */ - 3343, /* C060 (49248) */ - 3343, /* C061 (49249) */ - 3343, /* C062 (49250) */ - 3343, /* C063 (49251) */ - 3343, /* C064 (49252) */ - 3343, /* C065 (49253) */ - 3343, /* C066 (49254) */ - 3343, /* C067 (49255) */ - 3343, /* C068 (49256) */ - 3343, /* C069 (49257) */ - 3343, /* C06A (49258) */ - 3343, /* C06B (49259) */ - 3343, /* C06C (49260) */ - 3343, /* C06D (49261) */ - 3343, /* C06E (49262) */ - 3343, /* C06F (49263) */ - 3343, /* C070 (49264) */ - 3343, /* C071 (49265) */ - 3343, /* C072 (49266) */ - 3343, /* C073 (49267) */ - 3343, /* C074 (49268) */ - 3343, /* C075 (49269) */ - 3343, /* C076 (49270) */ - 3343, /* C077 (49271) */ - 3343, /* C078 (49272) */ - 3343, /* C079 (49273) */ - 3343, /* C07A (49274) */ - 3343, /* C07B (49275) */ - 3343, /* C07C (49276) */ - 3343, /* C07D (49277) */ - 3343, /* C07E (49278) */ - 3343, /* C07F (49279) */ - 3343, /* C080 (49280) */ - 3343, /* C081 (49281) */ - 3343, /* C082 (49282) */ - 3343, /* C083 (49283) */ - 3343, /* C084 (49284) */ - 3343, /* C085 (49285) */ - 3343, /* C086 (49286) */ - 3343, /* C087 (49287) */ - 3343, /* C088 (49288) */ - 3343, /* C089 (49289) */ - 3343, /* C08A (49290) */ - 3343, /* C08B (49291) */ - 3343, /* C08C (49292) */ - 3343, /* C08D (49293) */ - 3343, /* C08E (49294) */ - 3343, /* C08F (49295) */ - 3343, /* C090 (49296) */ - 3343, /* C091 (49297) */ - 3343, /* C092 (49298) */ - 3343, /* C093 (49299) */ - 3343, /* C094 (49300) */ - 3343, /* C095 (49301) */ - 3343, /* C096 (49302) */ - 3343, /* C097 (49303) */ - 3343, /* C098 (49304) */ - 3343, /* C099 (49305) */ - 3343, /* C09A (49306) */ - 3343, /* C09B (49307) */ - 3343, /* C09C (49308) */ - 3343, /* C09D (49309) */ - 3343, /* C09E (49310) */ - 3343, /* C09F (49311) */ - 3343, /* C0A0 (49312) */ - 3343, /* C0A1 (49313) */ - 3343, /* C0A2 (49314) */ - 3343, /* C0A3 (49315) */ - 3343, /* C0A4 (49316) */ - 3343, /* C0A5 (49317) */ - 3343, /* C0A6 (49318) */ - 3343, /* C0A7 (49319) */ - 3343, /* C0A8 (49320) */ - 3343, /* C0A9 (49321) */ - 3343, /* C0AA (49322) */ - 3343, /* C0AB (49323) */ - 3343, /* C0AC (49324) */ - 3343, /* C0AD (49325) */ - 3343, /* C0AE (49326) */ - 3343, /* C0AF (49327) */ - 3343, /* C0B0 (49328) */ - 3343, /* C0B1 (49329) */ - 3343, /* C0B2 (49330) */ - 3343, /* C0B3 (49331) */ - 3343, /* C0B4 (49332) */ - 3343, /* C0B5 (49333) */ - 3343, /* C0B6 (49334) */ - 3343, /* C0B7 (49335) */ - 3343, /* C0B8 (49336) */ - 3343, /* C0B9 (49337) */ - 3343, /* C0BA (49338) */ - 3343, /* C0BB (49339) */ - 3343, /* C0BC (49340) */ - 3343, /* C0BD (49341) */ - 3343, /* C0BE (49342) */ - 3343, /* C0BF (49343) */ - 3343, /* C0C0 (49344) */ - 3343, /* C0C1 (49345) */ - 3343, /* C0C2 (49346) */ - 3343, /* C0C3 (49347) */ - 3343, /* C0C4 (49348) */ - 3343, /* C0C5 (49349) */ - 3343, /* C0C6 (49350) */ - 3343, /* C0C7 (49351) */ - 3343, /* C0C8 (49352) */ - 3343, /* C0C9 (49353) */ - 3343, /* C0CA (49354) */ - 3343, /* C0CB (49355) */ - 3343, /* C0CC (49356) */ - 3343, /* C0CD (49357) */ - 3343, /* C0CE (49358) */ - 3343, /* C0CF (49359) */ - 3343, /* C0D0 (49360) */ - 3343, /* C0D1 (49361) */ - 3343, /* C0D2 (49362) */ - 3343, /* C0D3 (49363) */ - 3343, /* C0D4 (49364) */ - 3343, /* C0D5 (49365) */ - 3343, /* C0D6 (49366) */ - 3343, /* C0D7 (49367) */ - 3343, /* C0D8 (49368) */ - 3343, /* C0D9 (49369) */ - 3343, /* C0DA (49370) */ - 3343, /* C0DB (49371) */ - 3343, /* C0DC (49372) */ - 3343, /* C0DD (49373) */ - 3343, /* C0DE (49374) */ - 3343, /* C0DF (49375) */ - 3343, /* C0E0 (49376) */ - 3343, /* C0E1 (49377) */ - 3343, /* C0E2 (49378) */ - 3343, /* C0E3 (49379) */ - 3343, /* C0E4 (49380) */ - 3343, /* C0E5 (49381) */ - 3343, /* C0E6 (49382) */ - 3343, /* C0E7 (49383) */ - 3343, /* C0E8 (49384) */ - 3343, /* C0E9 (49385) */ - 3343, /* C0EA (49386) */ - 3343, /* C0EB (49387) */ - 3343, /* C0EC (49388) */ - 3343, /* C0ED (49389) */ - 3343, /* C0EE (49390) */ - 3343, /* C0EF (49391) */ - 3343, /* C0F0 (49392) */ - 3343, /* C0F1 (49393) */ - 3343, /* C0F2 (49394) */ - 3343, /* C0F3 (49395) */ - 3343, /* C0F4 (49396) */ - 3343, /* C0F5 (49397) */ - 3343, /* C0F6 (49398) */ - 3343, /* C0F7 (49399) */ - 3343, /* C0F8 (49400) */ - 3343, /* C0F9 (49401) */ - 3343, /* C0FA (49402) */ - 3343, /* C0FB (49403) */ - 3343, /* C0FC (49404) */ - 3343, /* C0FD (49405) */ - 3343, /* C0FE (49406) */ - 3343, /* C0FF (49407) */ - 3343, /* C100 (49408) */ - 3343, /* C101 (49409) */ - 3343, /* C102 (49410) */ - 3343, /* C103 (49411) */ - 3343, /* C104 (49412) */ - 3343, /* C105 (49413) */ - 3343, /* C106 (49414) */ - 3343, /* C107 (49415) */ - 3343, /* C108 (49416) */ - 3343, /* C109 (49417) */ - 3343, /* C10A (49418) */ - 3343, /* C10B (49419) */ - 3343, /* C10C (49420) */ - 3343, /* C10D (49421) */ - 3343, /* C10E (49422) */ - 3343, /* C10F (49423) */ - 3343, /* C110 (49424) */ - 3343, /* C111 (49425) */ - 3343, /* C112 (49426) */ - 3343, /* C113 (49427) */ - 3343, /* C114 (49428) */ - 3343, /* C115 (49429) */ - 3343, /* C116 (49430) */ - 3343, /* C117 (49431) */ - 3343, /* C118 (49432) */ - 3343, /* C119 (49433) */ - 3343, /* C11A (49434) */ - 3343, /* C11B (49435) */ - 3343, /* C11C (49436) */ - 3343, /* C11D (49437) */ - 3343, /* C11E (49438) */ - 3343, /* C11F (49439) */ - 3343, /* C120 (49440) */ - 3343, /* C121 (49441) */ - 3343, /* C122 (49442) */ - 3343, /* C123 (49443) */ - 3343, /* C124 (49444) */ - 3343, /* C125 (49445) */ - 3343, /* C126 (49446) */ - 3343, /* C127 (49447) */ - 3343, /* C128 (49448) */ - 3343, /* C129 (49449) */ - 3343, /* C12A (49450) */ - 3343, /* C12B (49451) */ - 3343, /* C12C (49452) */ - 3343, /* C12D (49453) */ - 3343, /* C12E (49454) */ - 3343, /* C12F (49455) */ - 3343, /* C130 (49456) */ - 3343, /* C131 (49457) */ - 3343, /* C132 (49458) */ - 3343, /* C133 (49459) */ - 3343, /* C134 (49460) */ - 3343, /* C135 (49461) */ - 3343, /* C136 (49462) */ - 3343, /* C137 (49463) */ - 3343, /* C138 (49464) */ - 3343, /* C139 (49465) */ - 3343, /* C13A (49466) */ - 3343, /* C13B (49467) */ - 3343, /* C13C (49468) */ - 3343, /* C13D (49469) */ - 3343, /* C13E (49470) */ - 3343, /* C13F (49471) */ - 3343, /* C140 (49472) */ - 3343, /* C141 (49473) */ - 3343, /* C142 (49474) */ - 3343, /* C143 (49475) */ - 3343, /* C144 (49476) */ - 3343, /* C145 (49477) */ - 3343, /* C146 (49478) */ - 3343, /* C147 (49479) */ - 3343, /* C148 (49480) */ - 3343, /* C149 (49481) */ - 3343, /* C14A (49482) */ - 3343, /* C14B (49483) */ - 3343, /* C14C (49484) */ - 3343, /* C14D (49485) */ - 3343, /* C14E (49486) */ - 3343, /* C14F (49487) */ - 3343, /* C150 (49488) */ - 3343, /* C151 (49489) */ - 3343, /* C152 (49490) */ - 3343, /* C153 (49491) */ - 3343, /* C154 (49492) */ - 3343, /* C155 (49493) */ - 3343, /* C156 (49494) */ - 3343, /* C157 (49495) */ - 3343, /* C158 (49496) */ - 3343, /* C159 (49497) */ - 3343, /* C15A (49498) */ - 3343, /* C15B (49499) */ - 3343, /* C15C (49500) */ - 3343, /* C15D (49501) */ - 3343, /* C15E (49502) */ - 3343, /* C15F (49503) */ - 3343, /* C160 (49504) */ - 3343, /* C161 (49505) */ - 3343, /* C162 (49506) */ - 3343, /* C163 (49507) */ - 3343, /* C164 (49508) */ - 3343, /* C165 (49509) */ - 3343, /* C166 (49510) */ - 3343, /* C167 (49511) */ - 3343, /* C168 (49512) */ - 3343, /* C169 (49513) */ - 3343, /* C16A (49514) */ - 3343, /* C16B (49515) */ - 3343, /* C16C (49516) */ - 3343, /* C16D (49517) */ - 3343, /* C16E (49518) */ - 3343, /* C16F (49519) */ - 3343, /* C170 (49520) */ - 3343, /* C171 (49521) */ - 3343, /* C172 (49522) */ - 3343, /* C173 (49523) */ - 3343, /* C174 (49524) */ - 3343, /* C175 (49525) */ - 3343, /* C176 (49526) */ - 3343, /* C177 (49527) */ - 3343, /* C178 (49528) */ - 3343, /* C179 (49529) */ - 3343, /* C17A (49530) */ - 3343, /* C17B (49531) */ - 3343, /* C17C (49532) */ - 3343, /* C17D (49533) */ - 3343, /* C17E (49534) */ - 3343, /* C17F (49535) */ - 3343, /* C180 (49536) */ - 3343, /* C181 (49537) */ - 3343, /* C182 (49538) */ - 3343, /* C183 (49539) */ - 3343, /* C184 (49540) */ - 3343, /* C185 (49541) */ - 3343, /* C186 (49542) */ - 3343, /* C187 (49543) */ - 3343, /* C188 (49544) */ - 3343, /* C189 (49545) */ - 3343, /* C18A (49546) */ - 3343, /* C18B (49547) */ - 3343, /* C18C (49548) */ - 3343, /* C18D (49549) */ - 3343, /* C18E (49550) */ - 3343, /* C18F (49551) */ - 3343, /* C190 (49552) */ - 3343, /* C191 (49553) */ - 3343, /* C192 (49554) */ - 3343, /* C193 (49555) */ - 3343, /* C194 (49556) */ - 3343, /* C195 (49557) */ - 3343, /* C196 (49558) */ - 3343, /* C197 (49559) */ - 3343, /* C198 (49560) */ - 3343, /* C199 (49561) */ - 3343, /* C19A (49562) */ - 3343, /* C19B (49563) */ - 3343, /* C19C (49564) */ - 3343, /* C19D (49565) */ - 3343, /* C19E (49566) */ - 3343, /* C19F (49567) */ - 3343, /* C1A0 (49568) */ - 3343, /* C1A1 (49569) */ - 3343, /* C1A2 (49570) */ - 3343, /* C1A3 (49571) */ - 3343, /* C1A4 (49572) */ - 3343, /* C1A5 (49573) */ - 3343, /* C1A6 (49574) */ - 3343, /* C1A7 (49575) */ - 3343, /* C1A8 (49576) */ - 3343, /* C1A9 (49577) */ - 3343, /* C1AA (49578) */ - 3343, /* C1AB (49579) */ - 3343, /* C1AC (49580) */ - 3343, /* C1AD (49581) */ - 3343, /* C1AE (49582) */ - 3343, /* C1AF (49583) */ - 3343, /* C1B0 (49584) */ - 3343, /* C1B1 (49585) */ - 3343, /* C1B2 (49586) */ - 3343, /* C1B3 (49587) */ - 3343, /* C1B4 (49588) */ - 3343, /* C1B5 (49589) */ - 3343, /* C1B6 (49590) */ - 3343, /* C1B7 (49591) */ - 3343, /* C1B8 (49592) */ - 3343, /* C1B9 (49593) */ - 3343, /* C1BA (49594) */ - 3343, /* C1BB (49595) */ - 3343, /* C1BC (49596) */ - 3343, /* C1BD (49597) */ - 3343, /* C1BE (49598) */ - 3343, /* C1BF (49599) */ - 3343, /* C1C0 (49600) */ - 3343, /* C1C1 (49601) */ - 3343, /* C1C2 (49602) */ - 3343, /* C1C3 (49603) */ - 3343, /* C1C4 (49604) */ - 3343, /* C1C5 (49605) */ - 3343, /* C1C6 (49606) */ - 3343, /* C1C7 (49607) */ - 3343, /* C1C8 (49608) */ - 3343, /* C1C9 (49609) */ - 3343, /* C1CA (49610) */ - 3343, /* C1CB (49611) */ - 3343, /* C1CC (49612) */ - 3343, /* C1CD (49613) */ - 3343, /* C1CE (49614) */ - 3343, /* C1CF (49615) */ - 3343, /* C1D0 (49616) */ - 3343, /* C1D1 (49617) */ - 3343, /* C1D2 (49618) */ - 3343, /* C1D3 (49619) */ - 3343, /* C1D4 (49620) */ - 3343, /* C1D5 (49621) */ - 3343, /* C1D6 (49622) */ - 3343, /* C1D7 (49623) */ - 3343, /* C1D8 (49624) */ - 3343, /* C1D9 (49625) */ - 3343, /* C1DA (49626) */ - 3343, /* C1DB (49627) */ - 3343, /* C1DC (49628) */ - 3343, /* C1DD (49629) */ - 3343, /* C1DE (49630) */ - 3343, /* C1DF (49631) */ - 3343, /* C1E0 (49632) */ - 3343, /* C1E1 (49633) */ - 3343, /* C1E2 (49634) */ - 3343, /* C1E3 (49635) */ - 3343, /* C1E4 (49636) */ - 3343, /* C1E5 (49637) */ - 3343, /* C1E6 (49638) */ - 3343, /* C1E7 (49639) */ - 3343, /* C1E8 (49640) */ - 3343, /* C1E9 (49641) */ - 3343, /* C1EA (49642) */ - 3343, /* C1EB (49643) */ - 3343, /* C1EC (49644) */ - 3343, /* C1ED (49645) */ - 3343, /* C1EE (49646) */ - 3343, /* C1EF (49647) */ - 3343, /* C1F0 (49648) */ - 3343, /* C1F1 (49649) */ - 3343, /* C1F2 (49650) */ - 3343, /* C1F3 (49651) */ - 3343, /* C1F4 (49652) */ - 3343, /* C1F5 (49653) */ - 3343, /* C1F6 (49654) */ - 3343, /* C1F7 (49655) */ - 3343, /* C1F8 (49656) */ - 3343, /* C1F9 (49657) */ - 3343, /* C1FA (49658) */ - 3343, /* C1FB (49659) */ - 3343, /* C1FC (49660) */ - 3343, /* C1FD (49661) */ - 3343, /* C1FE (49662) */ - 3343, /* C1FF (49663) */ - 3343, /* C200 (49664) */ - 3343, /* C201 (49665) */ - 3343, /* C202 (49666) */ - 3343, /* C203 (49667) */ - 3343, /* C204 (49668) */ - 3343, /* C205 (49669) */ - 3343, /* C206 (49670) */ - 3343, /* C207 (49671) */ - 3343, /* C208 (49672) */ - 3343, /* C209 (49673) */ - 3343, /* C20A (49674) */ - 3343, /* C20B (49675) */ - 3343, /* C20C (49676) */ - 3343, /* C20D (49677) */ - 3343, /* C20E (49678) */ - 3343, /* C20F (49679) */ - 3343, /* C210 (49680) */ - 3343, /* C211 (49681) */ - 3343, /* C212 (49682) */ - 3343, /* C213 (49683) */ - 3343, /* C214 (49684) */ - 3343, /* C215 (49685) */ - 3343, /* C216 (49686) */ - 3343, /* C217 (49687) */ - 3343, /* C218 (49688) */ - 3343, /* C219 (49689) */ - 3343, /* C21A (49690) */ - 3343, /* C21B (49691) */ - 3343, /* C21C (49692) */ - 3343, /* C21D (49693) */ - 3343, /* C21E (49694) */ - 3343, /* C21F (49695) */ - 3343, /* C220 (49696) */ - 3343, /* C221 (49697) */ - 3343, /* C222 (49698) */ - 3343, /* C223 (49699) */ - 3343, /* C224 (49700) */ - 3343, /* C225 (49701) */ - 3343, /* C226 (49702) */ - 3343, /* C227 (49703) */ - 3343, /* C228 (49704) */ - 3343, /* C229 (49705) */ - 3343, /* C22A (49706) */ - 3343, /* C22B (49707) */ - 3343, /* C22C (49708) */ - 3343, /* C22D (49709) */ - 3343, /* C22E (49710) */ - 3343, /* C22F (49711) */ - 3343, /* C230 (49712) */ - 3343, /* C231 (49713) */ - 3343, /* C232 (49714) */ - 3343, /* C233 (49715) */ - 3343, /* C234 (49716) */ - 3343, /* C235 (49717) */ - 3343, /* C236 (49718) */ - 3343, /* C237 (49719) */ - 3343, /* C238 (49720) */ - 3343, /* C239 (49721) */ - 3343, /* C23A (49722) */ - 3343, /* C23B (49723) */ - 3343, /* C23C (49724) */ - 3343, /* C23D (49725) */ - 3343, /* C23E (49726) */ - 3343, /* C23F (49727) */ - 3343, /* C240 (49728) */ - 3343, /* C241 (49729) */ - 3343, /* C242 (49730) */ - 3343, /* C243 (49731) */ - 3343, /* C244 (49732) */ - 3343, /* C245 (49733) */ - 3343, /* C246 (49734) */ - 3343, /* C247 (49735) */ - 3343, /* C248 (49736) */ - 3343, /* C249 (49737) */ - 3343, /* C24A (49738) */ - 3343, /* C24B (49739) */ - 3343, /* C24C (49740) */ - 3343, /* C24D (49741) */ - 3343, /* C24E (49742) */ - 3343, /* C24F (49743) */ - 3343, /* C250 (49744) */ - 3343, /* C251 (49745) */ - 3343, /* C252 (49746) */ - 3343, /* C253 (49747) */ - 3343, /* C254 (49748) */ - 3343, /* C255 (49749) */ - 3343, /* C256 (49750) */ - 3343, /* C257 (49751) */ - 3343, /* C258 (49752) */ - 3343, /* C259 (49753) */ - 3343, /* C25A (49754) */ - 3343, /* C25B (49755) */ - 3343, /* C25C (49756) */ - 3343, /* C25D (49757) */ - 3343, /* C25E (49758) */ - 3343, /* C25F (49759) */ - 3343, /* C260 (49760) */ - 3343, /* C261 (49761) */ - 3343, /* C262 (49762) */ - 3343, /* C263 (49763) */ - 3343, /* C264 (49764) */ - 3343, /* C265 (49765) */ - 3343, /* C266 (49766) */ - 3343, /* C267 (49767) */ - 3343, /* C268 (49768) */ - 3343, /* C269 (49769) */ - 3343, /* C26A (49770) */ - 3343, /* C26B (49771) */ - 3343, /* C26C (49772) */ - 3343, /* C26D (49773) */ - 3343, /* C26E (49774) */ - 3343, /* C26F (49775) */ - 3343, /* C270 (49776) */ - 3343, /* C271 (49777) */ - 3343, /* C272 (49778) */ - 3343, /* C273 (49779) */ - 3343, /* C274 (49780) */ - 3343, /* C275 (49781) */ - 3343, /* C276 (49782) */ - 3343, /* C277 (49783) */ - 3343, /* C278 (49784) */ - 3343, /* C279 (49785) */ - 3343, /* C27A (49786) */ - 3343, /* C27B (49787) */ - 3343, /* C27C (49788) */ - 3343, /* C27D (49789) */ - 3343, /* C27E (49790) */ - 3343, /* C27F (49791) */ - 3343, /* C280 (49792) */ - 3343, /* C281 (49793) */ - 3343, /* C282 (49794) */ - 3343, /* C283 (49795) */ - 3343, /* C284 (49796) */ - 3343, /* C285 (49797) */ - 3343, /* C286 (49798) */ - 3343, /* C287 (49799) */ - 3343, /* C288 (49800) */ - 3343, /* C289 (49801) */ - 3343, /* C28A (49802) */ - 3343, /* C28B (49803) */ - 3343, /* C28C (49804) */ - 3343, /* C28D (49805) */ - 3343, /* C28E (49806) */ - 3343, /* C28F (49807) */ - 3343, /* C290 (49808) */ - 3343, /* C291 (49809) */ - 3343, /* C292 (49810) */ - 3343, /* C293 (49811) */ - 3343, /* C294 (49812) */ - 3343, /* C295 (49813) */ - 3343, /* C296 (49814) */ - 3343, /* C297 (49815) */ - 3343, /* C298 (49816) */ - 3343, /* C299 (49817) */ - 3343, /* C29A (49818) */ - 3343, /* C29B (49819) */ - 3343, /* C29C (49820) */ - 3343, /* C29D (49821) */ - 3343, /* C29E (49822) */ - 3343, /* C29F (49823) */ - 3343, /* C2A0 (49824) */ - 3343, /* C2A1 (49825) */ - 3343, /* C2A2 (49826) */ - 3343, /* C2A3 (49827) */ - 3343, /* C2A4 (49828) */ - 3343, /* C2A5 (49829) */ - 3343, /* C2A6 (49830) */ - 3343, /* C2A7 (49831) */ - 3343, /* C2A8 (49832) */ - 3343, /* C2A9 (49833) */ - 3343, /* C2AA (49834) */ - 3343, /* C2AB (49835) */ - 3343, /* C2AC (49836) */ - 3343, /* C2AD (49837) */ - 3343, /* C2AE (49838) */ - 3343, /* C2AF (49839) */ - 3343, /* C2B0 (49840) */ - 3343, /* C2B1 (49841) */ - 3343, /* C2B2 (49842) */ - 3343, /* C2B3 (49843) */ - 3343, /* C2B4 (49844) */ - 3343, /* C2B5 (49845) */ - 3343, /* C2B6 (49846) */ - 3343, /* C2B7 (49847) */ - 3343, /* C2B8 (49848) */ - 3343, /* C2B9 (49849) */ - 3343, /* C2BA (49850) */ - 3343, /* C2BB (49851) */ - 3343, /* C2BC (49852) */ - 3343, /* C2BD (49853) */ - 3343, /* C2BE (49854) */ - 3343, /* C2BF (49855) */ - 3343, /* C2C0 (49856) */ - 3343, /* C2C1 (49857) */ - 3343, /* C2C2 (49858) */ - 3343, /* C2C3 (49859) */ - 3343, /* C2C4 (49860) */ - 3343, /* C2C5 (49861) */ - 3343, /* C2C6 (49862) */ - 3343, /* C2C7 (49863) */ - 3343, /* C2C8 (49864) */ - 3343, /* C2C9 (49865) */ - 3343, /* C2CA (49866) */ - 3343, /* C2CB (49867) */ - 3343, /* C2CC (49868) */ - 3343, /* C2CD (49869) */ - 3343, /* C2CE (49870) */ - 3343, /* C2CF (49871) */ - 3343, /* C2D0 (49872) */ - 3343, /* C2D1 (49873) */ - 3343, /* C2D2 (49874) */ - 3343, /* C2D3 (49875) */ - 3343, /* C2D4 (49876) */ - 3343, /* C2D5 (49877) */ - 3343, /* C2D6 (49878) */ - 3343, /* C2D7 (49879) */ - 3343, /* C2D8 (49880) */ - 3343, /* C2D9 (49881) */ - 3343, /* C2DA (49882) */ - 3343, /* C2DB (49883) */ - 3343, /* C2DC (49884) */ - 3343, /* C2DD (49885) */ - 3343, /* C2DE (49886) */ - 3343, /* C2DF (49887) */ - 3343, /* C2E0 (49888) */ - 3343, /* C2E1 (49889) */ - 3343, /* C2E2 (49890) */ - 3343, /* C2E3 (49891) */ - 3343, /* C2E4 (49892) */ - 3343, /* C2E5 (49893) */ - 3343, /* C2E6 (49894) */ - 3343, /* C2E7 (49895) */ - 3343, /* C2E8 (49896) */ - 3343, /* C2E9 (49897) */ - 3343, /* C2EA (49898) */ - 3343, /* C2EB (49899) */ - 3343, /* C2EC (49900) */ - 3343, /* C2ED (49901) */ - 3343, /* C2EE (49902) */ - 3343, /* C2EF (49903) */ - 3343, /* C2F0 (49904) */ - 3343, /* C2F1 (49905) */ - 3343, /* C2F2 (49906) */ - 3343, /* C2F3 (49907) */ - 3343, /* C2F4 (49908) */ - 3343, /* C2F5 (49909) */ - 3343, /* C2F6 (49910) */ - 3343, /* C2F7 (49911) */ - 3343, /* C2F8 (49912) */ - 3343, /* C2F9 (49913) */ - 3343, /* C2FA (49914) */ - 3343, /* C2FB (49915) */ - 3343, /* C2FC (49916) */ - 3343, /* C2FD (49917) */ - 3343, /* C2FE (49918) */ - 3343, /* C2FF (49919) */ - 3343, /* C300 (49920) */ - 3343, /* C301 (49921) */ - 3343, /* C302 (49922) */ - 3343, /* C303 (49923) */ - 3343, /* C304 (49924) */ - 3343, /* C305 (49925) */ - 3343, /* C306 (49926) */ - 3343, /* C307 (49927) */ - 3343, /* C308 (49928) */ - 3343, /* C309 (49929) */ - 3343, /* C30A (49930) */ - 3343, /* C30B (49931) */ - 3343, /* C30C (49932) */ - 3343, /* C30D (49933) */ - 3343, /* C30E (49934) */ - 3343, /* C30F (49935) */ - 3343, /* C310 (49936) */ - 3343, /* C311 (49937) */ - 3343, /* C312 (49938) */ - 3343, /* C313 (49939) */ - 3343, /* C314 (49940) */ - 3343, /* C315 (49941) */ - 3343, /* C316 (49942) */ - 3343, /* C317 (49943) */ - 3343, /* C318 (49944) */ - 3343, /* C319 (49945) */ - 3343, /* C31A (49946) */ - 3343, /* C31B (49947) */ - 3343, /* C31C (49948) */ - 3343, /* C31D (49949) */ - 3343, /* C31E (49950) */ - 3343, /* C31F (49951) */ - 3343, /* C320 (49952) */ - 3343, /* C321 (49953) */ - 3343, /* C322 (49954) */ - 3343, /* C323 (49955) */ - 3343, /* C324 (49956) */ - 3343, /* C325 (49957) */ - 3343, /* C326 (49958) */ - 3343, /* C327 (49959) */ - 3343, /* C328 (49960) */ - 3343, /* C329 (49961) */ - 3343, /* C32A (49962) */ - 3343, /* C32B (49963) */ - 3343, /* C32C (49964) */ - 3343, /* C32D (49965) */ - 3343, /* C32E (49966) */ - 3343, /* C32F (49967) */ - 3343, /* C330 (49968) */ - 3343, /* C331 (49969) */ - 3343, /* C332 (49970) */ - 3343, /* C333 (49971) */ - 3343, /* C334 (49972) */ - 3343, /* C335 (49973) */ - 3343, /* C336 (49974) */ - 3343, /* C337 (49975) */ - 3343, /* C338 (49976) */ - 3343, /* C339 (49977) */ - 3343, /* C33A (49978) */ - 3343, /* C33B (49979) */ - 3343, /* C33C (49980) */ - 3343, /* C33D (49981) */ - 3343, /* C33E (49982) */ - 3343, /* C33F (49983) */ - 3343, /* C340 (49984) */ - 3343, /* C341 (49985) */ - 3343, /* C342 (49986) */ - 3343, /* C343 (49987) */ - 3343, /* C344 (49988) */ - 3343, /* C345 (49989) */ - 3343, /* C346 (49990) */ - 3343, /* C347 (49991) */ - 3343, /* C348 (49992) */ - 3343, /* C349 (49993) */ - 3343, /* C34A (49994) */ - 3343, /* C34B (49995) */ - 3343, /* C34C (49996) */ - 3343, /* C34D (49997) */ - 3343, /* C34E (49998) */ - 3343, /* C34F (49999) */ - 3343, /* C350 (50000) */ - 3343, /* C351 (50001) */ - 3343, /* C352 (50002) */ - 3343, /* C353 (50003) */ - 3343, /* C354 (50004) */ - 3343, /* C355 (50005) */ - 3343, /* C356 (50006) */ - 3343, /* C357 (50007) */ - 3343, /* C358 (50008) */ - 3343, /* C359 (50009) */ - 3343, /* C35A (50010) */ - 3343, /* C35B (50011) */ - 3343, /* C35C (50012) */ - 3343, /* C35D (50013) */ - 3343, /* C35E (50014) */ - 3343, /* C35F (50015) */ - 3343, /* C360 (50016) */ - 3343, /* C361 (50017) */ - 3343, /* C362 (50018) */ - 3343, /* C363 (50019) */ - 3343, /* C364 (50020) */ - 3343, /* C365 (50021) */ - 3343, /* C366 (50022) */ - 3343, /* C367 (50023) */ - 3343, /* C368 (50024) */ - 3343, /* C369 (50025) */ - 3343, /* C36A (50026) */ - 3343, /* C36B (50027) */ - 3343, /* C36C (50028) */ - 3343, /* C36D (50029) */ - 3343, /* C36E (50030) */ - 3343, /* C36F (50031) */ - 3343, /* C370 (50032) */ - 3343, /* C371 (50033) */ - 3343, /* C372 (50034) */ - 3343, /* C373 (50035) */ - 3343, /* C374 (50036) */ - 3343, /* C375 (50037) */ - 3343, /* C376 (50038) */ - 3343, /* C377 (50039) */ - 3343, /* C378 (50040) */ - 3343, /* C379 (50041) */ - 3343, /* C37A (50042) */ - 3343, /* C37B (50043) */ - 3343, /* C37C (50044) */ - 3343, /* C37D (50045) */ - 3343, /* C37E (50046) */ - 3343, /* C37F (50047) */ - 3343, /* C380 (50048) */ - 3343, /* C381 (50049) */ - 3343, /* C382 (50050) */ - 3343, /* C383 (50051) */ - 3343, /* C384 (50052) */ - 3343, /* C385 (50053) */ - 3343, /* C386 (50054) */ - 3343, /* C387 (50055) */ - 3343, /* C388 (50056) */ - 3343, /* C389 (50057) */ - 3343, /* C38A (50058) */ - 3343, /* C38B (50059) */ - 3343, /* C38C (50060) */ - 3343, /* C38D (50061) */ - 3343, /* C38E (50062) */ - 3343, /* C38F (50063) */ - 3343, /* C390 (50064) */ - 3343, /* C391 (50065) */ - 3343, /* C392 (50066) */ - 3343, /* C393 (50067) */ - 3343, /* C394 (50068) */ - 3343, /* C395 (50069) */ - 3343, /* C396 (50070) */ - 3343, /* C397 (50071) */ - 3343, /* C398 (50072) */ - 3343, /* C399 (50073) */ - 3343, /* C39A (50074) */ - 3343, /* C39B (50075) */ - 3343, /* C39C (50076) */ - 3343, /* C39D (50077) */ - 3343, /* C39E (50078) */ - 3343, /* C39F (50079) */ - 3343, /* C3A0 (50080) */ - 3343, /* C3A1 (50081) */ - 3343, /* C3A2 (50082) */ - 3343, /* C3A3 (50083) */ - 3343, /* C3A4 (50084) */ - 3343, /* C3A5 (50085) */ - 3343, /* C3A6 (50086) */ - 3343, /* C3A7 (50087) */ - 3343, /* C3A8 (50088) */ - 3343, /* C3A9 (50089) */ - 3343, /* C3AA (50090) */ - 3343, /* C3AB (50091) */ - 3343, /* C3AC (50092) */ - 3343, /* C3AD (50093) */ - 3343, /* C3AE (50094) */ - 3343, /* C3AF (50095) */ - 3343, /* C3B0 (50096) */ - 3343, /* C3B1 (50097) */ - 3343, /* C3B2 (50098) */ - 3343, /* C3B3 (50099) */ - 3343, /* C3B4 (50100) */ - 3343, /* C3B5 (50101) */ - 3343, /* C3B6 (50102) */ - 3343, /* C3B7 (50103) */ - 3343, /* C3B8 (50104) */ - 3343, /* C3B9 (50105) */ - 3343, /* C3BA (50106) */ - 3343, /* C3BB (50107) */ - 3343, /* C3BC (50108) */ - 3343, /* C3BD (50109) */ - 3343, /* C3BE (50110) */ - 3343, /* C3BF (50111) */ - 3343, /* C3C0 (50112) */ - 3343, /* C3C1 (50113) */ - 3343, /* C3C2 (50114) */ - 3343, /* C3C3 (50115) */ - 3343, /* C3C4 (50116) */ - 3343, /* C3C5 (50117) */ - 3343, /* C3C6 (50118) */ - 3343, /* C3C7 (50119) */ - 3343, /* C3C8 (50120) */ - 3343, /* C3C9 (50121) */ - 3343, /* C3CA (50122) */ - 3343, /* C3CB (50123) */ - 3343, /* C3CC (50124) */ - 3343, /* C3CD (50125) */ - 3343, /* C3CE (50126) */ - 3343, /* C3CF (50127) */ - 3343, /* C3D0 (50128) */ - 3343, /* C3D1 (50129) */ - 3343, /* C3D2 (50130) */ - 3343, /* C3D3 (50131) */ - 3343, /* C3D4 (50132) */ - 3343, /* C3D5 (50133) */ - 3343, /* C3D6 (50134) */ - 3343, /* C3D7 (50135) */ - 3343, /* C3D8 (50136) */ - 3343, /* C3D9 (50137) */ - 3343, /* C3DA (50138) */ - 3343, /* C3DB (50139) */ - 3343, /* C3DC (50140) */ - 3343, /* C3DD (50141) */ - 3343, /* C3DE (50142) */ - 3343, /* C3DF (50143) */ - 3343, /* C3E0 (50144) */ - 3343, /* C3E1 (50145) */ - 3343, /* C3E2 (50146) */ - 3343, /* C3E3 (50147) */ - 3343, /* C3E4 (50148) */ - 3343, /* C3E5 (50149) */ - 3343, /* C3E6 (50150) */ - 3343, /* C3E7 (50151) */ - 3343, /* C3E8 (50152) */ - 3343, /* C3E9 (50153) */ - 3343, /* C3EA (50154) */ - 3343, /* C3EB (50155) */ - 3343, /* C3EC (50156) */ - 3343, /* C3ED (50157) */ - 3343, /* C3EE (50158) */ - 3343, /* C3EF (50159) */ - 3343, /* C3F0 (50160) */ - 3343, /* C3F1 (50161) */ - 3343, /* C3F2 (50162) */ - 3343, /* C3F3 (50163) */ - 3343, /* C3F4 (50164) */ - 3343, /* C3F5 (50165) */ - 3343, /* C3F6 (50166) */ - 3343, /* C3F7 (50167) */ - 3343, /* C3F8 (50168) */ - 3343, /* C3F9 (50169) */ - 3343, /* C3FA (50170) */ - 3343, /* C3FB (50171) */ - 3343, /* C3FC (50172) */ - 3343, /* C3FD (50173) */ - 3343, /* C3FE (50174) */ - 3343, /* C3FF (50175) */ - 3343, /* C400 (50176) */ - 3343, /* C401 (50177) */ - 3343, /* C402 (50178) */ - 3343, /* C403 (50179) */ - 3343, /* C404 (50180) */ - 3343, /* C405 (50181) */ - 3343, /* C406 (50182) */ - 3343, /* C407 (50183) */ - 3343, /* C408 (50184) */ - 3343, /* C409 (50185) */ - 3343, /* C40A (50186) */ - 3343, /* C40B (50187) */ - 3343, /* C40C (50188) */ - 3343, /* C40D (50189) */ - 3343, /* C40E (50190) */ - 3343, /* C40F (50191) */ - 3343, /* C410 (50192) */ - 3343, /* C411 (50193) */ - 3343, /* C412 (50194) */ - 3343, /* C413 (50195) */ - 3343, /* C414 (50196) */ - 3343, /* C415 (50197) */ - 3343, /* C416 (50198) */ - 3343, /* C417 (50199) */ - 3343, /* C418 (50200) */ - 3343, /* C419 (50201) */ - 3343, /* C41A (50202) */ - 3343, /* C41B (50203) */ - 3343, /* C41C (50204) */ - 3343, /* C41D (50205) */ - 3343, /* C41E (50206) */ - 3343, /* C41F (50207) */ - 3343, /* C420 (50208) */ - 3343, /* C421 (50209) */ - 3343, /* C422 (50210) */ - 3343, /* C423 (50211) */ - 3343, /* C424 (50212) */ - 3343, /* C425 (50213) */ - 3343, /* C426 (50214) */ - 3343, /* C427 (50215) */ - 3343, /* C428 (50216) */ - 3343, /* C429 (50217) */ - 3343, /* C42A (50218) */ - 3343, /* C42B (50219) */ - 3343, /* C42C (50220) */ - 3343, /* C42D (50221) */ - 3343, /* C42E (50222) */ - 3343, /* C42F (50223) */ - 3343, /* C430 (50224) */ - 3343, /* C431 (50225) */ - 3343, /* C432 (50226) */ - 3343, /* C433 (50227) */ - 3343, /* C434 (50228) */ - 3343, /* C435 (50229) */ - 3343, /* C436 (50230) */ - 3343, /* C437 (50231) */ - 3343, /* C438 (50232) */ - 3343, /* C439 (50233) */ - 3343, /* C43A (50234) */ - 3343, /* C43B (50235) */ - 3343, /* C43C (50236) */ - 3343, /* C43D (50237) */ - 3343, /* C43E (50238) */ - 3343, /* C43F (50239) */ - 3343, /* C440 (50240) */ - 3343, /* C441 (50241) */ - 3343, /* C442 (50242) */ - 3343, /* C443 (50243) */ - 3343, /* C444 (50244) */ - 3343, /* C445 (50245) */ - 3343, /* C446 (50246) */ - 3343, /* C447 (50247) */ - 3343, /* C448 (50248) */ - 3343, /* C449 (50249) */ - 3343, /* C44A (50250) */ - 3343, /* C44B (50251) */ - 3343, /* C44C (50252) */ - 3343, /* C44D (50253) */ - 3343, /* C44E (50254) */ - 3343, /* C44F (50255) */ - 3343, /* C450 (50256) */ - 3343, /* C451 (50257) */ - 3343, /* C452 (50258) */ - 3343, /* C453 (50259) */ - 3343, /* C454 (50260) */ - 3343, /* C455 (50261) */ - 3343, /* C456 (50262) */ - 3343, /* C457 (50263) */ - 3343, /* C458 (50264) */ - 3343, /* C459 (50265) */ - 3343, /* C45A (50266) */ - 3343, /* C45B (50267) */ - 3343, /* C45C (50268) */ - 3343, /* C45D (50269) */ - 3343, /* C45E (50270) */ - 3343, /* C45F (50271) */ - 3343, /* C460 (50272) */ - 3343, /* C461 (50273) */ - 3343, /* C462 (50274) */ - 3343, /* C463 (50275) */ - 3343, /* C464 (50276) */ - 3343, /* C465 (50277) */ - 3343, /* C466 (50278) */ - 3343, /* C467 (50279) */ - 3343, /* C468 (50280) */ - 3343, /* C469 (50281) */ - 3343, /* C46A (50282) */ - 3343, /* C46B (50283) */ - 3343, /* C46C (50284) */ - 3343, /* C46D (50285) */ - 3343, /* C46E (50286) */ - 3343, /* C46F (50287) */ - 3343, /* C470 (50288) */ - 3343, /* C471 (50289) */ - 3343, /* C472 (50290) */ - 3343, /* C473 (50291) */ - 3343, /* C474 (50292) */ - 3343, /* C475 (50293) */ - 3343, /* C476 (50294) */ - 3343, /* C477 (50295) */ - 3343, /* C478 (50296) */ - 3343, /* C479 (50297) */ - 3343, /* C47A (50298) */ - 3343, /* C47B (50299) */ - 3343, /* C47C (50300) */ - 3343, /* C47D (50301) */ - 3343, /* C47E (50302) */ - 3343, /* C47F (50303) */ - 3343, /* C480 (50304) */ - 3343, /* C481 (50305) */ - 3343, /* C482 (50306) */ - 3343, /* C483 (50307) */ - 3343, /* C484 (50308) */ - 3343, /* C485 (50309) */ - 3343, /* C486 (50310) */ - 3343, /* C487 (50311) */ - 3343, /* C488 (50312) */ - 3343, /* C489 (50313) */ - 3343, /* C48A (50314) */ - 3343, /* C48B (50315) */ - 3343, /* C48C (50316) */ - 3343, /* C48D (50317) */ - 3343, /* C48E (50318) */ - 3343, /* C48F (50319) */ - 3343, /* C490 (50320) */ - 3343, /* C491 (50321) */ - 3343, /* C492 (50322) */ - 3343, /* C493 (50323) */ - 3343, /* C494 (50324) */ - 3343, /* C495 (50325) */ - 3343, /* C496 (50326) */ - 3343, /* C497 (50327) */ - 3343, /* C498 (50328) */ - 3343, /* C499 (50329) */ - 3343, /* C49A (50330) */ - 3343, /* C49B (50331) */ - 3343, /* C49C (50332) */ - 3343, /* C49D (50333) */ - 3343, /* C49E (50334) */ - 3343, /* C49F (50335) */ - 3343, /* C4A0 (50336) */ - 3343, /* C4A1 (50337) */ - 3343, /* C4A2 (50338) */ - 3343, /* C4A3 (50339) */ - 3343, /* C4A4 (50340) */ - 3343, /* C4A5 (50341) */ - 3343, /* C4A6 (50342) */ - 3343, /* C4A7 (50343) */ - 3343, /* C4A8 (50344) */ - 3343, /* C4A9 (50345) */ - 3343, /* C4AA (50346) */ - 3343, /* C4AB (50347) */ - 3343, /* C4AC (50348) */ - 3343, /* C4AD (50349) */ - 3343, /* C4AE (50350) */ - 3343, /* C4AF (50351) */ - 3343, /* C4B0 (50352) */ - 3343, /* C4B1 (50353) */ - 3343, /* C4B2 (50354) */ - 3343, /* C4B3 (50355) */ - 3343, /* C4B4 (50356) */ - 3343, /* C4B5 (50357) */ - 3343, /* C4B6 (50358) */ - 3343, /* C4B7 (50359) */ - 3343, /* C4B8 (50360) */ - 3343, /* C4B9 (50361) */ - 3343, /* C4BA (50362) */ - 3343, /* C4BB (50363) */ - 3343, /* C4BC (50364) */ - 3343, /* C4BD (50365) */ - 3343, /* C4BE (50366) */ - 3343, /* C4BF (50367) */ - 3343, /* C4C0 (50368) */ - 3343, /* C4C1 (50369) */ - 3343, /* C4C2 (50370) */ - 3343, /* C4C3 (50371) */ - 3343, /* C4C4 (50372) */ - 3343, /* C4C5 (50373) */ - 3343, /* C4C6 (50374) */ - 3343, /* C4C7 (50375) */ - 3343, /* C4C8 (50376) */ - 3343, /* C4C9 (50377) */ - 3343, /* C4CA (50378) */ - 3343, /* C4CB (50379) */ - 3343, /* C4CC (50380) */ - 3343, /* C4CD (50381) */ - 3343, /* C4CE (50382) */ - 3343, /* C4CF (50383) */ - 3343, /* C4D0 (50384) */ - 3343, /* C4D1 (50385) */ - 3343, /* C4D2 (50386) */ - 3343, /* C4D3 (50387) */ - 3343, /* C4D4 (50388) */ - 3343, /* C4D5 (50389) */ - 3343, /* C4D6 (50390) */ - 3343, /* C4D7 (50391) */ - 3343, /* C4D8 (50392) */ - 3343, /* C4D9 (50393) */ - 3343, /* C4DA (50394) */ - 3343, /* C4DB (50395) */ - 3343, /* C4DC (50396) */ - 3343, /* C4DD (50397) */ - 3343, /* C4DE (50398) */ - 3343, /* C4DF (50399) */ - 3343, /* C4E0 (50400) */ - 3343, /* C4E1 (50401) */ - 3343, /* C4E2 (50402) */ - 3343, /* C4E3 (50403) */ - 3343, /* C4E4 (50404) */ - 3343, /* C4E5 (50405) */ - 3343, /* C4E6 (50406) */ - 3343, /* C4E7 (50407) */ - 3343, /* C4E8 (50408) */ - 3343, /* C4E9 (50409) */ - 3343, /* C4EA (50410) */ - 3343, /* C4EB (50411) */ - 3343, /* C4EC (50412) */ - 3343, /* C4ED (50413) */ - 3343, /* C4EE (50414) */ - 3343, /* C4EF (50415) */ - 3343, /* C4F0 (50416) */ - 3343, /* C4F1 (50417) */ - 3343, /* C4F2 (50418) */ - 3343, /* C4F3 (50419) */ - 3343, /* C4F4 (50420) */ - 3343, /* C4F5 (50421) */ - 3343, /* C4F6 (50422) */ - 3343, /* C4F7 (50423) */ - 3343, /* C4F8 (50424) */ - 3343, /* C4F9 (50425) */ - 3343, /* C4FA (50426) */ - 3343, /* C4FB (50427) */ - 3343, /* C4FC (50428) */ - 3343, /* C4FD (50429) */ - 3343, /* C4FE (50430) */ - 3343, /* C4FF (50431) */ - 3343, /* C500 (50432) */ - 3343, /* C501 (50433) */ - 3343, /* C502 (50434) */ - 3343, /* C503 (50435) */ - 3343, /* C504 (50436) */ - 3343, /* C505 (50437) */ - 3343, /* C506 (50438) */ - 3343, /* C507 (50439) */ - 3343, /* C508 (50440) */ - 3343, /* C509 (50441) */ - 3343, /* C50A (50442) */ - 3343, /* C50B (50443) */ - 3343, /* C50C (50444) */ - 3343, /* C50D (50445) */ - 3343, /* C50E (50446) */ - 3343, /* C50F (50447) */ - 3343, /* C510 (50448) */ - 3343, /* C511 (50449) */ - 3343, /* C512 (50450) */ - 3343, /* C513 (50451) */ - 3343, /* C514 (50452) */ - 3343, /* C515 (50453) */ - 3343, /* C516 (50454) */ - 3343, /* C517 (50455) */ - 3343, /* C518 (50456) */ - 3343, /* C519 (50457) */ - 3343, /* C51A (50458) */ - 3343, /* C51B (50459) */ - 3343, /* C51C (50460) */ - 3343, /* C51D (50461) */ - 3343, /* C51E (50462) */ - 3343, /* C51F (50463) */ - 3343, /* C520 (50464) */ - 3343, /* C521 (50465) */ - 3343, /* C522 (50466) */ - 3343, /* C523 (50467) */ - 3343, /* C524 (50468) */ - 3343, /* C525 (50469) */ - 3343, /* C526 (50470) */ - 3343, /* C527 (50471) */ - 3343, /* C528 (50472) */ - 3343, /* C529 (50473) */ - 3343, /* C52A (50474) */ - 3343, /* C52B (50475) */ - 3343, /* C52C (50476) */ - 3343, /* C52D (50477) */ - 3343, /* C52E (50478) */ - 3343, /* C52F (50479) */ - 3343, /* C530 (50480) */ - 3343, /* C531 (50481) */ - 3343, /* C532 (50482) */ - 3343, /* C533 (50483) */ - 3343, /* C534 (50484) */ - 3343, /* C535 (50485) */ - 3343, /* C536 (50486) */ - 3343, /* C537 (50487) */ - 3343, /* C538 (50488) */ - 3343, /* C539 (50489) */ - 3343, /* C53A (50490) */ - 3343, /* C53B (50491) */ - 3343, /* C53C (50492) */ - 3343, /* C53D (50493) */ - 3343, /* C53E (50494) */ - 3343, /* C53F (50495) */ - 3343, /* C540 (50496) */ - 3343, /* C541 (50497) */ - 3343, /* C542 (50498) */ - 3343, /* C543 (50499) */ - 3343, /* C544 (50500) */ - 3343, /* C545 (50501) */ - 3343, /* C546 (50502) */ - 3343, /* C547 (50503) */ - 3343, /* C548 (50504) */ - 3343, /* C549 (50505) */ - 3343, /* C54A (50506) */ - 3343, /* C54B (50507) */ - 3343, /* C54C (50508) */ - 3343, /* C54D (50509) */ - 3343, /* C54E (50510) */ - 3343, /* C54F (50511) */ - 3343, /* C550 (50512) */ - 3343, /* C551 (50513) */ - 3343, /* C552 (50514) */ - 3343, /* C553 (50515) */ - 3343, /* C554 (50516) */ - 3343, /* C555 (50517) */ - 3343, /* C556 (50518) */ - 3343, /* C557 (50519) */ - 3343, /* C558 (50520) */ - 3343, /* C559 (50521) */ - 3343, /* C55A (50522) */ - 3343, /* C55B (50523) */ - 3343, /* C55C (50524) */ - 3343, /* C55D (50525) */ - 3343, /* C55E (50526) */ - 3343, /* C55F (50527) */ - 3343, /* C560 (50528) */ - 3343, /* C561 (50529) */ - 3343, /* C562 (50530) */ - 3343, /* C563 (50531) */ - 3343, /* C564 (50532) */ - 3343, /* C565 (50533) */ - 3343, /* C566 (50534) */ - 3343, /* C567 (50535) */ - 3343, /* C568 (50536) */ - 3343, /* C569 (50537) */ - 3343, /* C56A (50538) */ - 3343, /* C56B (50539) */ - 3343, /* C56C (50540) */ - 3343, /* C56D (50541) */ - 3343, /* C56E (50542) */ - 3343, /* C56F (50543) */ - 3343, /* C570 (50544) */ - 3343, /* C571 (50545) */ - 3343, /* C572 (50546) */ - 3343, /* C573 (50547) */ - 3343, /* C574 (50548) */ - 3343, /* C575 (50549) */ - 3343, /* C576 (50550) */ - 3343, /* C577 (50551) */ - 3343, /* C578 (50552) */ - 3343, /* C579 (50553) */ - 3343, /* C57A (50554) */ - 3343, /* C57B (50555) */ - 3343, /* C57C (50556) */ - 3343, /* C57D (50557) */ - 3343, /* C57E (50558) */ - 3343, /* C57F (50559) */ - 3343, /* C580 (50560) */ - 3343, /* C581 (50561) */ - 3343, /* C582 (50562) */ - 3343, /* C583 (50563) */ - 3343, /* C584 (50564) */ - 3343, /* C585 (50565) */ - 3343, /* C586 (50566) */ - 3343, /* C587 (50567) */ - 3343, /* C588 (50568) */ - 3343, /* C589 (50569) */ - 3343, /* C58A (50570) */ - 3343, /* C58B (50571) */ - 3343, /* C58C (50572) */ - 3343, /* C58D (50573) */ - 3343, /* C58E (50574) */ - 3343, /* C58F (50575) */ - 3343, /* C590 (50576) */ - 3343, /* C591 (50577) */ - 3343, /* C592 (50578) */ - 3343, /* C593 (50579) */ - 3343, /* C594 (50580) */ - 3343, /* C595 (50581) */ - 3343, /* C596 (50582) */ - 3343, /* C597 (50583) */ - 3343, /* C598 (50584) */ - 3343, /* C599 (50585) */ - 3343, /* C59A (50586) */ - 3343, /* C59B (50587) */ - 3343, /* C59C (50588) */ - 3343, /* C59D (50589) */ - 3343, /* C59E (50590) */ - 3343, /* C59F (50591) */ - 3343, /* C5A0 (50592) */ - 3343, /* C5A1 (50593) */ - 3343, /* C5A2 (50594) */ - 3343, /* C5A3 (50595) */ - 3343, /* C5A4 (50596) */ - 3343, /* C5A5 (50597) */ - 3343, /* C5A6 (50598) */ - 3343, /* C5A7 (50599) */ - 3343, /* C5A8 (50600) */ - 3343, /* C5A9 (50601) */ - 3343, /* C5AA (50602) */ - 3343, /* C5AB (50603) */ - 3343, /* C5AC (50604) */ - 3343, /* C5AD (50605) */ - 3343, /* C5AE (50606) */ - 3343, /* C5AF (50607) */ - 3343, /* C5B0 (50608) */ - 3343, /* C5B1 (50609) */ - 3343, /* C5B2 (50610) */ - 3343, /* C5B3 (50611) */ - 3343, /* C5B4 (50612) */ - 3343, /* C5B5 (50613) */ - 3343, /* C5B6 (50614) */ - 3343, /* C5B7 (50615) */ - 3343, /* C5B8 (50616) */ - 3343, /* C5B9 (50617) */ - 3343, /* C5BA (50618) */ - 3343, /* C5BB (50619) */ - 3343, /* C5BC (50620) */ - 3343, /* C5BD (50621) */ - 3343, /* C5BE (50622) */ - 3343, /* C5BF (50623) */ - 3343, /* C5C0 (50624) */ - 3343, /* C5C1 (50625) */ - 3343, /* C5C2 (50626) */ - 3343, /* C5C3 (50627) */ - 3343, /* C5C4 (50628) */ - 3343, /* C5C5 (50629) */ - 3343, /* C5C6 (50630) */ - 3343, /* C5C7 (50631) */ - 3343, /* C5C8 (50632) */ - 3343, /* C5C9 (50633) */ - 3343, /* C5CA (50634) */ - 3343, /* C5CB (50635) */ - 3343, /* C5CC (50636) */ - 3343, /* C5CD (50637) */ - 3343, /* C5CE (50638) */ - 3343, /* C5CF (50639) */ - 3343, /* C5D0 (50640) */ - 3343, /* C5D1 (50641) */ - 3343, /* C5D2 (50642) */ - 3343, /* C5D3 (50643) */ - 3343, /* C5D4 (50644) */ - 3343, /* C5D5 (50645) */ - 3343, /* C5D6 (50646) */ - 3343, /* C5D7 (50647) */ - 3343, /* C5D8 (50648) */ - 3343, /* C5D9 (50649) */ - 3343, /* C5DA (50650) */ - 3343, /* C5DB (50651) */ - 3343, /* C5DC (50652) */ - 3343, /* C5DD (50653) */ - 3343, /* C5DE (50654) */ - 3343, /* C5DF (50655) */ - 3343, /* C5E0 (50656) */ - 3343, /* C5E1 (50657) */ - 3343, /* C5E2 (50658) */ - 3343, /* C5E3 (50659) */ - 3343, /* C5E4 (50660) */ - 3343, /* C5E5 (50661) */ - 3343, /* C5E6 (50662) */ - 3343, /* C5E7 (50663) */ - 3343, /* C5E8 (50664) */ - 3343, /* C5E9 (50665) */ - 3343, /* C5EA (50666) */ - 3343, /* C5EB (50667) */ - 3343, /* C5EC (50668) */ - 3343, /* C5ED (50669) */ - 3343, /* C5EE (50670) */ - 3343, /* C5EF (50671) */ - 3343, /* C5F0 (50672) */ - 3343, /* C5F1 (50673) */ - 3343, /* C5F2 (50674) */ - 3343, /* C5F3 (50675) */ - 3343, /* C5F4 (50676) */ - 3343, /* C5F5 (50677) */ - 3343, /* C5F6 (50678) */ - 3343, /* C5F7 (50679) */ - 3343, /* C5F8 (50680) */ - 3343, /* C5F9 (50681) */ - 3343, /* C5FA (50682) */ - 3343, /* C5FB (50683) */ - 3343, /* C5FC (50684) */ - 3343, /* C5FD (50685) */ - 3343, /* C5FE (50686) */ - 3343, /* C5FF (50687) */ - 3343, /* C600 (50688) */ - 3343, /* C601 (50689) */ - 3343, /* C602 (50690) */ - 3343, /* C603 (50691) */ - 3343, /* C604 (50692) */ - 3343, /* C605 (50693) */ - 3343, /* C606 (50694) */ - 3343, /* C607 (50695) */ - 3343, /* C608 (50696) */ - 3343, /* C609 (50697) */ - 3343, /* C60A (50698) */ - 3343, /* C60B (50699) */ - 3343, /* C60C (50700) */ - 3343, /* C60D (50701) */ - 3343, /* C60E (50702) */ - 3343, /* C60F (50703) */ - 3343, /* C610 (50704) */ - 3343, /* C611 (50705) */ - 3343, /* C612 (50706) */ - 3343, /* C613 (50707) */ - 3343, /* C614 (50708) */ - 3343, /* C615 (50709) */ - 3343, /* C616 (50710) */ - 3343, /* C617 (50711) */ - 3343, /* C618 (50712) */ - 3343, /* C619 (50713) */ - 3343, /* C61A (50714) */ - 3343, /* C61B (50715) */ - 3343, /* C61C (50716) */ - 3343, /* C61D (50717) */ - 3343, /* C61E (50718) */ - 3343, /* C61F (50719) */ - 3343, /* C620 (50720) */ - 3343, /* C621 (50721) */ - 3343, /* C622 (50722) */ - 3343, /* C623 (50723) */ - 3343, /* C624 (50724) */ - 3343, /* C625 (50725) */ - 3343, /* C626 (50726) */ - 3343, /* C627 (50727) */ - 3343, /* C628 (50728) */ - 3343, /* C629 (50729) */ - 3343, /* C62A (50730) */ - 3343, /* C62B (50731) */ - 3343, /* C62C (50732) */ - 3343, /* C62D (50733) */ - 3343, /* C62E (50734) */ - 3343, /* C62F (50735) */ - 3343, /* C630 (50736) */ - 3343, /* C631 (50737) */ - 3343, /* C632 (50738) */ - 3343, /* C633 (50739) */ - 3343, /* C634 (50740) */ - 3343, /* C635 (50741) */ - 3343, /* C636 (50742) */ - 3343, /* C637 (50743) */ - 3343, /* C638 (50744) */ - 3343, /* C639 (50745) */ - 3343, /* C63A (50746) */ - 3343, /* C63B (50747) */ - 3343, /* C63C (50748) */ - 3343, /* C63D (50749) */ - 3343, /* C63E (50750) */ - 3343, /* C63F (50751) */ - 3343, /* C640 (50752) */ - 3343, /* C641 (50753) */ - 3343, /* C642 (50754) */ - 3343, /* C643 (50755) */ - 3343, /* C644 (50756) */ - 3343, /* C645 (50757) */ - 3343, /* C646 (50758) */ - 3343, /* C647 (50759) */ - 3343, /* C648 (50760) */ - 3343, /* C649 (50761) */ - 3343, /* C64A (50762) */ - 3343, /* C64B (50763) */ - 3343, /* C64C (50764) */ - 3343, /* C64D (50765) */ - 3343, /* C64E (50766) */ - 3343, /* C64F (50767) */ - 3343, /* C650 (50768) */ - 3343, /* C651 (50769) */ - 3343, /* C652 (50770) */ - 3343, /* C653 (50771) */ - 3343, /* C654 (50772) */ - 3343, /* C655 (50773) */ - 3343, /* C656 (50774) */ - 3343, /* C657 (50775) */ - 3343, /* C658 (50776) */ - 3343, /* C659 (50777) */ - 3343, /* C65A (50778) */ - 3343, /* C65B (50779) */ - 3343, /* C65C (50780) */ - 3343, /* C65D (50781) */ - 3343, /* C65E (50782) */ - 3343, /* C65F (50783) */ - 3343, /* C660 (50784) */ - 3343, /* C661 (50785) */ - 3343, /* C662 (50786) */ - 3343, /* C663 (50787) */ - 3343, /* C664 (50788) */ - 3343, /* C665 (50789) */ - 3343, /* C666 (50790) */ - 3343, /* C667 (50791) */ - 3343, /* C668 (50792) */ - 3343, /* C669 (50793) */ - 3343, /* C66A (50794) */ - 3343, /* C66B (50795) */ - 3343, /* C66C (50796) */ - 3343, /* C66D (50797) */ - 3343, /* C66E (50798) */ - 3343, /* C66F (50799) */ - 3343, /* C670 (50800) */ - 3343, /* C671 (50801) */ - 3343, /* C672 (50802) */ - 3343, /* C673 (50803) */ - 3343, /* C674 (50804) */ - 3343, /* C675 (50805) */ - 3343, /* C676 (50806) */ - 3343, /* C677 (50807) */ - 3343, /* C678 (50808) */ - 3343, /* C679 (50809) */ - 3343, /* C67A (50810) */ - 3343, /* C67B (50811) */ - 3343, /* C67C (50812) */ - 3343, /* C67D (50813) */ - 3343, /* C67E (50814) */ - 3343, /* C67F (50815) */ - 3343, /* C680 (50816) */ - 3343, /* C681 (50817) */ - 3343, /* C682 (50818) */ - 3343, /* C683 (50819) */ - 3343, /* C684 (50820) */ - 3343, /* C685 (50821) */ - 3343, /* C686 (50822) */ - 3343, /* C687 (50823) */ - 3343, /* C688 (50824) */ - 3343, /* C689 (50825) */ - 3343, /* C68A (50826) */ - 3343, /* C68B (50827) */ - 3343, /* C68C (50828) */ - 3343, /* C68D (50829) */ - 3343, /* C68E (50830) */ - 3343, /* C68F (50831) */ - 3343, /* C690 (50832) */ - 3343, /* C691 (50833) */ - 3343, /* C692 (50834) */ - 3343, /* C693 (50835) */ - 3343, /* C694 (50836) */ - 3343, /* C695 (50837) */ - 3343, /* C696 (50838) */ - 3343, /* C697 (50839) */ - 3343, /* C698 (50840) */ - 3343, /* C699 (50841) */ - 3343, /* C69A (50842) */ - 3343, /* C69B (50843) */ - 3343, /* C69C (50844) */ - 3343, /* C69D (50845) */ - 3343, /* C69E (50846) */ - 3343, /* C69F (50847) */ - 3343, /* C6A0 (50848) */ - 3343, /* C6A1 (50849) */ - 3343, /* C6A2 (50850) */ - 3343, /* C6A3 (50851) */ - 3343, /* C6A4 (50852) */ - 3343, /* C6A5 (50853) */ - 3343, /* C6A6 (50854) */ - 3343, /* C6A7 (50855) */ - 3343, /* C6A8 (50856) */ - 3343, /* C6A9 (50857) */ - 3343, /* C6AA (50858) */ - 3343, /* C6AB (50859) */ - 3343, /* C6AC (50860) */ - 3343, /* C6AD (50861) */ - 3343, /* C6AE (50862) */ - 3343, /* C6AF (50863) */ - 3343, /* C6B0 (50864) */ - 3343, /* C6B1 (50865) */ - 3343, /* C6B2 (50866) */ - 3343, /* C6B3 (50867) */ - 3343, /* C6B4 (50868) */ - 3343, /* C6B5 (50869) */ - 3343, /* C6B6 (50870) */ - 3343, /* C6B7 (50871) */ - 3343, /* C6B8 (50872) */ - 3343, /* C6B9 (50873) */ - 3343, /* C6BA (50874) */ - 3343, /* C6BB (50875) */ - 3343, /* C6BC (50876) */ - 3343, /* C6BD (50877) */ - 3343, /* C6BE (50878) */ - 3343, /* C6BF (50879) */ - 3343, /* C6C0 (50880) */ - 3343, /* C6C1 (50881) */ - 3343, /* C6C2 (50882) */ - 3343, /* C6C3 (50883) */ - 3343, /* C6C4 (50884) */ - 3343, /* C6C5 (50885) */ - 3343, /* C6C6 (50886) */ - 3343, /* C6C7 (50887) */ - 3343, /* C6C8 (50888) */ - 3343, /* C6C9 (50889) */ - 3343, /* C6CA (50890) */ - 3343, /* C6CB (50891) */ - 3343, /* C6CC (50892) */ - 3343, /* C6CD (50893) */ - 3343, /* C6CE (50894) */ - 3343, /* C6CF (50895) */ - 3343, /* C6D0 (50896) */ - 3343, /* C6D1 (50897) */ - 3343, /* C6D2 (50898) */ - 3343, /* C6D3 (50899) */ - 3343, /* C6D4 (50900) */ - 3343, /* C6D5 (50901) */ - 3343, /* C6D6 (50902) */ - 3343, /* C6D7 (50903) */ - 3343, /* C6D8 (50904) */ - 3343, /* C6D9 (50905) */ - 3343, /* C6DA (50906) */ - 3343, /* C6DB (50907) */ - 3343, /* C6DC (50908) */ - 3343, /* C6DD (50909) */ - 3343, /* C6DE (50910) */ - 3343, /* C6DF (50911) */ - 3343, /* C6E0 (50912) */ - 3343, /* C6E1 (50913) */ - 3343, /* C6E2 (50914) */ - 3343, /* C6E3 (50915) */ - 3343, /* C6E4 (50916) */ - 3343, /* C6E5 (50917) */ - 3343, /* C6E6 (50918) */ - 3343, /* C6E7 (50919) */ - 3343, /* C6E8 (50920) */ - 3343, /* C6E9 (50921) */ - 3343, /* C6EA (50922) */ - 3343, /* C6EB (50923) */ - 3343, /* C6EC (50924) */ - 3343, /* C6ED (50925) */ - 3343, /* C6EE (50926) */ - 3343, /* C6EF (50927) */ - 3343, /* C6F0 (50928) */ - 3343, /* C6F1 (50929) */ - 3343, /* C6F2 (50930) */ - 3343, /* C6F3 (50931) */ - 3343, /* C6F4 (50932) */ - 3343, /* C6F5 (50933) */ - 3343, /* C6F6 (50934) */ - 3343, /* C6F7 (50935) */ - 3343, /* C6F8 (50936) */ - 3343, /* C6F9 (50937) */ - 3343, /* C6FA (50938) */ - 3343, /* C6FB (50939) */ - 3343, /* C6FC (50940) */ - 3343, /* C6FD (50941) */ - 3343, /* C6FE (50942) */ - 3343, /* C6FF (50943) */ - 3343, /* C700 (50944) */ - 3343, /* C701 (50945) */ - 3343, /* C702 (50946) */ - 3343, /* C703 (50947) */ - 3343, /* C704 (50948) */ - 3343, /* C705 (50949) */ - 3343, /* C706 (50950) */ - 3343, /* C707 (50951) */ - 3343, /* C708 (50952) */ - 3343, /* C709 (50953) */ - 3343, /* C70A (50954) */ - 3343, /* C70B (50955) */ - 3343, /* C70C (50956) */ - 3343, /* C70D (50957) */ - 3343, /* C70E (50958) */ - 3343, /* C70F (50959) */ - 3343, /* C710 (50960) */ - 3343, /* C711 (50961) */ - 3343, /* C712 (50962) */ - 3343, /* C713 (50963) */ - 3343, /* C714 (50964) */ - 3343, /* C715 (50965) */ - 3343, /* C716 (50966) */ - 3343, /* C717 (50967) */ - 3343, /* C718 (50968) */ - 3343, /* C719 (50969) */ - 3343, /* C71A (50970) */ - 3343, /* C71B (50971) */ - 3343, /* C71C (50972) */ - 3343, /* C71D (50973) */ - 3343, /* C71E (50974) */ - 3343, /* C71F (50975) */ - 3343, /* C720 (50976) */ - 3343, /* C721 (50977) */ - 3343, /* C722 (50978) */ - 3343, /* C723 (50979) */ - 3343, /* C724 (50980) */ - 3343, /* C725 (50981) */ - 3343, /* C726 (50982) */ - 3343, /* C727 (50983) */ - 3343, /* C728 (50984) */ - 3343, /* C729 (50985) */ - 3343, /* C72A (50986) */ - 3343, /* C72B (50987) */ - 3343, /* C72C (50988) */ - 3343, /* C72D (50989) */ - 3343, /* C72E (50990) */ - 3343, /* C72F (50991) */ - 3343, /* C730 (50992) */ - 3343, /* C731 (50993) */ - 3343, /* C732 (50994) */ - 3343, /* C733 (50995) */ - 3343, /* C734 (50996) */ - 3343, /* C735 (50997) */ - 3343, /* C736 (50998) */ - 3343, /* C737 (50999) */ - 3343, /* C738 (51000) */ - 3343, /* C739 (51001) */ - 3343, /* C73A (51002) */ - 3343, /* C73B (51003) */ - 3343, /* C73C (51004) */ - 3343, /* C73D (51005) */ - 3343, /* C73E (51006) */ - 3343, /* C73F (51007) */ - 3343, /* C740 (51008) */ - 3343, /* C741 (51009) */ - 3343, /* C742 (51010) */ - 3343, /* C743 (51011) */ - 3343, /* C744 (51012) */ - 3343, /* C745 (51013) */ - 3343, /* C746 (51014) */ - 3343, /* C747 (51015) */ - 3343, /* C748 (51016) */ - 3343, /* C749 (51017) */ - 3343, /* C74A (51018) */ - 3343, /* C74B (51019) */ - 3343, /* C74C (51020) */ - 3343, /* C74D (51021) */ - 3343, /* C74E (51022) */ - 3343, /* C74F (51023) */ - 3343, /* C750 (51024) */ - 3343, /* C751 (51025) */ - 3343, /* C752 (51026) */ - 3343, /* C753 (51027) */ - 3343, /* C754 (51028) */ - 3343, /* C755 (51029) */ - 3343, /* C756 (51030) */ - 3343, /* C757 (51031) */ - 3343, /* C758 (51032) */ - 3343, /* C759 (51033) */ - 3343, /* C75A (51034) */ - 3343, /* C75B (51035) */ - 3343, /* C75C (51036) */ - 3343, /* C75D (51037) */ - 3343, /* C75E (51038) */ - 3343, /* C75F (51039) */ - 3343, /* C760 (51040) */ - 3343, /* C761 (51041) */ - 3343, /* C762 (51042) */ - 3343, /* C763 (51043) */ - 3343, /* C764 (51044) */ - 3343, /* C765 (51045) */ - 3343, /* C766 (51046) */ - 3343, /* C767 (51047) */ - 3343, /* C768 (51048) */ - 3343, /* C769 (51049) */ - 3343, /* C76A (51050) */ - 3343, /* C76B (51051) */ - 3343, /* C76C (51052) */ - 3343, /* C76D (51053) */ - 3343, /* C76E (51054) */ - 3343, /* C76F (51055) */ - 3343, /* C770 (51056) */ - 3343, /* C771 (51057) */ - 3343, /* C772 (51058) */ - 3343, /* C773 (51059) */ - 3343, /* C774 (51060) */ - 3343, /* C775 (51061) */ - 3343, /* C776 (51062) */ - 3343, /* C777 (51063) */ - 3343, /* C778 (51064) */ - 3343, /* C779 (51065) */ - 3343, /* C77A (51066) */ - 3343, /* C77B (51067) */ - 3343, /* C77C (51068) */ - 3343, /* C77D (51069) */ - 3343, /* C77E (51070) */ - 3343, /* C77F (51071) */ - 3343, /* C780 (51072) */ - 3343, /* C781 (51073) */ - 3343, /* C782 (51074) */ - 3343, /* C783 (51075) */ - 3343, /* C784 (51076) */ - 3343, /* C785 (51077) */ - 3343, /* C786 (51078) */ - 3343, /* C787 (51079) */ - 3343, /* C788 (51080) */ - 3343, /* C789 (51081) */ - 3343, /* C78A (51082) */ - 3343, /* C78B (51083) */ - 3343, /* C78C (51084) */ - 3343, /* C78D (51085) */ - 3343, /* C78E (51086) */ - 3343, /* C78F (51087) */ - 3343, /* C790 (51088) */ - 3343, /* C791 (51089) */ - 3343, /* C792 (51090) */ - 3343, /* C793 (51091) */ - 3343, /* C794 (51092) */ - 3343, /* C795 (51093) */ - 3343, /* C796 (51094) */ - 3343, /* C797 (51095) */ - 3343, /* C798 (51096) */ - 3343, /* C799 (51097) */ - 3343, /* C79A (51098) */ - 3343, /* C79B (51099) */ - 3343, /* C79C (51100) */ - 3343, /* C79D (51101) */ - 3343, /* C79E (51102) */ - 3343, /* C79F (51103) */ - 3343, /* C7A0 (51104) */ - 3343, /* C7A1 (51105) */ - 3343, /* C7A2 (51106) */ - 3343, /* C7A3 (51107) */ - 3343, /* C7A4 (51108) */ - 3343, /* C7A5 (51109) */ - 3343, /* C7A6 (51110) */ - 3343, /* C7A7 (51111) */ - 3343, /* C7A8 (51112) */ - 3343, /* C7A9 (51113) */ - 3343, /* C7AA (51114) */ - 3343, /* C7AB (51115) */ - 3343, /* C7AC (51116) */ - 3343, /* C7AD (51117) */ - 3343, /* C7AE (51118) */ - 3343, /* C7AF (51119) */ - 3343, /* C7B0 (51120) */ - 3343, /* C7B1 (51121) */ - 3343, /* C7B2 (51122) */ - 3343, /* C7B3 (51123) */ - 3343, /* C7B4 (51124) */ - 3343, /* C7B5 (51125) */ - 3343, /* C7B6 (51126) */ - 3343, /* C7B7 (51127) */ - 3343, /* C7B8 (51128) */ - 3343, /* C7B9 (51129) */ - 3343, /* C7BA (51130) */ - 3343, /* C7BB (51131) */ - 3343, /* C7BC (51132) */ - 3343, /* C7BD (51133) */ - 3343, /* C7BE (51134) */ - 3343, /* C7BF (51135) */ - 3343, /* C7C0 (51136) */ - 3343, /* C7C1 (51137) */ - 3343, /* C7C2 (51138) */ - 3343, /* C7C3 (51139) */ - 3343, /* C7C4 (51140) */ - 3343, /* C7C5 (51141) */ - 3343, /* C7C6 (51142) */ - 3343, /* C7C7 (51143) */ - 3343, /* C7C8 (51144) */ - 3343, /* C7C9 (51145) */ - 3343, /* C7CA (51146) */ - 3343, /* C7CB (51147) */ - 3343, /* C7CC (51148) */ - 3343, /* C7CD (51149) */ - 3343, /* C7CE (51150) */ - 3343, /* C7CF (51151) */ - 3343, /* C7D0 (51152) */ - 3343, /* C7D1 (51153) */ - 3343, /* C7D2 (51154) */ - 3343, /* C7D3 (51155) */ - 3343, /* C7D4 (51156) */ - 3343, /* C7D5 (51157) */ - 3343, /* C7D6 (51158) */ - 3343, /* C7D7 (51159) */ - 3343, /* C7D8 (51160) */ - 3343, /* C7D9 (51161) */ - 3343, /* C7DA (51162) */ - 3343, /* C7DB (51163) */ - 3343, /* C7DC (51164) */ - 3343, /* C7DD (51165) */ - 3343, /* C7DE (51166) */ - 3343, /* C7DF (51167) */ - 3343, /* C7E0 (51168) */ - 3343, /* C7E1 (51169) */ - 3343, /* C7E2 (51170) */ - 3343, /* C7E3 (51171) */ - 3343, /* C7E4 (51172) */ - 3343, /* C7E5 (51173) */ - 3343, /* C7E6 (51174) */ - 3343, /* C7E7 (51175) */ - 3343, /* C7E8 (51176) */ - 3343, /* C7E9 (51177) */ - 3343, /* C7EA (51178) */ - 3343, /* C7EB (51179) */ - 3343, /* C7EC (51180) */ - 3343, /* C7ED (51181) */ - 3343, /* C7EE (51182) */ - 3343, /* C7EF (51183) */ - 3343, /* C7F0 (51184) */ - 3343, /* C7F1 (51185) */ - 3343, /* C7F2 (51186) */ - 3343, /* C7F3 (51187) */ - 3343, /* C7F4 (51188) */ - 3343, /* C7F5 (51189) */ - 3343, /* C7F6 (51190) */ - 3343, /* C7F7 (51191) */ - 3343, /* C7F8 (51192) */ - 3343, /* C7F9 (51193) */ - 3343, /* C7FA (51194) */ - 3343, /* C7FB (51195) */ - 3343, /* C7FC (51196) */ - 3343, /* C7FD (51197) */ - 3343, /* C7FE (51198) */ - 3343, /* C7FF (51199) */ - 3343, /* C800 (51200) */ - 3343, /* C801 (51201) */ - 3343, /* C802 (51202) */ - 3343, /* C803 (51203) */ - 3343, /* C804 (51204) */ - 3343, /* C805 (51205) */ - 3343, /* C806 (51206) */ - 3343, /* C807 (51207) */ - 3343, /* C808 (51208) */ - 3343, /* C809 (51209) */ - 3343, /* C80A (51210) */ - 3343, /* C80B (51211) */ - 3343, /* C80C (51212) */ - 3343, /* C80D (51213) */ - 3343, /* C80E (51214) */ - 3343, /* C80F (51215) */ - 3343, /* C810 (51216) */ - 3343, /* C811 (51217) */ - 3343, /* C812 (51218) */ - 3343, /* C813 (51219) */ - 3343, /* C814 (51220) */ - 3343, /* C815 (51221) */ - 3343, /* C816 (51222) */ - 3343, /* C817 (51223) */ - 3343, /* C818 (51224) */ - 3343, /* C819 (51225) */ - 3343, /* C81A (51226) */ - 3343, /* C81B (51227) */ - 3343, /* C81C (51228) */ - 3343, /* C81D (51229) */ - 3343, /* C81E (51230) */ - 3343, /* C81F (51231) */ - 3343, /* C820 (51232) */ - 3343, /* C821 (51233) */ - 3343, /* C822 (51234) */ - 3343, /* C823 (51235) */ - 3343, /* C824 (51236) */ - 3343, /* C825 (51237) */ - 3343, /* C826 (51238) */ - 3343, /* C827 (51239) */ - 3343, /* C828 (51240) */ - 3343, /* C829 (51241) */ - 3343, /* C82A (51242) */ - 3343, /* C82B (51243) */ - 3343, /* C82C (51244) */ - 3343, /* C82D (51245) */ - 3343, /* C82E (51246) */ - 3343, /* C82F (51247) */ - 3343, /* C830 (51248) */ - 3343, /* C831 (51249) */ - 3343, /* C832 (51250) */ - 3343, /* C833 (51251) */ - 3343, /* C834 (51252) */ - 3343, /* C835 (51253) */ - 3343, /* C836 (51254) */ - 3343, /* C837 (51255) */ - 3343, /* C838 (51256) */ - 3343, /* C839 (51257) */ - 3343, /* C83A (51258) */ - 3343, /* C83B (51259) */ - 3343, /* C83C (51260) */ - 3343, /* C83D (51261) */ - 3343, /* C83E (51262) */ - 3343, /* C83F (51263) */ - 3343, /* C840 (51264) */ - 3343, /* C841 (51265) */ - 3343, /* C842 (51266) */ - 3343, /* C843 (51267) */ - 3343, /* C844 (51268) */ - 3343, /* C845 (51269) */ - 3343, /* C846 (51270) */ - 3343, /* C847 (51271) */ - 3343, /* C848 (51272) */ - 3343, /* C849 (51273) */ - 3343, /* C84A (51274) */ - 3343, /* C84B (51275) */ - 3343, /* C84C (51276) */ - 3343, /* C84D (51277) */ - 3343, /* C84E (51278) */ - 3343, /* C84F (51279) */ - 3343, /* C850 (51280) */ - 3343, /* C851 (51281) */ - 3343, /* C852 (51282) */ - 3343, /* C853 (51283) */ - 3343, /* C854 (51284) */ - 3343, /* C855 (51285) */ - 3343, /* C856 (51286) */ - 3343, /* C857 (51287) */ - 3343, /* C858 (51288) */ - 3343, /* C859 (51289) */ - 3343, /* C85A (51290) */ - 3343, /* C85B (51291) */ - 3343, /* C85C (51292) */ - 3343, /* C85D (51293) */ - 3343, /* C85E (51294) */ - 3343, /* C85F (51295) */ - 3343, /* C860 (51296) */ - 3343, /* C861 (51297) */ - 3343, /* C862 (51298) */ - 3343, /* C863 (51299) */ - 3343, /* C864 (51300) */ - 3343, /* C865 (51301) */ - 3343, /* C866 (51302) */ - 3343, /* C867 (51303) */ - 3343, /* C868 (51304) */ - 3343, /* C869 (51305) */ - 3343, /* C86A (51306) */ - 3343, /* C86B (51307) */ - 3343, /* C86C (51308) */ - 3343, /* C86D (51309) */ - 3343, /* C86E (51310) */ - 3343, /* C86F (51311) */ - 3343, /* C870 (51312) */ - 3343, /* C871 (51313) */ - 3343, /* C872 (51314) */ - 3343, /* C873 (51315) */ - 3343, /* C874 (51316) */ - 3343, /* C875 (51317) */ - 3343, /* C876 (51318) */ - 3343, /* C877 (51319) */ - 3343, /* C878 (51320) */ - 3343, /* C879 (51321) */ - 3343, /* C87A (51322) */ - 3343, /* C87B (51323) */ - 3343, /* C87C (51324) */ - 3343, /* C87D (51325) */ - 3343, /* C87E (51326) */ - 3343, /* C87F (51327) */ - 3343, /* C880 (51328) */ - 3343, /* C881 (51329) */ - 3343, /* C882 (51330) */ - 3343, /* C883 (51331) */ - 3343, /* C884 (51332) */ - 3343, /* C885 (51333) */ - 3343, /* C886 (51334) */ - 3343, /* C887 (51335) */ - 3343, /* C888 (51336) */ - 3343, /* C889 (51337) */ - 3343, /* C88A (51338) */ - 3343, /* C88B (51339) */ - 3343, /* C88C (51340) */ - 3343, /* C88D (51341) */ - 3343, /* C88E (51342) */ - 3343, /* C88F (51343) */ - 3343, /* C890 (51344) */ - 3343, /* C891 (51345) */ - 3343, /* C892 (51346) */ - 3343, /* C893 (51347) */ - 3343, /* C894 (51348) */ - 3343, /* C895 (51349) */ - 3343, /* C896 (51350) */ - 3343, /* C897 (51351) */ - 3343, /* C898 (51352) */ - 3343, /* C899 (51353) */ - 3343, /* C89A (51354) */ - 3343, /* C89B (51355) */ - 3343, /* C89C (51356) */ - 3343, /* C89D (51357) */ - 3343, /* C89E (51358) */ - 3343, /* C89F (51359) */ - 3343, /* C8A0 (51360) */ - 3343, /* C8A1 (51361) */ - 3343, /* C8A2 (51362) */ - 3343, /* C8A3 (51363) */ - 3343, /* C8A4 (51364) */ - 3343, /* C8A5 (51365) */ - 3343, /* C8A6 (51366) */ - 3343, /* C8A7 (51367) */ - 3343, /* C8A8 (51368) */ - 3343, /* C8A9 (51369) */ - 3343, /* C8AA (51370) */ - 3343, /* C8AB (51371) */ - 3343, /* C8AC (51372) */ - 3343, /* C8AD (51373) */ - 3343, /* C8AE (51374) */ - 3343, /* C8AF (51375) */ - 3343, /* C8B0 (51376) */ - 3343, /* C8B1 (51377) */ - 3343, /* C8B2 (51378) */ - 3343, /* C8B3 (51379) */ - 3343, /* C8B4 (51380) */ - 3343, /* C8B5 (51381) */ - 3343, /* C8B6 (51382) */ - 3343, /* C8B7 (51383) */ - 3343, /* C8B8 (51384) */ - 3343, /* C8B9 (51385) */ - 3343, /* C8BA (51386) */ - 3343, /* C8BB (51387) */ - 3343, /* C8BC (51388) */ - 3343, /* C8BD (51389) */ - 3343, /* C8BE (51390) */ - 3343, /* C8BF (51391) */ - 3343, /* C8C0 (51392) */ - 3343, /* C8C1 (51393) */ - 3343, /* C8C2 (51394) */ - 3343, /* C8C3 (51395) */ - 3343, /* C8C4 (51396) */ - 3343, /* C8C5 (51397) */ - 3343, /* C8C6 (51398) */ - 3343, /* C8C7 (51399) */ - 3343, /* C8C8 (51400) */ - 3343, /* C8C9 (51401) */ - 3343, /* C8CA (51402) */ - 3343, /* C8CB (51403) */ - 3343, /* C8CC (51404) */ - 3343, /* C8CD (51405) */ - 3343, /* C8CE (51406) */ - 3343, /* C8CF (51407) */ - 3343, /* C8D0 (51408) */ - 3343, /* C8D1 (51409) */ - 3343, /* C8D2 (51410) */ - 3343, /* C8D3 (51411) */ - 3343, /* C8D4 (51412) */ - 3343, /* C8D5 (51413) */ - 3343, /* C8D6 (51414) */ - 3343, /* C8D7 (51415) */ - 3343, /* C8D8 (51416) */ - 3343, /* C8D9 (51417) */ - 3343, /* C8DA (51418) */ - 3343, /* C8DB (51419) */ - 3343, /* C8DC (51420) */ - 3343, /* C8DD (51421) */ - 3343, /* C8DE (51422) */ - 3343, /* C8DF (51423) */ - 3343, /* C8E0 (51424) */ - 3343, /* C8E1 (51425) */ - 3343, /* C8E2 (51426) */ - 3343, /* C8E3 (51427) */ - 3343, /* C8E4 (51428) */ - 3343, /* C8E5 (51429) */ - 3343, /* C8E6 (51430) */ - 3343, /* C8E7 (51431) */ - 3343, /* C8E8 (51432) */ - 3343, /* C8E9 (51433) */ - 3343, /* C8EA (51434) */ - 3343, /* C8EB (51435) */ - 3343, /* C8EC (51436) */ - 3343, /* C8ED (51437) */ - 3343, /* C8EE (51438) */ - 3343, /* C8EF (51439) */ - 3343, /* C8F0 (51440) */ - 3343, /* C8F1 (51441) */ - 3343, /* C8F2 (51442) */ - 3343, /* C8F3 (51443) */ - 3343, /* C8F4 (51444) */ - 3343, /* C8F5 (51445) */ - 3343, /* C8F6 (51446) */ - 3343, /* C8F7 (51447) */ - 3343, /* C8F8 (51448) */ - 3343, /* C8F9 (51449) */ - 3343, /* C8FA (51450) */ - 3343, /* C8FB (51451) */ - 3343, /* C8FC (51452) */ - 3343, /* C8FD (51453) */ - 3343, /* C8FE (51454) */ - 3343, /* C8FF (51455) */ - 3343, /* C900 (51456) */ - 3343, /* C901 (51457) */ - 3343, /* C902 (51458) */ - 3343, /* C903 (51459) */ - 3343, /* C904 (51460) */ - 3343, /* C905 (51461) */ - 3343, /* C906 (51462) */ - 3343, /* C907 (51463) */ - 3343, /* C908 (51464) */ - 3343, /* C909 (51465) */ - 3343, /* C90A (51466) */ - 3343, /* C90B (51467) */ - 3343, /* C90C (51468) */ - 3343, /* C90D (51469) */ - 3343, /* C90E (51470) */ - 3343, /* C90F (51471) */ - 3343, /* C910 (51472) */ - 3343, /* C911 (51473) */ - 3343, /* C912 (51474) */ - 3343, /* C913 (51475) */ - 3343, /* C914 (51476) */ - 3343, /* C915 (51477) */ - 3343, /* C916 (51478) */ - 3343, /* C917 (51479) */ - 3343, /* C918 (51480) */ - 3343, /* C919 (51481) */ - 3343, /* C91A (51482) */ - 3343, /* C91B (51483) */ - 3343, /* C91C (51484) */ - 3343, /* C91D (51485) */ - 3343, /* C91E (51486) */ - 3343, /* C91F (51487) */ - 3343, /* C920 (51488) */ - 3343, /* C921 (51489) */ - 3343, /* C922 (51490) */ - 3343, /* C923 (51491) */ - 3343, /* C924 (51492) */ - 3343, /* C925 (51493) */ - 3343, /* C926 (51494) */ - 3343, /* C927 (51495) */ - 3343, /* C928 (51496) */ - 3343, /* C929 (51497) */ - 3343, /* C92A (51498) */ - 3343, /* C92B (51499) */ - 3343, /* C92C (51500) */ - 3343, /* C92D (51501) */ - 3343, /* C92E (51502) */ - 3343, /* C92F (51503) */ - 3343, /* C930 (51504) */ - 3343, /* C931 (51505) */ - 3343, /* C932 (51506) */ - 3343, /* C933 (51507) */ - 3343, /* C934 (51508) */ - 3343, /* C935 (51509) */ - 3343, /* C936 (51510) */ - 3343, /* C937 (51511) */ - 3343, /* C938 (51512) */ - 3343, /* C939 (51513) */ - 3343, /* C93A (51514) */ - 3343, /* C93B (51515) */ - 3343, /* C93C (51516) */ - 3343, /* C93D (51517) */ - 3343, /* C93E (51518) */ - 3343, /* C93F (51519) */ - 3343, /* C940 (51520) */ - 3343, /* C941 (51521) */ - 3343, /* C942 (51522) */ - 3343, /* C943 (51523) */ - 3343, /* C944 (51524) */ - 3343, /* C945 (51525) */ - 3343, /* C946 (51526) */ - 3343, /* C947 (51527) */ - 3343, /* C948 (51528) */ - 3343, /* C949 (51529) */ - 3343, /* C94A (51530) */ - 3343, /* C94B (51531) */ - 3343, /* C94C (51532) */ - 3343, /* C94D (51533) */ - 3343, /* C94E (51534) */ - 3343, /* C94F (51535) */ - 3343, /* C950 (51536) */ - 3343, /* C951 (51537) */ - 3343, /* C952 (51538) */ - 3343, /* C953 (51539) */ - 3343, /* C954 (51540) */ - 3343, /* C955 (51541) */ - 3343, /* C956 (51542) */ - 3343, /* C957 (51543) */ - 3343, /* C958 (51544) */ - 3343, /* C959 (51545) */ - 3343, /* C95A (51546) */ - 3343, /* C95B (51547) */ - 3343, /* C95C (51548) */ - 3343, /* C95D (51549) */ - 3343, /* C95E (51550) */ - 3343, /* C95F (51551) */ - 3343, /* C960 (51552) */ - 3343, /* C961 (51553) */ - 3343, /* C962 (51554) */ - 3343, /* C963 (51555) */ - 3343, /* C964 (51556) */ - 3343, /* C965 (51557) */ - 3343, /* C966 (51558) */ - 3343, /* C967 (51559) */ - 3343, /* C968 (51560) */ - 3343, /* C969 (51561) */ - 3343, /* C96A (51562) */ - 3343, /* C96B (51563) */ - 3343, /* C96C (51564) */ - 3343, /* C96D (51565) */ - 3343, /* C96E (51566) */ - 3343, /* C96F (51567) */ - 3343, /* C970 (51568) */ - 3343, /* C971 (51569) */ - 3343, /* C972 (51570) */ - 3343, /* C973 (51571) */ - 3343, /* C974 (51572) */ - 3343, /* C975 (51573) */ - 3343, /* C976 (51574) */ - 3343, /* C977 (51575) */ - 3343, /* C978 (51576) */ - 3343, /* C979 (51577) */ - 3343, /* C97A (51578) */ - 3343, /* C97B (51579) */ - 3343, /* C97C (51580) */ - 3343, /* C97D (51581) */ - 3343, /* C97E (51582) */ - 3343, /* C97F (51583) */ - 3343, /* C980 (51584) */ - 3343, /* C981 (51585) */ - 3343, /* C982 (51586) */ - 3343, /* C983 (51587) */ - 3343, /* C984 (51588) */ - 3343, /* C985 (51589) */ - 3343, /* C986 (51590) */ - 3343, /* C987 (51591) */ - 3343, /* C988 (51592) */ - 3343, /* C989 (51593) */ - 3343, /* C98A (51594) */ - 3343, /* C98B (51595) */ - 3343, /* C98C (51596) */ - 3343, /* C98D (51597) */ - 3343, /* C98E (51598) */ - 3343, /* C98F (51599) */ - 3343, /* C990 (51600) */ - 3343, /* C991 (51601) */ - 3343, /* C992 (51602) */ - 3343, /* C993 (51603) */ - 3343, /* C994 (51604) */ - 3343, /* C995 (51605) */ - 3343, /* C996 (51606) */ - 3343, /* C997 (51607) */ - 3343, /* C998 (51608) */ - 3343, /* C999 (51609) */ - 3343, /* C99A (51610) */ - 3343, /* C99B (51611) */ - 3343, /* C99C (51612) */ - 3343, /* C99D (51613) */ - 3343, /* C99E (51614) */ - 3343, /* C99F (51615) */ - 3343, /* C9A0 (51616) */ - 3343, /* C9A1 (51617) */ - 3343, /* C9A2 (51618) */ - 3343, /* C9A3 (51619) */ - 3343, /* C9A4 (51620) */ - 3343, /* C9A5 (51621) */ - 3343, /* C9A6 (51622) */ - 3343, /* C9A7 (51623) */ - 3343, /* C9A8 (51624) */ - 3343, /* C9A9 (51625) */ - 3343, /* C9AA (51626) */ - 3343, /* C9AB (51627) */ - 3343, /* C9AC (51628) */ - 3343, /* C9AD (51629) */ - 3343, /* C9AE (51630) */ - 3343, /* C9AF (51631) */ - 3343, /* C9B0 (51632) */ - 3343, /* C9B1 (51633) */ - 3343, /* C9B2 (51634) */ - 3343, /* C9B3 (51635) */ - 3343, /* C9B4 (51636) */ - 3343, /* C9B5 (51637) */ - 3343, /* C9B6 (51638) */ - 3343, /* C9B7 (51639) */ - 3343, /* C9B8 (51640) */ - 3343, /* C9B9 (51641) */ - 3343, /* C9BA (51642) */ - 3343, /* C9BB (51643) */ - 3343, /* C9BC (51644) */ - 3343, /* C9BD (51645) */ - 3343, /* C9BE (51646) */ - 3343, /* C9BF (51647) */ - 3343, /* C9C0 (51648) */ - 3343, /* C9C1 (51649) */ - 3343, /* C9C2 (51650) */ - 3343, /* C9C3 (51651) */ - 3343, /* C9C4 (51652) */ - 3343, /* C9C5 (51653) */ - 3343, /* C9C6 (51654) */ - 3343, /* C9C7 (51655) */ - 3343, /* C9C8 (51656) */ - 3343, /* C9C9 (51657) */ - 3343, /* C9CA (51658) */ - 3343, /* C9CB (51659) */ - 3343, /* C9CC (51660) */ - 3343, /* C9CD (51661) */ - 3343, /* C9CE (51662) */ - 3343, /* C9CF (51663) */ - 3343, /* C9D0 (51664) */ - 3343, /* C9D1 (51665) */ - 3343, /* C9D2 (51666) */ - 3343, /* C9D3 (51667) */ - 3343, /* C9D4 (51668) */ - 3343, /* C9D5 (51669) */ - 3343, /* C9D6 (51670) */ - 3343, /* C9D7 (51671) */ - 3343, /* C9D8 (51672) */ - 3343, /* C9D9 (51673) */ - 3343, /* C9DA (51674) */ - 3343, /* C9DB (51675) */ - 3343, /* C9DC (51676) */ - 3343, /* C9DD (51677) */ - 3343, /* C9DE (51678) */ - 3343, /* C9DF (51679) */ - 3343, /* C9E0 (51680) */ - 3343, /* C9E1 (51681) */ - 3343, /* C9E2 (51682) */ - 3343, /* C9E3 (51683) */ - 3343, /* C9E4 (51684) */ - 3343, /* C9E5 (51685) */ - 3343, /* C9E6 (51686) */ - 3343, /* C9E7 (51687) */ - 3343, /* C9E8 (51688) */ - 3343, /* C9E9 (51689) */ - 3343, /* C9EA (51690) */ - 3343, /* C9EB (51691) */ - 3343, /* C9EC (51692) */ - 3343, /* C9ED (51693) */ - 3343, /* C9EE (51694) */ - 3343, /* C9EF (51695) */ - 3343, /* C9F0 (51696) */ - 3343, /* C9F1 (51697) */ - 3343, /* C9F2 (51698) */ - 3343, /* C9F3 (51699) */ - 3343, /* C9F4 (51700) */ - 3343, /* C9F5 (51701) */ - 3343, /* C9F6 (51702) */ - 3343, /* C9F7 (51703) */ - 3343, /* C9F8 (51704) */ - 3343, /* C9F9 (51705) */ - 3343, /* C9FA (51706) */ - 3343, /* C9FB (51707) */ - 3343, /* C9FC (51708) */ - 3343, /* C9FD (51709) */ - 3343, /* C9FE (51710) */ - 3343, /* C9FF (51711) */ - 3343, /* CA00 (51712) */ - 3343, /* CA01 (51713) */ - 3343, /* CA02 (51714) */ - 3343, /* CA03 (51715) */ - 3343, /* CA04 (51716) */ - 3343, /* CA05 (51717) */ - 3343, /* CA06 (51718) */ - 3343, /* CA07 (51719) */ - 3343, /* CA08 (51720) */ - 3343, /* CA09 (51721) */ - 3343, /* CA0A (51722) */ - 3343, /* CA0B (51723) */ - 3343, /* CA0C (51724) */ - 3343, /* CA0D (51725) */ - 3343, /* CA0E (51726) */ - 3343, /* CA0F (51727) */ - 3343, /* CA10 (51728) */ - 3343, /* CA11 (51729) */ - 3343, /* CA12 (51730) */ - 3343, /* CA13 (51731) */ - 3343, /* CA14 (51732) */ - 3343, /* CA15 (51733) */ - 3343, /* CA16 (51734) */ - 3343, /* CA17 (51735) */ - 3343, /* CA18 (51736) */ - 3343, /* CA19 (51737) */ - 3343, /* CA1A (51738) */ - 3343, /* CA1B (51739) */ - 3343, /* CA1C (51740) */ - 3343, /* CA1D (51741) */ - 3343, /* CA1E (51742) */ - 3343, /* CA1F (51743) */ - 3343, /* CA20 (51744) */ - 3343, /* CA21 (51745) */ - 3343, /* CA22 (51746) */ - 3343, /* CA23 (51747) */ - 3343, /* CA24 (51748) */ - 3343, /* CA25 (51749) */ - 3343, /* CA26 (51750) */ - 3343, /* CA27 (51751) */ - 3343, /* CA28 (51752) */ - 3343, /* CA29 (51753) */ - 3343, /* CA2A (51754) */ - 3343, /* CA2B (51755) */ - 3343, /* CA2C (51756) */ - 3343, /* CA2D (51757) */ - 3343, /* CA2E (51758) */ - 3343, /* CA2F (51759) */ - 3343, /* CA30 (51760) */ - 3343, /* CA31 (51761) */ - 3343, /* CA32 (51762) */ - 3343, /* CA33 (51763) */ - 3343, /* CA34 (51764) */ - 3343, /* CA35 (51765) */ - 3343, /* CA36 (51766) */ - 3343, /* CA37 (51767) */ - 3343, /* CA38 (51768) */ - 3343, /* CA39 (51769) */ - 3343, /* CA3A (51770) */ - 3343, /* CA3B (51771) */ - 3343, /* CA3C (51772) */ - 3343, /* CA3D (51773) */ - 3343, /* CA3E (51774) */ - 3343, /* CA3F (51775) */ - 3343, /* CA40 (51776) */ - 3343, /* CA41 (51777) */ - 3343, /* CA42 (51778) */ - 3343, /* CA43 (51779) */ - 3343, /* CA44 (51780) */ - 3343, /* CA45 (51781) */ - 3343, /* CA46 (51782) */ - 3343, /* CA47 (51783) */ - 3343, /* CA48 (51784) */ - 3343, /* CA49 (51785) */ - 3343, /* CA4A (51786) */ - 3343, /* CA4B (51787) */ - 3343, /* CA4C (51788) */ - 3343, /* CA4D (51789) */ - 3343, /* CA4E (51790) */ - 3343, /* CA4F (51791) */ - 3343, /* CA50 (51792) */ - 3343, /* CA51 (51793) */ - 3343, /* CA52 (51794) */ - 3343, /* CA53 (51795) */ - 3343, /* CA54 (51796) */ - 3343, /* CA55 (51797) */ - 3343, /* CA56 (51798) */ - 3343, /* CA57 (51799) */ - 3343, /* CA58 (51800) */ - 3343, /* CA59 (51801) */ - 3343, /* CA5A (51802) */ - 3343, /* CA5B (51803) */ - 3343, /* CA5C (51804) */ - 3343, /* CA5D (51805) */ - 3343, /* CA5E (51806) */ - 3343, /* CA5F (51807) */ - 3343, /* CA60 (51808) */ - 3343, /* CA61 (51809) */ - 3343, /* CA62 (51810) */ - 3343, /* CA63 (51811) */ - 3343, /* CA64 (51812) */ - 3343, /* CA65 (51813) */ - 3343, /* CA66 (51814) */ - 3343, /* CA67 (51815) */ - 3343, /* CA68 (51816) */ - 3343, /* CA69 (51817) */ - 3343, /* CA6A (51818) */ - 3343, /* CA6B (51819) */ - 3343, /* CA6C (51820) */ - 3343, /* CA6D (51821) */ - 3343, /* CA6E (51822) */ - 3343, /* CA6F (51823) */ - 3343, /* CA70 (51824) */ - 3343, /* CA71 (51825) */ - 3343, /* CA72 (51826) */ - 3343, /* CA73 (51827) */ - 3343, /* CA74 (51828) */ - 3343, /* CA75 (51829) */ - 3343, /* CA76 (51830) */ - 3343, /* CA77 (51831) */ - 3343, /* CA78 (51832) */ - 3343, /* CA79 (51833) */ - 3343, /* CA7A (51834) */ - 3343, /* CA7B (51835) */ - 3343, /* CA7C (51836) */ - 3343, /* CA7D (51837) */ - 3343, /* CA7E (51838) */ - 3343, /* CA7F (51839) */ - 3343, /* CA80 (51840) */ - 3343, /* CA81 (51841) */ - 3343, /* CA82 (51842) */ - 3343, /* CA83 (51843) */ - 3343, /* CA84 (51844) */ - 3343, /* CA85 (51845) */ - 3343, /* CA86 (51846) */ - 3343, /* CA87 (51847) */ - 3343, /* CA88 (51848) */ - 3343, /* CA89 (51849) */ - 3343, /* CA8A (51850) */ - 3343, /* CA8B (51851) */ - 3343, /* CA8C (51852) */ - 3343, /* CA8D (51853) */ - 3343, /* CA8E (51854) */ - 3343, /* CA8F (51855) */ - 3343, /* CA90 (51856) */ - 3343, /* CA91 (51857) */ - 3343, /* CA92 (51858) */ - 3343, /* CA93 (51859) */ - 3343, /* CA94 (51860) */ - 3343, /* CA95 (51861) */ - 3343, /* CA96 (51862) */ - 3343, /* CA97 (51863) */ - 3343, /* CA98 (51864) */ - 3343, /* CA99 (51865) */ - 3343, /* CA9A (51866) */ - 3343, /* CA9B (51867) */ - 3343, /* CA9C (51868) */ - 3343, /* CA9D (51869) */ - 3343, /* CA9E (51870) */ - 3343, /* CA9F (51871) */ - 3343, /* CAA0 (51872) */ - 3343, /* CAA1 (51873) */ - 3343, /* CAA2 (51874) */ - 3343, /* CAA3 (51875) */ - 3343, /* CAA4 (51876) */ - 3343, /* CAA5 (51877) */ - 3343, /* CAA6 (51878) */ - 3343, /* CAA7 (51879) */ - 3343, /* CAA8 (51880) */ - 3343, /* CAA9 (51881) */ - 3343, /* CAAA (51882) */ - 3343, /* CAAB (51883) */ - 3343, /* CAAC (51884) */ - 3343, /* CAAD (51885) */ - 3343, /* CAAE (51886) */ - 3343, /* CAAF (51887) */ - 3343, /* CAB0 (51888) */ - 3343, /* CAB1 (51889) */ - 3343, /* CAB2 (51890) */ - 3343, /* CAB3 (51891) */ - 3343, /* CAB4 (51892) */ - 3343, /* CAB5 (51893) */ - 3343, /* CAB6 (51894) */ - 3343, /* CAB7 (51895) */ - 3343, /* CAB8 (51896) */ - 3343, /* CAB9 (51897) */ - 3343, /* CABA (51898) */ - 3343, /* CABB (51899) */ - 3343, /* CABC (51900) */ - 3343, /* CABD (51901) */ - 3343, /* CABE (51902) */ - 3343, /* CABF (51903) */ - 3343, /* CAC0 (51904) */ - 3343, /* CAC1 (51905) */ - 3343, /* CAC2 (51906) */ - 3343, /* CAC3 (51907) */ - 3343, /* CAC4 (51908) */ - 3343, /* CAC5 (51909) */ - 3343, /* CAC6 (51910) */ - 3343, /* CAC7 (51911) */ - 3343, /* CAC8 (51912) */ - 3343, /* CAC9 (51913) */ - 3343, /* CACA (51914) */ - 3343, /* CACB (51915) */ - 3343, /* CACC (51916) */ - 3343, /* CACD (51917) */ - 3343, /* CACE (51918) */ - 3343, /* CACF (51919) */ - 3343, /* CAD0 (51920) */ - 3343, /* CAD1 (51921) */ - 3343, /* CAD2 (51922) */ - 3343, /* CAD3 (51923) */ - 3343, /* CAD4 (51924) */ - 3343, /* CAD5 (51925) */ - 3343, /* CAD6 (51926) */ - 3343, /* CAD7 (51927) */ - 3343, /* CAD8 (51928) */ - 3343, /* CAD9 (51929) */ - 3343, /* CADA (51930) */ - 3343, /* CADB (51931) */ - 3343, /* CADC (51932) */ - 3343, /* CADD (51933) */ - 3343, /* CADE (51934) */ - 3343, /* CADF (51935) */ - 3343, /* CAE0 (51936) */ - 3343, /* CAE1 (51937) */ - 3343, /* CAE2 (51938) */ - 3343, /* CAE3 (51939) */ - 3343, /* CAE4 (51940) */ - 3343, /* CAE5 (51941) */ - 3343, /* CAE6 (51942) */ - 3343, /* CAE7 (51943) */ - 3343, /* CAE8 (51944) */ - 3343, /* CAE9 (51945) */ - 3343, /* CAEA (51946) */ - 3343, /* CAEB (51947) */ - 3343, /* CAEC (51948) */ - 3343, /* CAED (51949) */ - 3343, /* CAEE (51950) */ - 3343, /* CAEF (51951) */ - 3343, /* CAF0 (51952) */ - 3343, /* CAF1 (51953) */ - 3343, /* CAF2 (51954) */ - 3343, /* CAF3 (51955) */ - 3343, /* CAF4 (51956) */ - 3343, /* CAF5 (51957) */ - 3343, /* CAF6 (51958) */ - 3343, /* CAF7 (51959) */ - 3343, /* CAF8 (51960) */ - 3343, /* CAF9 (51961) */ - 3343, /* CAFA (51962) */ - 3343, /* CAFB (51963) */ - 3343, /* CAFC (51964) */ - 3343, /* CAFD (51965) */ - 3343, /* CAFE (51966) */ - 3343, /* CAFF (51967) */ - 3343, /* CB00 (51968) */ - 3343, /* CB01 (51969) */ - 3343, /* CB02 (51970) */ - 3343, /* CB03 (51971) */ - 3343, /* CB04 (51972) */ - 3343, /* CB05 (51973) */ - 3343, /* CB06 (51974) */ - 3343, /* CB07 (51975) */ - 3343, /* CB08 (51976) */ - 3343, /* CB09 (51977) */ - 3343, /* CB0A (51978) */ - 3343, /* CB0B (51979) */ - 3343, /* CB0C (51980) */ - 3343, /* CB0D (51981) */ - 3343, /* CB0E (51982) */ - 3343, /* CB0F (51983) */ - 3343, /* CB10 (51984) */ - 3343, /* CB11 (51985) */ - 3343, /* CB12 (51986) */ - 3343, /* CB13 (51987) */ - 3343, /* CB14 (51988) */ - 3343, /* CB15 (51989) */ - 3343, /* CB16 (51990) */ - 3343, /* CB17 (51991) */ - 3343, /* CB18 (51992) */ - 3343, /* CB19 (51993) */ - 3343, /* CB1A (51994) */ - 3343, /* CB1B (51995) */ - 3343, /* CB1C (51996) */ - 3343, /* CB1D (51997) */ - 3343, /* CB1E (51998) */ - 3343, /* CB1F (51999) */ - 3343, /* CB20 (52000) */ - 3343, /* CB21 (52001) */ - 3343, /* CB22 (52002) */ - 3343, /* CB23 (52003) */ - 3343, /* CB24 (52004) */ - 3343, /* CB25 (52005) */ - 3343, /* CB26 (52006) */ - 3343, /* CB27 (52007) */ - 3343, /* CB28 (52008) */ - 3343, /* CB29 (52009) */ - 3343, /* CB2A (52010) */ - 3343, /* CB2B (52011) */ - 3343, /* CB2C (52012) */ - 3343, /* CB2D (52013) */ - 3343, /* CB2E (52014) */ - 3343, /* CB2F (52015) */ - 3343, /* CB30 (52016) */ - 3343, /* CB31 (52017) */ - 3343, /* CB32 (52018) */ - 3343, /* CB33 (52019) */ - 3343, /* CB34 (52020) */ - 3343, /* CB35 (52021) */ - 3343, /* CB36 (52022) */ - 3343, /* CB37 (52023) */ - 3343, /* CB38 (52024) */ - 3343, /* CB39 (52025) */ - 3343, /* CB3A (52026) */ - 3343, /* CB3B (52027) */ - 3343, /* CB3C (52028) */ - 3343, /* CB3D (52029) */ - 3343, /* CB3E (52030) */ - 3343, /* CB3F (52031) */ - 3343, /* CB40 (52032) */ - 3343, /* CB41 (52033) */ - 3343, /* CB42 (52034) */ - 3343, /* CB43 (52035) */ - 3343, /* CB44 (52036) */ - 3343, /* CB45 (52037) */ - 3343, /* CB46 (52038) */ - 3343, /* CB47 (52039) */ - 3343, /* CB48 (52040) */ - 3343, /* CB49 (52041) */ - 3343, /* CB4A (52042) */ - 3343, /* CB4B (52043) */ - 3343, /* CB4C (52044) */ - 3343, /* CB4D (52045) */ - 3343, /* CB4E (52046) */ - 3343, /* CB4F (52047) */ - 3343, /* CB50 (52048) */ - 3343, /* CB51 (52049) */ - 3343, /* CB52 (52050) */ - 3343, /* CB53 (52051) */ - 3343, /* CB54 (52052) */ - 3343, /* CB55 (52053) */ - 3343, /* CB56 (52054) */ - 3343, /* CB57 (52055) */ - 3343, /* CB58 (52056) */ - 3343, /* CB59 (52057) */ - 3343, /* CB5A (52058) */ - 3343, /* CB5B (52059) */ - 3343, /* CB5C (52060) */ - 3343, /* CB5D (52061) */ - 3343, /* CB5E (52062) */ - 3343, /* CB5F (52063) */ - 3343, /* CB60 (52064) */ - 3343, /* CB61 (52065) */ - 3343, /* CB62 (52066) */ - 3343, /* CB63 (52067) */ - 3343, /* CB64 (52068) */ - 3343, /* CB65 (52069) */ - 3343, /* CB66 (52070) */ - 3343, /* CB67 (52071) */ - 3343, /* CB68 (52072) */ - 3343, /* CB69 (52073) */ - 3343, /* CB6A (52074) */ - 3343, /* CB6B (52075) */ - 3343, /* CB6C (52076) */ - 3343, /* CB6D (52077) */ - 3343, /* CB6E (52078) */ - 3343, /* CB6F (52079) */ - 3343, /* CB70 (52080) */ - 3343, /* CB71 (52081) */ - 3343, /* CB72 (52082) */ - 3343, /* CB73 (52083) */ - 3343, /* CB74 (52084) */ - 3343, /* CB75 (52085) */ - 3343, /* CB76 (52086) */ - 3343, /* CB77 (52087) */ - 3343, /* CB78 (52088) */ - 3343, /* CB79 (52089) */ - 3343, /* CB7A (52090) */ - 3343, /* CB7B (52091) */ - 3343, /* CB7C (52092) */ - 3343, /* CB7D (52093) */ - 3343, /* CB7E (52094) */ - 3343, /* CB7F (52095) */ - 3343, /* CB80 (52096) */ - 3343, /* CB81 (52097) */ - 3343, /* CB82 (52098) */ - 3343, /* CB83 (52099) */ - 3343, /* CB84 (52100) */ - 3343, /* CB85 (52101) */ - 3343, /* CB86 (52102) */ - 3343, /* CB87 (52103) */ - 3343, /* CB88 (52104) */ - 3343, /* CB89 (52105) */ - 3343, /* CB8A (52106) */ - 3343, /* CB8B (52107) */ - 3343, /* CB8C (52108) */ - 3343, /* CB8D (52109) */ - 3343, /* CB8E (52110) */ - 3343, /* CB8F (52111) */ - 3343, /* CB90 (52112) */ - 3343, /* CB91 (52113) */ - 3343, /* CB92 (52114) */ - 3343, /* CB93 (52115) */ - 3343, /* CB94 (52116) */ - 3343, /* CB95 (52117) */ - 3343, /* CB96 (52118) */ - 3343, /* CB97 (52119) */ - 3343, /* CB98 (52120) */ - 3343, /* CB99 (52121) */ - 3343, /* CB9A (52122) */ - 3343, /* CB9B (52123) */ - 3343, /* CB9C (52124) */ - 3343, /* CB9D (52125) */ - 3343, /* CB9E (52126) */ - 3343, /* CB9F (52127) */ - 3343, /* CBA0 (52128) */ - 3343, /* CBA1 (52129) */ - 3343, /* CBA2 (52130) */ - 3343, /* CBA3 (52131) */ - 3343, /* CBA4 (52132) */ - 3343, /* CBA5 (52133) */ - 3343, /* CBA6 (52134) */ - 3343, /* CBA7 (52135) */ - 3343, /* CBA8 (52136) */ - 3343, /* CBA9 (52137) */ - 3343, /* CBAA (52138) */ - 3343, /* CBAB (52139) */ - 3343, /* CBAC (52140) */ - 3343, /* CBAD (52141) */ - 3343, /* CBAE (52142) */ - 3343, /* CBAF (52143) */ - 3343, /* CBB0 (52144) */ - 3343, /* CBB1 (52145) */ - 3343, /* CBB2 (52146) */ - 3343, /* CBB3 (52147) */ - 3343, /* CBB4 (52148) */ - 3343, /* CBB5 (52149) */ - 3343, /* CBB6 (52150) */ - 3343, /* CBB7 (52151) */ - 3343, /* CBB8 (52152) */ - 3343, /* CBB9 (52153) */ - 3343, /* CBBA (52154) */ - 3343, /* CBBB (52155) */ - 3343, /* CBBC (52156) */ - 3343, /* CBBD (52157) */ - 3343, /* CBBE (52158) */ - 3343, /* CBBF (52159) */ - 3343, /* CBC0 (52160) */ - 3343, /* CBC1 (52161) */ - 3343, /* CBC2 (52162) */ - 3343, /* CBC3 (52163) */ - 3343, /* CBC4 (52164) */ - 3343, /* CBC5 (52165) */ - 3343, /* CBC6 (52166) */ - 3343, /* CBC7 (52167) */ - 3343, /* CBC8 (52168) */ - 3343, /* CBC9 (52169) */ - 3343, /* CBCA (52170) */ - 3343, /* CBCB (52171) */ - 3343, /* CBCC (52172) */ - 3343, /* CBCD (52173) */ - 3343, /* CBCE (52174) */ - 3343, /* CBCF (52175) */ - 3343, /* CBD0 (52176) */ - 3343, /* CBD1 (52177) */ - 3343, /* CBD2 (52178) */ - 3343, /* CBD3 (52179) */ - 3343, /* CBD4 (52180) */ - 3343, /* CBD5 (52181) */ - 3343, /* CBD6 (52182) */ - 3343, /* CBD7 (52183) */ - 3343, /* CBD8 (52184) */ - 3343, /* CBD9 (52185) */ - 3343, /* CBDA (52186) */ - 3343, /* CBDB (52187) */ - 3343, /* CBDC (52188) */ - 3343, /* CBDD (52189) */ - 3343, /* CBDE (52190) */ - 3343, /* CBDF (52191) */ - 3343, /* CBE0 (52192) */ - 3343, /* CBE1 (52193) */ - 3343, /* CBE2 (52194) */ - 3343, /* CBE3 (52195) */ - 3343, /* CBE4 (52196) */ - 3343, /* CBE5 (52197) */ - 3343, /* CBE6 (52198) */ - 3343, /* CBE7 (52199) */ - 3343, /* CBE8 (52200) */ - 3343, /* CBE9 (52201) */ - 3343, /* CBEA (52202) */ - 3343, /* CBEB (52203) */ - 3343, /* CBEC (52204) */ - 3343, /* CBED (52205) */ - 3343, /* CBEE (52206) */ - 3343, /* CBEF (52207) */ - 3343, /* CBF0 (52208) */ - 3343, /* CBF1 (52209) */ - 3343, /* CBF2 (52210) */ - 3343, /* CBF3 (52211) */ - 3343, /* CBF4 (52212) */ - 3343, /* CBF5 (52213) */ - 3343, /* CBF6 (52214) */ - 3343, /* CBF7 (52215) */ - 3343, /* CBF8 (52216) */ - 3343, /* CBF9 (52217) */ - 3343, /* CBFA (52218) */ - 3343, /* CBFB (52219) */ - 3343, /* CBFC (52220) */ - 3343, /* CBFD (52221) */ - 3343, /* CBFE (52222) */ - 3343, /* CBFF (52223) */ - 3343, /* CC00 (52224) */ - 3343, /* CC01 (52225) */ - 3343, /* CC02 (52226) */ - 3343, /* CC03 (52227) */ - 3343, /* CC04 (52228) */ - 3343, /* CC05 (52229) */ - 3343, /* CC06 (52230) */ - 3343, /* CC07 (52231) */ - 3343, /* CC08 (52232) */ - 3343, /* CC09 (52233) */ - 3343, /* CC0A (52234) */ - 3343, /* CC0B (52235) */ - 3343, /* CC0C (52236) */ - 3343, /* CC0D (52237) */ - 3343, /* CC0E (52238) */ - 3343, /* CC0F (52239) */ - 3343, /* CC10 (52240) */ - 3343, /* CC11 (52241) */ - 3343, /* CC12 (52242) */ - 3343, /* CC13 (52243) */ - 3343, /* CC14 (52244) */ - 3343, /* CC15 (52245) */ - 3343, /* CC16 (52246) */ - 3343, /* CC17 (52247) */ - 3343, /* CC18 (52248) */ - 3343, /* CC19 (52249) */ - 3343, /* CC1A (52250) */ - 3343, /* CC1B (52251) */ - 3343, /* CC1C (52252) */ - 3343, /* CC1D (52253) */ - 3343, /* CC1E (52254) */ - 3343, /* CC1F (52255) */ - 3343, /* CC20 (52256) */ - 3343, /* CC21 (52257) */ - 3343, /* CC22 (52258) */ - 3343, /* CC23 (52259) */ - 3343, /* CC24 (52260) */ - 3343, /* CC25 (52261) */ - 3343, /* CC26 (52262) */ - 3343, /* CC27 (52263) */ - 3343, /* CC28 (52264) */ - 3343, /* CC29 (52265) */ - 3343, /* CC2A (52266) */ - 3343, /* CC2B (52267) */ - 3343, /* CC2C (52268) */ - 3343, /* CC2D (52269) */ - 3343, /* CC2E (52270) */ - 3343, /* CC2F (52271) */ - 3343, /* CC30 (52272) */ - 3343, /* CC31 (52273) */ - 3343, /* CC32 (52274) */ - 3343, /* CC33 (52275) */ - 3343, /* CC34 (52276) */ - 3343, /* CC35 (52277) */ - 3343, /* CC36 (52278) */ - 3343, /* CC37 (52279) */ - 3343, /* CC38 (52280) */ - 3343, /* CC39 (52281) */ - 3343, /* CC3A (52282) */ - 3343, /* CC3B (52283) */ - 3343, /* CC3C (52284) */ - 3343, /* CC3D (52285) */ - 3343, /* CC3E (52286) */ - 3343, /* CC3F (52287) */ - 3343, /* CC40 (52288) */ - 3343, /* CC41 (52289) */ - 3343, /* CC42 (52290) */ - 3343, /* CC43 (52291) */ - 3343, /* CC44 (52292) */ - 3343, /* CC45 (52293) */ - 3343, /* CC46 (52294) */ - 3343, /* CC47 (52295) */ - 3343, /* CC48 (52296) */ - 3343, /* CC49 (52297) */ - 3343, /* CC4A (52298) */ - 3343, /* CC4B (52299) */ - 3343, /* CC4C (52300) */ - 3343, /* CC4D (52301) */ - 3343, /* CC4E (52302) */ - 3343, /* CC4F (52303) */ - 3343, /* CC50 (52304) */ - 3343, /* CC51 (52305) */ - 3343, /* CC52 (52306) */ - 3343, /* CC53 (52307) */ - 3343, /* CC54 (52308) */ - 3343, /* CC55 (52309) */ - 3343, /* CC56 (52310) */ - 3343, /* CC57 (52311) */ - 3343, /* CC58 (52312) */ - 3343, /* CC59 (52313) */ - 3343, /* CC5A (52314) */ - 3343, /* CC5B (52315) */ - 3343, /* CC5C (52316) */ - 3343, /* CC5D (52317) */ - 3343, /* CC5E (52318) */ - 3343, /* CC5F (52319) */ - 3343, /* CC60 (52320) */ - 3343, /* CC61 (52321) */ - 3343, /* CC62 (52322) */ - 3343, /* CC63 (52323) */ - 3343, /* CC64 (52324) */ - 3343, /* CC65 (52325) */ - 3343, /* CC66 (52326) */ - 3343, /* CC67 (52327) */ - 3343, /* CC68 (52328) */ - 3343, /* CC69 (52329) */ - 3343, /* CC6A (52330) */ - 3343, /* CC6B (52331) */ - 3343, /* CC6C (52332) */ - 3343, /* CC6D (52333) */ - 3343, /* CC6E (52334) */ - 3343, /* CC6F (52335) */ - 3343, /* CC70 (52336) */ - 3343, /* CC71 (52337) */ - 3343, /* CC72 (52338) */ - 3343, /* CC73 (52339) */ - 3343, /* CC74 (52340) */ - 3343, /* CC75 (52341) */ - 3343, /* CC76 (52342) */ - 3343, /* CC77 (52343) */ - 3343, /* CC78 (52344) */ - 3343, /* CC79 (52345) */ - 3343, /* CC7A (52346) */ - 3343, /* CC7B (52347) */ - 3343, /* CC7C (52348) */ - 3343, /* CC7D (52349) */ - 3343, /* CC7E (52350) */ - 3343, /* CC7F (52351) */ - 3343, /* CC80 (52352) */ - 3343, /* CC81 (52353) */ - 3343, /* CC82 (52354) */ - 3343, /* CC83 (52355) */ - 3343, /* CC84 (52356) */ - 3343, /* CC85 (52357) */ - 3343, /* CC86 (52358) */ - 3343, /* CC87 (52359) */ - 3343, /* CC88 (52360) */ - 3343, /* CC89 (52361) */ - 3343, /* CC8A (52362) */ - 3343, /* CC8B (52363) */ - 3343, /* CC8C (52364) */ - 3343, /* CC8D (52365) */ - 3343, /* CC8E (52366) */ - 3343, /* CC8F (52367) */ - 3343, /* CC90 (52368) */ - 3343, /* CC91 (52369) */ - 3343, /* CC92 (52370) */ - 3343, /* CC93 (52371) */ - 3343, /* CC94 (52372) */ - 3343, /* CC95 (52373) */ - 3343, /* CC96 (52374) */ - 3343, /* CC97 (52375) */ - 3343, /* CC98 (52376) */ - 3343, /* CC99 (52377) */ - 3343, /* CC9A (52378) */ - 3343, /* CC9B (52379) */ - 3343, /* CC9C (52380) */ - 3343, /* CC9D (52381) */ - 3343, /* CC9E (52382) */ - 3343, /* CC9F (52383) */ - 3343, /* CCA0 (52384) */ - 3343, /* CCA1 (52385) */ - 3343, /* CCA2 (52386) */ - 3343, /* CCA3 (52387) */ - 3343, /* CCA4 (52388) */ - 3343, /* CCA5 (52389) */ - 3343, /* CCA6 (52390) */ - 3343, /* CCA7 (52391) */ - 3343, /* CCA8 (52392) */ - 3343, /* CCA9 (52393) */ - 3343, /* CCAA (52394) */ - 3343, /* CCAB (52395) */ - 3343, /* CCAC (52396) */ - 3343, /* CCAD (52397) */ - 3343, /* CCAE (52398) */ - 3343, /* CCAF (52399) */ - 3343, /* CCB0 (52400) */ - 3343, /* CCB1 (52401) */ - 3343, /* CCB2 (52402) */ - 3343, /* CCB3 (52403) */ - 3343, /* CCB4 (52404) */ - 3343, /* CCB5 (52405) */ - 3343, /* CCB6 (52406) */ - 3343, /* CCB7 (52407) */ - 3343, /* CCB8 (52408) */ - 3343, /* CCB9 (52409) */ - 3343, /* CCBA (52410) */ - 3343, /* CCBB (52411) */ - 3343, /* CCBC (52412) */ - 3343, /* CCBD (52413) */ - 3343, /* CCBE (52414) */ - 3343, /* CCBF (52415) */ - 3343, /* CCC0 (52416) */ - 3343, /* CCC1 (52417) */ - 3343, /* CCC2 (52418) */ - 3343, /* CCC3 (52419) */ - 3343, /* CCC4 (52420) */ - 3343, /* CCC5 (52421) */ - 3343, /* CCC6 (52422) */ - 3343, /* CCC7 (52423) */ - 3343, /* CCC8 (52424) */ - 3343, /* CCC9 (52425) */ - 3343, /* CCCA (52426) */ - 3343, /* CCCB (52427) */ - 3343, /* CCCC (52428) */ - 3343, /* CCCD (52429) */ - 3343, /* CCCE (52430) */ - 3343, /* CCCF (52431) */ - 3343, /* CCD0 (52432) */ - 3343, /* CCD1 (52433) */ - 3343, /* CCD2 (52434) */ - 3343, /* CCD3 (52435) */ - 3343, /* CCD4 (52436) */ - 3343, /* CCD5 (52437) */ - 3343, /* CCD6 (52438) */ - 3343, /* CCD7 (52439) */ - 3343, /* CCD8 (52440) */ - 3343, /* CCD9 (52441) */ - 3343, /* CCDA (52442) */ - 3343, /* CCDB (52443) */ - 3343, /* CCDC (52444) */ - 3343, /* CCDD (52445) */ - 3343, /* CCDE (52446) */ - 3343, /* CCDF (52447) */ - 3343, /* CCE0 (52448) */ - 3343, /* CCE1 (52449) */ - 3343, /* CCE2 (52450) */ - 3343, /* CCE3 (52451) */ - 3343, /* CCE4 (52452) */ - 3343, /* CCE5 (52453) */ - 3343, /* CCE6 (52454) */ - 3343, /* CCE7 (52455) */ - 3343, /* CCE8 (52456) */ - 3343, /* CCE9 (52457) */ - 3343, /* CCEA (52458) */ - 3343, /* CCEB (52459) */ - 3343, /* CCEC (52460) */ - 3343, /* CCED (52461) */ - 3343, /* CCEE (52462) */ - 3343, /* CCEF (52463) */ - 3343, /* CCF0 (52464) */ - 3343, /* CCF1 (52465) */ - 3343, /* CCF2 (52466) */ - 3343, /* CCF3 (52467) */ - 3343, /* CCF4 (52468) */ - 3343, /* CCF5 (52469) */ - 3343, /* CCF6 (52470) */ - 3343, /* CCF7 (52471) */ - 3343, /* CCF8 (52472) */ - 3343, /* CCF9 (52473) */ - 3343, /* CCFA (52474) */ - 3343, /* CCFB (52475) */ - 3343, /* CCFC (52476) */ - 3343, /* CCFD (52477) */ - 3343, /* CCFE (52478) */ - 3343, /* CCFF (52479) */ - 3343, /* CD00 (52480) */ - 3343, /* CD01 (52481) */ - 3343, /* CD02 (52482) */ - 3343, /* CD03 (52483) */ - 3343, /* CD04 (52484) */ - 3343, /* CD05 (52485) */ - 3343, /* CD06 (52486) */ - 3343, /* CD07 (52487) */ - 3343, /* CD08 (52488) */ - 3343, /* CD09 (52489) */ - 3343, /* CD0A (52490) */ - 3343, /* CD0B (52491) */ - 3343, /* CD0C (52492) */ - 3343, /* CD0D (52493) */ - 3343, /* CD0E (52494) */ - 3343, /* CD0F (52495) */ - 3343, /* CD10 (52496) */ - 3343, /* CD11 (52497) */ - 3343, /* CD12 (52498) */ - 3343, /* CD13 (52499) */ - 3343, /* CD14 (52500) */ - 3343, /* CD15 (52501) */ - 3343, /* CD16 (52502) */ - 3343, /* CD17 (52503) */ - 3343, /* CD18 (52504) */ - 3343, /* CD19 (52505) */ - 3343, /* CD1A (52506) */ - 3343, /* CD1B (52507) */ - 3343, /* CD1C (52508) */ - 3343, /* CD1D (52509) */ - 3343, /* CD1E (52510) */ - 3343, /* CD1F (52511) */ - 3343, /* CD20 (52512) */ - 3343, /* CD21 (52513) */ - 3343, /* CD22 (52514) */ - 3343, /* CD23 (52515) */ - 3343, /* CD24 (52516) */ - 3343, /* CD25 (52517) */ - 3343, /* CD26 (52518) */ - 3343, /* CD27 (52519) */ - 3343, /* CD28 (52520) */ - 3343, /* CD29 (52521) */ - 3343, /* CD2A (52522) */ - 3343, /* CD2B (52523) */ - 3343, /* CD2C (52524) */ - 3343, /* CD2D (52525) */ - 3343, /* CD2E (52526) */ - 3343, /* CD2F (52527) */ - 3343, /* CD30 (52528) */ - 3343, /* CD31 (52529) */ - 3343, /* CD32 (52530) */ - 3343, /* CD33 (52531) */ - 3343, /* CD34 (52532) */ - 3343, /* CD35 (52533) */ - 3343, /* CD36 (52534) */ - 3343, /* CD37 (52535) */ - 3343, /* CD38 (52536) */ - 3343, /* CD39 (52537) */ - 3343, /* CD3A (52538) */ - 3343, /* CD3B (52539) */ - 3343, /* CD3C (52540) */ - 3343, /* CD3D (52541) */ - 3343, /* CD3E (52542) */ - 3343, /* CD3F (52543) */ - 3343, /* CD40 (52544) */ - 3343, /* CD41 (52545) */ - 3343, /* CD42 (52546) */ - 3343, /* CD43 (52547) */ - 3343, /* CD44 (52548) */ - 3343, /* CD45 (52549) */ - 3343, /* CD46 (52550) */ - 3343, /* CD47 (52551) */ - 3343, /* CD48 (52552) */ - 3343, /* CD49 (52553) */ - 3343, /* CD4A (52554) */ - 3343, /* CD4B (52555) */ - 3343, /* CD4C (52556) */ - 3343, /* CD4D (52557) */ - 3343, /* CD4E (52558) */ - 3343, /* CD4F (52559) */ - 3343, /* CD50 (52560) */ - 3343, /* CD51 (52561) */ - 3343, /* CD52 (52562) */ - 3343, /* CD53 (52563) */ - 3343, /* CD54 (52564) */ - 3343, /* CD55 (52565) */ - 3343, /* CD56 (52566) */ - 3343, /* CD57 (52567) */ - 3343, /* CD58 (52568) */ - 3343, /* CD59 (52569) */ - 3343, /* CD5A (52570) */ - 3343, /* CD5B (52571) */ - 3343, /* CD5C (52572) */ - 3343, /* CD5D (52573) */ - 3343, /* CD5E (52574) */ - 3343, /* CD5F (52575) */ - 3343, /* CD60 (52576) */ - 3343, /* CD61 (52577) */ - 3343, /* CD62 (52578) */ - 3343, /* CD63 (52579) */ - 3343, /* CD64 (52580) */ - 3343, /* CD65 (52581) */ - 3343, /* CD66 (52582) */ - 3343, /* CD67 (52583) */ - 3343, /* CD68 (52584) */ - 3343, /* CD69 (52585) */ - 3343, /* CD6A (52586) */ - 3343, /* CD6B (52587) */ - 3343, /* CD6C (52588) */ - 3343, /* CD6D (52589) */ - 3343, /* CD6E (52590) */ - 3343, /* CD6F (52591) */ - 3343, /* CD70 (52592) */ - 3343, /* CD71 (52593) */ - 3343, /* CD72 (52594) */ - 3343, /* CD73 (52595) */ - 3343, /* CD74 (52596) */ - 3343, /* CD75 (52597) */ - 3343, /* CD76 (52598) */ - 3343, /* CD77 (52599) */ - 3343, /* CD78 (52600) */ - 3343, /* CD79 (52601) */ - 3343, /* CD7A (52602) */ - 3343, /* CD7B (52603) */ - 3343, /* CD7C (52604) */ - 3343, /* CD7D (52605) */ - 3343, /* CD7E (52606) */ - 3343, /* CD7F (52607) */ - 3343, /* CD80 (52608) */ - 3343, /* CD81 (52609) */ - 3343, /* CD82 (52610) */ - 3343, /* CD83 (52611) */ - 3343, /* CD84 (52612) */ - 3343, /* CD85 (52613) */ - 3343, /* CD86 (52614) */ - 3343, /* CD87 (52615) */ - 3343, /* CD88 (52616) */ - 3343, /* CD89 (52617) */ - 3343, /* CD8A (52618) */ - 3343, /* CD8B (52619) */ - 3343, /* CD8C (52620) */ - 3343, /* CD8D (52621) */ - 3343, /* CD8E (52622) */ - 3343, /* CD8F (52623) */ - 3343, /* CD90 (52624) */ - 3343, /* CD91 (52625) */ - 3343, /* CD92 (52626) */ - 3343, /* CD93 (52627) */ - 3343, /* CD94 (52628) */ - 3343, /* CD95 (52629) */ - 3343, /* CD96 (52630) */ - 3343, /* CD97 (52631) */ - 3343, /* CD98 (52632) */ - 3343, /* CD99 (52633) */ - 3343, /* CD9A (52634) */ - 3343, /* CD9B (52635) */ - 3343, /* CD9C (52636) */ - 3343, /* CD9D (52637) */ - 3343, /* CD9E (52638) */ - 3343, /* CD9F (52639) */ - 3343, /* CDA0 (52640) */ - 3343, /* CDA1 (52641) */ - 3343, /* CDA2 (52642) */ - 3343, /* CDA3 (52643) */ - 3343, /* CDA4 (52644) */ - 3343, /* CDA5 (52645) */ - 3343, /* CDA6 (52646) */ - 3343, /* CDA7 (52647) */ - 3343, /* CDA8 (52648) */ - 3343, /* CDA9 (52649) */ - 3343, /* CDAA (52650) */ - 3343, /* CDAB (52651) */ - 3343, /* CDAC (52652) */ - 3343, /* CDAD (52653) */ - 3343, /* CDAE (52654) */ - 3343, /* CDAF (52655) */ - 3343, /* CDB0 (52656) */ - 3343, /* CDB1 (52657) */ - 3343, /* CDB2 (52658) */ - 3343, /* CDB3 (52659) */ - 3343, /* CDB4 (52660) */ - 3343, /* CDB5 (52661) */ - 3343, /* CDB6 (52662) */ - 3343, /* CDB7 (52663) */ - 3343, /* CDB8 (52664) */ - 3343, /* CDB9 (52665) */ - 3343, /* CDBA (52666) */ - 3343, /* CDBB (52667) */ - 3343, /* CDBC (52668) */ - 3343, /* CDBD (52669) */ - 3343, /* CDBE (52670) */ - 3343, /* CDBF (52671) */ - 3343, /* CDC0 (52672) */ - 3343, /* CDC1 (52673) */ - 3343, /* CDC2 (52674) */ - 3343, /* CDC3 (52675) */ - 3343, /* CDC4 (52676) */ - 3343, /* CDC5 (52677) */ - 3343, /* CDC6 (52678) */ - 3343, /* CDC7 (52679) */ - 3343, /* CDC8 (52680) */ - 3343, /* CDC9 (52681) */ - 3343, /* CDCA (52682) */ - 3343, /* CDCB (52683) */ - 3343, /* CDCC (52684) */ - 3343, /* CDCD (52685) */ - 3343, /* CDCE (52686) */ - 3343, /* CDCF (52687) */ - 3343, /* CDD0 (52688) */ - 3343, /* CDD1 (52689) */ - 3343, /* CDD2 (52690) */ - 3343, /* CDD3 (52691) */ - 3343, /* CDD4 (52692) */ - 3343, /* CDD5 (52693) */ - 3343, /* CDD6 (52694) */ - 3343, /* CDD7 (52695) */ - 3343, /* CDD8 (52696) */ - 3343, /* CDD9 (52697) */ - 3343, /* CDDA (52698) */ - 3343, /* CDDB (52699) */ - 3343, /* CDDC (52700) */ - 3343, /* CDDD (52701) */ - 3343, /* CDDE (52702) */ - 3343, /* CDDF (52703) */ - 3343, /* CDE0 (52704) */ - 3343, /* CDE1 (52705) */ - 3343, /* CDE2 (52706) */ - 3343, /* CDE3 (52707) */ - 3343, /* CDE4 (52708) */ - 3343, /* CDE5 (52709) */ - 3343, /* CDE6 (52710) */ - 3343, /* CDE7 (52711) */ - 3343, /* CDE8 (52712) */ - 3343, /* CDE9 (52713) */ - 3343, /* CDEA (52714) */ - 3343, /* CDEB (52715) */ - 3343, /* CDEC (52716) */ - 3343, /* CDED (52717) */ - 3343, /* CDEE (52718) */ - 3343, /* CDEF (52719) */ - 3343, /* CDF0 (52720) */ - 3343, /* CDF1 (52721) */ - 3343, /* CDF2 (52722) */ - 3343, /* CDF3 (52723) */ - 3343, /* CDF4 (52724) */ - 3343, /* CDF5 (52725) */ - 3343, /* CDF6 (52726) */ - 3343, /* CDF7 (52727) */ - 3343, /* CDF8 (52728) */ - 3343, /* CDF9 (52729) */ - 3343, /* CDFA (52730) */ - 3343, /* CDFB (52731) */ - 3343, /* CDFC (52732) */ - 3343, /* CDFD (52733) */ - 3343, /* CDFE (52734) */ - 3343, /* CDFF (52735) */ - 3343, /* CE00 (52736) */ - 3343, /* CE01 (52737) */ - 3343, /* CE02 (52738) */ - 3343, /* CE03 (52739) */ - 3343, /* CE04 (52740) */ - 3343, /* CE05 (52741) */ - 3343, /* CE06 (52742) */ - 3343, /* CE07 (52743) */ - 3343, /* CE08 (52744) */ - 3343, /* CE09 (52745) */ - 3343, /* CE0A (52746) */ - 3343, /* CE0B (52747) */ - 3343, /* CE0C (52748) */ - 3343, /* CE0D (52749) */ - 3343, /* CE0E (52750) */ - 3343, /* CE0F (52751) */ - 3343, /* CE10 (52752) */ - 3343, /* CE11 (52753) */ - 3343, /* CE12 (52754) */ - 3343, /* CE13 (52755) */ - 3343, /* CE14 (52756) */ - 3343, /* CE15 (52757) */ - 3343, /* CE16 (52758) */ - 3343, /* CE17 (52759) */ - 3343, /* CE18 (52760) */ - 3343, /* CE19 (52761) */ - 3343, /* CE1A (52762) */ - 3343, /* CE1B (52763) */ - 3343, /* CE1C (52764) */ - 3343, /* CE1D (52765) */ - 3343, /* CE1E (52766) */ - 3343, /* CE1F (52767) */ - 3343, /* CE20 (52768) */ - 3343, /* CE21 (52769) */ - 3343, /* CE22 (52770) */ - 3343, /* CE23 (52771) */ - 3343, /* CE24 (52772) */ - 3343, /* CE25 (52773) */ - 3343, /* CE26 (52774) */ - 3343, /* CE27 (52775) */ - 3343, /* CE28 (52776) */ - 3343, /* CE29 (52777) */ - 3343, /* CE2A (52778) */ - 3343, /* CE2B (52779) */ - 3343, /* CE2C (52780) */ - 3343, /* CE2D (52781) */ - 3343, /* CE2E (52782) */ - 3343, /* CE2F (52783) */ - 3343, /* CE30 (52784) */ - 3343, /* CE31 (52785) */ - 3343, /* CE32 (52786) */ - 3343, /* CE33 (52787) */ - 3343, /* CE34 (52788) */ - 3343, /* CE35 (52789) */ - 3343, /* CE36 (52790) */ - 3343, /* CE37 (52791) */ - 3343, /* CE38 (52792) */ - 3343, /* CE39 (52793) */ - 3343, /* CE3A (52794) */ - 3343, /* CE3B (52795) */ - 3343, /* CE3C (52796) */ - 3343, /* CE3D (52797) */ - 3343, /* CE3E (52798) */ - 3343, /* CE3F (52799) */ - 3343, /* CE40 (52800) */ - 3343, /* CE41 (52801) */ - 3343, /* CE42 (52802) */ - 3343, /* CE43 (52803) */ - 3343, /* CE44 (52804) */ - 3343, /* CE45 (52805) */ - 3343, /* CE46 (52806) */ - 3343, /* CE47 (52807) */ - 3343, /* CE48 (52808) */ - 3343, /* CE49 (52809) */ - 3343, /* CE4A (52810) */ - 3343, /* CE4B (52811) */ - 3343, /* CE4C (52812) */ - 3343, /* CE4D (52813) */ - 3343, /* CE4E (52814) */ - 3343, /* CE4F (52815) */ - 3343, /* CE50 (52816) */ - 3343, /* CE51 (52817) */ - 3343, /* CE52 (52818) */ - 3343, /* CE53 (52819) */ - 3343, /* CE54 (52820) */ - 3343, /* CE55 (52821) */ - 3343, /* CE56 (52822) */ - 3343, /* CE57 (52823) */ - 3343, /* CE58 (52824) */ - 3343, /* CE59 (52825) */ - 3343, /* CE5A (52826) */ - 3343, /* CE5B (52827) */ - 3343, /* CE5C (52828) */ - 3343, /* CE5D (52829) */ - 3343, /* CE5E (52830) */ - 3343, /* CE5F (52831) */ - 3343, /* CE60 (52832) */ - 3343, /* CE61 (52833) */ - 3343, /* CE62 (52834) */ - 3343, /* CE63 (52835) */ - 3343, /* CE64 (52836) */ - 3343, /* CE65 (52837) */ - 3343, /* CE66 (52838) */ - 3343, /* CE67 (52839) */ - 3343, /* CE68 (52840) */ - 3343, /* CE69 (52841) */ - 3343, /* CE6A (52842) */ - 3343, /* CE6B (52843) */ - 3343, /* CE6C (52844) */ - 3343, /* CE6D (52845) */ - 3343, /* CE6E (52846) */ - 3343, /* CE6F (52847) */ - 3343, /* CE70 (52848) */ - 3343, /* CE71 (52849) */ - 3343, /* CE72 (52850) */ - 3343, /* CE73 (52851) */ - 3343, /* CE74 (52852) */ - 3343, /* CE75 (52853) */ - 3343, /* CE76 (52854) */ - 3343, /* CE77 (52855) */ - 3343, /* CE78 (52856) */ - 3343, /* CE79 (52857) */ - 3343, /* CE7A (52858) */ - 3343, /* CE7B (52859) */ - 3343, /* CE7C (52860) */ - 3343, /* CE7D (52861) */ - 3343, /* CE7E (52862) */ - 3343, /* CE7F (52863) */ - 3343, /* CE80 (52864) */ - 3343, /* CE81 (52865) */ - 3343, /* CE82 (52866) */ - 3343, /* CE83 (52867) */ - 3343, /* CE84 (52868) */ - 3343, /* CE85 (52869) */ - 3343, /* CE86 (52870) */ - 3343, /* CE87 (52871) */ - 3343, /* CE88 (52872) */ - 3343, /* CE89 (52873) */ - 3343, /* CE8A (52874) */ - 3343, /* CE8B (52875) */ - 3343, /* CE8C (52876) */ - 3343, /* CE8D (52877) */ - 3343, /* CE8E (52878) */ - 3343, /* CE8F (52879) */ - 3343, /* CE90 (52880) */ - 3343, /* CE91 (52881) */ - 3343, /* CE92 (52882) */ - 3343, /* CE93 (52883) */ - 3343, /* CE94 (52884) */ - 3343, /* CE95 (52885) */ - 3343, /* CE96 (52886) */ - 3343, /* CE97 (52887) */ - 3343, /* CE98 (52888) */ - 3343, /* CE99 (52889) */ - 3343, /* CE9A (52890) */ - 3343, /* CE9B (52891) */ - 3343, /* CE9C (52892) */ - 3343, /* CE9D (52893) */ - 3343, /* CE9E (52894) */ - 3343, /* CE9F (52895) */ - 3343, /* CEA0 (52896) */ - 3343, /* CEA1 (52897) */ - 3343, /* CEA2 (52898) */ - 3343, /* CEA3 (52899) */ - 3343, /* CEA4 (52900) */ - 3343, /* CEA5 (52901) */ - 3343, /* CEA6 (52902) */ - 3343, /* CEA7 (52903) */ - 3343, /* CEA8 (52904) */ - 3343, /* CEA9 (52905) */ - 3343, /* CEAA (52906) */ - 3343, /* CEAB (52907) */ - 3343, /* CEAC (52908) */ - 3343, /* CEAD (52909) */ - 3343, /* CEAE (52910) */ - 3343, /* CEAF (52911) */ - 3343, /* CEB0 (52912) */ - 3343, /* CEB1 (52913) */ - 3343, /* CEB2 (52914) */ - 3343, /* CEB3 (52915) */ - 3343, /* CEB4 (52916) */ - 3343, /* CEB5 (52917) */ - 3343, /* CEB6 (52918) */ - 3343, /* CEB7 (52919) */ - 3343, /* CEB8 (52920) */ - 3343, /* CEB9 (52921) */ - 3343, /* CEBA (52922) */ - 3343, /* CEBB (52923) */ - 3343, /* CEBC (52924) */ - 3343, /* CEBD (52925) */ - 3343, /* CEBE (52926) */ - 3343, /* CEBF (52927) */ - 3343, /* CEC0 (52928) */ - 3343, /* CEC1 (52929) */ - 3343, /* CEC2 (52930) */ - 3343, /* CEC3 (52931) */ - 3343, /* CEC4 (52932) */ - 3343, /* CEC5 (52933) */ - 3343, /* CEC6 (52934) */ - 3343, /* CEC7 (52935) */ - 3343, /* CEC8 (52936) */ - 3343, /* CEC9 (52937) */ - 3343, /* CECA (52938) */ - 3343, /* CECB (52939) */ - 3343, /* CECC (52940) */ - 3343, /* CECD (52941) */ - 3343, /* CECE (52942) */ - 3343, /* CECF (52943) */ - 3343, /* CED0 (52944) */ - 3343, /* CED1 (52945) */ - 3343, /* CED2 (52946) */ - 3343, /* CED3 (52947) */ - 3343, /* CED4 (52948) */ - 3343, /* CED5 (52949) */ - 3343, /* CED6 (52950) */ - 3343, /* CED7 (52951) */ - 3343, /* CED8 (52952) */ - 3343, /* CED9 (52953) */ - 3343, /* CEDA (52954) */ - 3343, /* CEDB (52955) */ - 3343, /* CEDC (52956) */ - 3343, /* CEDD (52957) */ - 3343, /* CEDE (52958) */ - 3343, /* CEDF (52959) */ - 3343, /* CEE0 (52960) */ - 3343, /* CEE1 (52961) */ - 3343, /* CEE2 (52962) */ - 3343, /* CEE3 (52963) */ - 3343, /* CEE4 (52964) */ - 3343, /* CEE5 (52965) */ - 3343, /* CEE6 (52966) */ - 3343, /* CEE7 (52967) */ - 3343, /* CEE8 (52968) */ - 3343, /* CEE9 (52969) */ - 3343, /* CEEA (52970) */ - 3343, /* CEEB (52971) */ - 3343, /* CEEC (52972) */ - 3343, /* CEED (52973) */ - 3343, /* CEEE (52974) */ - 3343, /* CEEF (52975) */ - 3343, /* CEF0 (52976) */ - 3343, /* CEF1 (52977) */ - 3343, /* CEF2 (52978) */ - 3343, /* CEF3 (52979) */ - 3343, /* CEF4 (52980) */ - 3343, /* CEF5 (52981) */ - 3343, /* CEF6 (52982) */ - 3343, /* CEF7 (52983) */ - 3343, /* CEF8 (52984) */ - 3343, /* CEF9 (52985) */ - 3343, /* CEFA (52986) */ - 3343, /* CEFB (52987) */ - 3343, /* CEFC (52988) */ - 3343, /* CEFD (52989) */ - 3343, /* CEFE (52990) */ - 3343, /* CEFF (52991) */ - 3343, /* CF00 (52992) */ - 3343, /* CF01 (52993) */ - 3343, /* CF02 (52994) */ - 3343, /* CF03 (52995) */ - 3343, /* CF04 (52996) */ - 3343, /* CF05 (52997) */ - 3343, /* CF06 (52998) */ - 3343, /* CF07 (52999) */ - 3343, /* CF08 (53000) */ - 3343, /* CF09 (53001) */ - 3343, /* CF0A (53002) */ - 3343, /* CF0B (53003) */ - 3343, /* CF0C (53004) */ - 3343, /* CF0D (53005) */ - 3343, /* CF0E (53006) */ - 3343, /* CF0F (53007) */ - 3343, /* CF10 (53008) */ - 3343, /* CF11 (53009) */ - 3343, /* CF12 (53010) */ - 3343, /* CF13 (53011) */ - 3343, /* CF14 (53012) */ - 3343, /* CF15 (53013) */ - 3343, /* CF16 (53014) */ - 3343, /* CF17 (53015) */ - 3343, /* CF18 (53016) */ - 3343, /* CF19 (53017) */ - 3343, /* CF1A (53018) */ - 3343, /* CF1B (53019) */ - 3343, /* CF1C (53020) */ - 3343, /* CF1D (53021) */ - 3343, /* CF1E (53022) */ - 3343, /* CF1F (53023) */ - 3343, /* CF20 (53024) */ - 3343, /* CF21 (53025) */ - 3343, /* CF22 (53026) */ - 3343, /* CF23 (53027) */ - 3343, /* CF24 (53028) */ - 3343, /* CF25 (53029) */ - 3343, /* CF26 (53030) */ - 3343, /* CF27 (53031) */ - 3343, /* CF28 (53032) */ - 3343, /* CF29 (53033) */ - 3343, /* CF2A (53034) */ - 3343, /* CF2B (53035) */ - 3343, /* CF2C (53036) */ - 3343, /* CF2D (53037) */ - 3343, /* CF2E (53038) */ - 3343, /* CF2F (53039) */ - 3343, /* CF30 (53040) */ - 3343, /* CF31 (53041) */ - 3343, /* CF32 (53042) */ - 3343, /* CF33 (53043) */ - 3343, /* CF34 (53044) */ - 3343, /* CF35 (53045) */ - 3343, /* CF36 (53046) */ - 3343, /* CF37 (53047) */ - 3343, /* CF38 (53048) */ - 3343, /* CF39 (53049) */ - 3343, /* CF3A (53050) */ - 3343, /* CF3B (53051) */ - 3343, /* CF3C (53052) */ - 3343, /* CF3D (53053) */ - 3343, /* CF3E (53054) */ - 3343, /* CF3F (53055) */ - 3343, /* CF40 (53056) */ - 3343, /* CF41 (53057) */ - 3343, /* CF42 (53058) */ - 3343, /* CF43 (53059) */ - 3343, /* CF44 (53060) */ - 3343, /* CF45 (53061) */ - 3343, /* CF46 (53062) */ - 3343, /* CF47 (53063) */ - 3343, /* CF48 (53064) */ - 3343, /* CF49 (53065) */ - 3343, /* CF4A (53066) */ - 3343, /* CF4B (53067) */ - 3343, /* CF4C (53068) */ - 3343, /* CF4D (53069) */ - 3343, /* CF4E (53070) */ - 3343, /* CF4F (53071) */ - 3343, /* CF50 (53072) */ - 3343, /* CF51 (53073) */ - 3343, /* CF52 (53074) */ - 3343, /* CF53 (53075) */ - 3343, /* CF54 (53076) */ - 3343, /* CF55 (53077) */ - 3343, /* CF56 (53078) */ - 3343, /* CF57 (53079) */ - 3343, /* CF58 (53080) */ - 3343, /* CF59 (53081) */ - 3343, /* CF5A (53082) */ - 3343, /* CF5B (53083) */ - 3343, /* CF5C (53084) */ - 3343, /* CF5D (53085) */ - 3343, /* CF5E (53086) */ - 3343, /* CF5F (53087) */ - 3343, /* CF60 (53088) */ - 3343, /* CF61 (53089) */ - 3343, /* CF62 (53090) */ - 3343, /* CF63 (53091) */ - 3343, /* CF64 (53092) */ - 3343, /* CF65 (53093) */ - 3343, /* CF66 (53094) */ - 3343, /* CF67 (53095) */ - 3343, /* CF68 (53096) */ - 3343, /* CF69 (53097) */ - 3343, /* CF6A (53098) */ - 3343, /* CF6B (53099) */ - 3343, /* CF6C (53100) */ - 3343, /* CF6D (53101) */ - 3343, /* CF6E (53102) */ - 3343, /* CF6F (53103) */ - 3343, /* CF70 (53104) */ - 3343, /* CF71 (53105) */ - 3343, /* CF72 (53106) */ - 3343, /* CF73 (53107) */ - 3343, /* CF74 (53108) */ - 3343, /* CF75 (53109) */ - 3343, /* CF76 (53110) */ - 3343, /* CF77 (53111) */ - 3343, /* CF78 (53112) */ - 3343, /* CF79 (53113) */ - 3343, /* CF7A (53114) */ - 3343, /* CF7B (53115) */ - 3343, /* CF7C (53116) */ - 3343, /* CF7D (53117) */ - 3343, /* CF7E (53118) */ - 3343, /* CF7F (53119) */ - 3343, /* CF80 (53120) */ - 3343, /* CF81 (53121) */ - 3343, /* CF82 (53122) */ - 3343, /* CF83 (53123) */ - 3343, /* CF84 (53124) */ - 3343, /* CF85 (53125) */ - 3343, /* CF86 (53126) */ - 3343, /* CF87 (53127) */ - 3343, /* CF88 (53128) */ - 3343, /* CF89 (53129) */ - 3343, /* CF8A (53130) */ - 3343, /* CF8B (53131) */ - 3343, /* CF8C (53132) */ - 3343, /* CF8D (53133) */ - 3343, /* CF8E (53134) */ - 3343, /* CF8F (53135) */ - 3343, /* CF90 (53136) */ - 3343, /* CF91 (53137) */ - 3343, /* CF92 (53138) */ - 3343, /* CF93 (53139) */ - 3343, /* CF94 (53140) */ - 3343, /* CF95 (53141) */ - 3343, /* CF96 (53142) */ - 3343, /* CF97 (53143) */ - 3343, /* CF98 (53144) */ - 3343, /* CF99 (53145) */ - 3343, /* CF9A (53146) */ - 3343, /* CF9B (53147) */ - 3343, /* CF9C (53148) */ - 3343, /* CF9D (53149) */ - 3343, /* CF9E (53150) */ - 3343, /* CF9F (53151) */ - 3343, /* CFA0 (53152) */ - 3343, /* CFA1 (53153) */ - 3343, /* CFA2 (53154) */ - 3343, /* CFA3 (53155) */ - 3343, /* CFA4 (53156) */ - 3343, /* CFA5 (53157) */ - 3343, /* CFA6 (53158) */ - 3343, /* CFA7 (53159) */ - 3343, /* CFA8 (53160) */ - 3343, /* CFA9 (53161) */ - 3343, /* CFAA (53162) */ - 3343, /* CFAB (53163) */ - 3343, /* CFAC (53164) */ - 3343, /* CFAD (53165) */ - 3343, /* CFAE (53166) */ - 3343, /* CFAF (53167) */ - 3343, /* CFB0 (53168) */ - 3343, /* CFB1 (53169) */ - 3343, /* CFB2 (53170) */ - 3343, /* CFB3 (53171) */ - 3343, /* CFB4 (53172) */ - 3343, /* CFB5 (53173) */ - 3343, /* CFB6 (53174) */ - 3343, /* CFB7 (53175) */ - 3343, /* CFB8 (53176) */ - 3343, /* CFB9 (53177) */ - 3343, /* CFBA (53178) */ - 3343, /* CFBB (53179) */ - 3343, /* CFBC (53180) */ - 3343, /* CFBD (53181) */ - 3343, /* CFBE (53182) */ - 3343, /* CFBF (53183) */ - 3343, /* CFC0 (53184) */ - 3343, /* CFC1 (53185) */ - 3343, /* CFC2 (53186) */ - 3343, /* CFC3 (53187) */ - 3343, /* CFC4 (53188) */ - 3343, /* CFC5 (53189) */ - 3343, /* CFC6 (53190) */ - 3343, /* CFC7 (53191) */ - 3343, /* CFC8 (53192) */ - 3343, /* CFC9 (53193) */ - 3343, /* CFCA (53194) */ - 3343, /* CFCB (53195) */ - 3343, /* CFCC (53196) */ - 3343, /* CFCD (53197) */ - 3343, /* CFCE (53198) */ - 3343, /* CFCF (53199) */ - 3343, /* CFD0 (53200) */ - 3343, /* CFD1 (53201) */ - 3343, /* CFD2 (53202) */ - 3343, /* CFD3 (53203) */ - 3343, /* CFD4 (53204) */ - 3343, /* CFD5 (53205) */ - 3343, /* CFD6 (53206) */ - 3343, /* CFD7 (53207) */ - 3343, /* CFD8 (53208) */ - 3343, /* CFD9 (53209) */ - 3343, /* CFDA (53210) */ - 3343, /* CFDB (53211) */ - 3343, /* CFDC (53212) */ - 3343, /* CFDD (53213) */ - 3343, /* CFDE (53214) */ - 3343, /* CFDF (53215) */ - 3343, /* CFE0 (53216) */ - 3343, /* CFE1 (53217) */ - 3343, /* CFE2 (53218) */ - 3343, /* CFE3 (53219) */ - 3343, /* CFE4 (53220) */ - 3343, /* CFE5 (53221) */ - 3343, /* CFE6 (53222) */ - 3343, /* CFE7 (53223) */ - 3343, /* CFE8 (53224) */ - 3343, /* CFE9 (53225) */ - 3343, /* CFEA (53226) */ - 3343, /* CFEB (53227) */ - 3343, /* CFEC (53228) */ - 3343, /* CFED (53229) */ - 3343, /* CFEE (53230) */ - 3343, /* CFEF (53231) */ - 3343, /* CFF0 (53232) */ - 3343, /* CFF1 (53233) */ - 3343, /* CFF2 (53234) */ - 3343, /* CFF3 (53235) */ - 3343, /* CFF4 (53236) */ - 3343, /* CFF5 (53237) */ - 3343, /* CFF6 (53238) */ - 3343, /* CFF7 (53239) */ - 3343, /* CFF8 (53240) */ - 3343, /* CFF9 (53241) */ - 3343, /* CFFA (53242) */ - 3343, /* CFFB (53243) */ - 3343, /* CFFC (53244) */ - 3343, /* CFFD (53245) */ - 3343, /* CFFE (53246) */ - 3343, /* CFFF (53247) */ - 3343, /* D000 (53248) */ - 3343, /* D001 (53249) */ - 3343, /* D002 (53250) */ - 3343, /* D003 (53251) */ - 3343, /* D004 (53252) */ - 3343, /* D005 (53253) */ - 3343, /* D006 (53254) */ - 3343, /* D007 (53255) */ - 3343, /* D008 (53256) */ - 3343, /* D009 (53257) */ - 3343, /* D00A (53258) */ - 3343, /* D00B (53259) */ - 3343, /* D00C (53260) */ - 3343, /* D00D (53261) */ - 3343, /* D00E (53262) */ - 3343, /* D00F (53263) */ - 3343, /* D010 (53264) */ - 3343, /* D011 (53265) */ - 3343, /* D012 (53266) */ - 3343, /* D013 (53267) */ - 3343, /* D014 (53268) */ - 3343, /* D015 (53269) */ - 3343, /* D016 (53270) */ - 3343, /* D017 (53271) */ - 3343, /* D018 (53272) */ - 3343, /* D019 (53273) */ - 3343, /* D01A (53274) */ - 3343, /* D01B (53275) */ - 3343, /* D01C (53276) */ - 3343, /* D01D (53277) */ - 3343, /* D01E (53278) */ - 3343, /* D01F (53279) */ - 3343, /* D020 (53280) */ - 3343, /* D021 (53281) */ - 3343, /* D022 (53282) */ - 3343, /* D023 (53283) */ - 3343, /* D024 (53284) */ - 3343, /* D025 (53285) */ - 3343, /* D026 (53286) */ - 3343, /* D027 (53287) */ - 3343, /* D028 (53288) */ - 3343, /* D029 (53289) */ - 3343, /* D02A (53290) */ - 3343, /* D02B (53291) */ - 3343, /* D02C (53292) */ - 3343, /* D02D (53293) */ - 3343, /* D02E (53294) */ - 3343, /* D02F (53295) */ - 3343, /* D030 (53296) */ - 3343, /* D031 (53297) */ - 3343, /* D032 (53298) */ - 3343, /* D033 (53299) */ - 3343, /* D034 (53300) */ - 3343, /* D035 (53301) */ - 3343, /* D036 (53302) */ - 3343, /* D037 (53303) */ - 3343, /* D038 (53304) */ - 3343, /* D039 (53305) */ - 3343, /* D03A (53306) */ - 3343, /* D03B (53307) */ - 3343, /* D03C (53308) */ - 3343, /* D03D (53309) */ - 3343, /* D03E (53310) */ - 3343, /* D03F (53311) */ - 3343, /* D040 (53312) */ - 3343, /* D041 (53313) */ - 3343, /* D042 (53314) */ - 3343, /* D043 (53315) */ - 3343, /* D044 (53316) */ - 3343, /* D045 (53317) */ - 3343, /* D046 (53318) */ - 3343, /* D047 (53319) */ - 3343, /* D048 (53320) */ - 3343, /* D049 (53321) */ - 3343, /* D04A (53322) */ - 3343, /* D04B (53323) */ - 3343, /* D04C (53324) */ - 3343, /* D04D (53325) */ - 3343, /* D04E (53326) */ - 3343, /* D04F (53327) */ - 3343, /* D050 (53328) */ - 3343, /* D051 (53329) */ - 3343, /* D052 (53330) */ - 3343, /* D053 (53331) */ - 3343, /* D054 (53332) */ - 3343, /* D055 (53333) */ - 3343, /* D056 (53334) */ - 3343, /* D057 (53335) */ - 3343, /* D058 (53336) */ - 3343, /* D059 (53337) */ - 3343, /* D05A (53338) */ - 3343, /* D05B (53339) */ - 3343, /* D05C (53340) */ - 3343, /* D05D (53341) */ - 3343, /* D05E (53342) */ - 3343, /* D05F (53343) */ - 3343, /* D060 (53344) */ - 3343, /* D061 (53345) */ - 3343, /* D062 (53346) */ - 3343, /* D063 (53347) */ - 3343, /* D064 (53348) */ - 3343, /* D065 (53349) */ - 3343, /* D066 (53350) */ - 3343, /* D067 (53351) */ - 3343, /* D068 (53352) */ - 3343, /* D069 (53353) */ - 3343, /* D06A (53354) */ - 3343, /* D06B (53355) */ - 3343, /* D06C (53356) */ - 3343, /* D06D (53357) */ - 3343, /* D06E (53358) */ - 3343, /* D06F (53359) */ - 3343, /* D070 (53360) */ - 3343, /* D071 (53361) */ - 3343, /* D072 (53362) */ - 3343, /* D073 (53363) */ - 3343, /* D074 (53364) */ - 3343, /* D075 (53365) */ - 3343, /* D076 (53366) */ - 3343, /* D077 (53367) */ - 3343, /* D078 (53368) */ - 3343, /* D079 (53369) */ - 3343, /* D07A (53370) */ - 3343, /* D07B (53371) */ - 3343, /* D07C (53372) */ - 3343, /* D07D (53373) */ - 3343, /* D07E (53374) */ - 3343, /* D07F (53375) */ - 3343, /* D080 (53376) */ - 3343, /* D081 (53377) */ - 3343, /* D082 (53378) */ - 3343, /* D083 (53379) */ - 3343, /* D084 (53380) */ - 3343, /* D085 (53381) */ - 3343, /* D086 (53382) */ - 3343, /* D087 (53383) */ - 3343, /* D088 (53384) */ - 3343, /* D089 (53385) */ - 3343, /* D08A (53386) */ - 3343, /* D08B (53387) */ - 3343, /* D08C (53388) */ - 3343, /* D08D (53389) */ - 3343, /* D08E (53390) */ - 3343, /* D08F (53391) */ - 3343, /* D090 (53392) */ - 3343, /* D091 (53393) */ - 3343, /* D092 (53394) */ - 3343, /* D093 (53395) */ - 3343, /* D094 (53396) */ - 3343, /* D095 (53397) */ - 3343, /* D096 (53398) */ - 3343, /* D097 (53399) */ - 3343, /* D098 (53400) */ - 3343, /* D099 (53401) */ - 3343, /* D09A (53402) */ - 3343, /* D09B (53403) */ - 3343, /* D09C (53404) */ - 3343, /* D09D (53405) */ - 3343, /* D09E (53406) */ - 3343, /* D09F (53407) */ - 3343, /* D0A0 (53408) */ - 3343, /* D0A1 (53409) */ - 3343, /* D0A2 (53410) */ - 3343, /* D0A3 (53411) */ - 3343, /* D0A4 (53412) */ - 3343, /* D0A5 (53413) */ - 3343, /* D0A6 (53414) */ - 3343, /* D0A7 (53415) */ - 3343, /* D0A8 (53416) */ - 3343, /* D0A9 (53417) */ - 3343, /* D0AA (53418) */ - 3343, /* D0AB (53419) */ - 3343, /* D0AC (53420) */ - 3343, /* D0AD (53421) */ - 3343, /* D0AE (53422) */ - 3343, /* D0AF (53423) */ - 3343, /* D0B0 (53424) */ - 3343, /* D0B1 (53425) */ - 3343, /* D0B2 (53426) */ - 3343, /* D0B3 (53427) */ - 3343, /* D0B4 (53428) */ - 3343, /* D0B5 (53429) */ - 3343, /* D0B6 (53430) */ - 3343, /* D0B7 (53431) */ - 3343, /* D0B8 (53432) */ - 3343, /* D0B9 (53433) */ - 3343, /* D0BA (53434) */ - 3343, /* D0BB (53435) */ - 3343, /* D0BC (53436) */ - 3343, /* D0BD (53437) */ - 3343, /* D0BE (53438) */ - 3343, /* D0BF (53439) */ - 3343, /* D0C0 (53440) */ - 3343, /* D0C1 (53441) */ - 3343, /* D0C2 (53442) */ - 3343, /* D0C3 (53443) */ - 3343, /* D0C4 (53444) */ - 3343, /* D0C5 (53445) */ - 3343, /* D0C6 (53446) */ - 3343, /* D0C7 (53447) */ - 3343, /* D0C8 (53448) */ - 3343, /* D0C9 (53449) */ - 3343, /* D0CA (53450) */ - 3343, /* D0CB (53451) */ - 3343, /* D0CC (53452) */ - 3343, /* D0CD (53453) */ - 3343, /* D0CE (53454) */ - 3343, /* D0CF (53455) */ - 3343, /* D0D0 (53456) */ - 3343, /* D0D1 (53457) */ - 3343, /* D0D2 (53458) */ - 3343, /* D0D3 (53459) */ - 3343, /* D0D4 (53460) */ - 3343, /* D0D5 (53461) */ - 3343, /* D0D6 (53462) */ - 3343, /* D0D7 (53463) */ - 3343, /* D0D8 (53464) */ - 3343, /* D0D9 (53465) */ - 3343, /* D0DA (53466) */ - 3343, /* D0DB (53467) */ - 3343, /* D0DC (53468) */ - 3343, /* D0DD (53469) */ - 3343, /* D0DE (53470) */ - 3343, /* D0DF (53471) */ - 3343, /* D0E0 (53472) */ - 3343, /* D0E1 (53473) */ - 3343, /* D0E2 (53474) */ - 3343, /* D0E3 (53475) */ - 3343, /* D0E4 (53476) */ - 3343, /* D0E5 (53477) */ - 3343, /* D0E6 (53478) */ - 3343, /* D0E7 (53479) */ - 3343, /* D0E8 (53480) */ - 3343, /* D0E9 (53481) */ - 3343, /* D0EA (53482) */ - 3343, /* D0EB (53483) */ - 3343, /* D0EC (53484) */ - 3343, /* D0ED (53485) */ - 3343, /* D0EE (53486) */ - 3343, /* D0EF (53487) */ - 3343, /* D0F0 (53488) */ - 3343, /* D0F1 (53489) */ - 3343, /* D0F2 (53490) */ - 3343, /* D0F3 (53491) */ - 3343, /* D0F4 (53492) */ - 3343, /* D0F5 (53493) */ - 3343, /* D0F6 (53494) */ - 3343, /* D0F7 (53495) */ - 3343, /* D0F8 (53496) */ - 3343, /* D0F9 (53497) */ - 3343, /* D0FA (53498) */ - 3343, /* D0FB (53499) */ - 3343, /* D0FC (53500) */ - 3343, /* D0FD (53501) */ - 3343, /* D0FE (53502) */ - 3343, /* D0FF (53503) */ - 3343, /* D100 (53504) */ - 3343, /* D101 (53505) */ - 3343, /* D102 (53506) */ - 3343, /* D103 (53507) */ - 3343, /* D104 (53508) */ - 3343, /* D105 (53509) */ - 3343, /* D106 (53510) */ - 3343, /* D107 (53511) */ - 3343, /* D108 (53512) */ - 3343, /* D109 (53513) */ - 3343, /* D10A (53514) */ - 3343, /* D10B (53515) */ - 3343, /* D10C (53516) */ - 3343, /* D10D (53517) */ - 3343, /* D10E (53518) */ - 3343, /* D10F (53519) */ - 3343, /* D110 (53520) */ - 3343, /* D111 (53521) */ - 3343, /* D112 (53522) */ - 3343, /* D113 (53523) */ - 3343, /* D114 (53524) */ - 3343, /* D115 (53525) */ - 3343, /* D116 (53526) */ - 3343, /* D117 (53527) */ - 3343, /* D118 (53528) */ - 3343, /* D119 (53529) */ - 3343, /* D11A (53530) */ - 3343, /* D11B (53531) */ - 3343, /* D11C (53532) */ - 3343, /* D11D (53533) */ - 3343, /* D11E (53534) */ - 3343, /* D11F (53535) */ - 3343, /* D120 (53536) */ - 3343, /* D121 (53537) */ - 3343, /* D122 (53538) */ - 3343, /* D123 (53539) */ - 3343, /* D124 (53540) */ - 3343, /* D125 (53541) */ - 3343, /* D126 (53542) */ - 3343, /* D127 (53543) */ - 3343, /* D128 (53544) */ - 3343, /* D129 (53545) */ - 3343, /* D12A (53546) */ - 3343, /* D12B (53547) */ - 3343, /* D12C (53548) */ - 3343, /* D12D (53549) */ - 3343, /* D12E (53550) */ - 3343, /* D12F (53551) */ - 3343, /* D130 (53552) */ - 3343, /* D131 (53553) */ - 3343, /* D132 (53554) */ - 3343, /* D133 (53555) */ - 3343, /* D134 (53556) */ - 3343, /* D135 (53557) */ - 3343, /* D136 (53558) */ - 3343, /* D137 (53559) */ - 3343, /* D138 (53560) */ - 3343, /* D139 (53561) */ - 3343, /* D13A (53562) */ - 3343, /* D13B (53563) */ - 3343, /* D13C (53564) */ - 3343, /* D13D (53565) */ - 3343, /* D13E (53566) */ - 3343, /* D13F (53567) */ - 3343, /* D140 (53568) */ - 3343, /* D141 (53569) */ - 3343, /* D142 (53570) */ - 3343, /* D143 (53571) */ - 3343, /* D144 (53572) */ - 3343, /* D145 (53573) */ - 3343, /* D146 (53574) */ - 3343, /* D147 (53575) */ - 3343, /* D148 (53576) */ - 3343, /* D149 (53577) */ - 3343, /* D14A (53578) */ - 3343, /* D14B (53579) */ - 3343, /* D14C (53580) */ - 3343, /* D14D (53581) */ - 3343, /* D14E (53582) */ - 3343, /* D14F (53583) */ - 3343, /* D150 (53584) */ - 3343, /* D151 (53585) */ - 3343, /* D152 (53586) */ - 3343, /* D153 (53587) */ - 3343, /* D154 (53588) */ - 3343, /* D155 (53589) */ - 3343, /* D156 (53590) */ - 3343, /* D157 (53591) */ - 3343, /* D158 (53592) */ - 3343, /* D159 (53593) */ - 3343, /* D15A (53594) */ - 3343, /* D15B (53595) */ - 3343, /* D15C (53596) */ - 3343, /* D15D (53597) */ - 3343, /* D15E (53598) */ - 3343, /* D15F (53599) */ - 3343, /* D160 (53600) */ - 3343, /* D161 (53601) */ - 3343, /* D162 (53602) */ - 3343, /* D163 (53603) */ - 3343, /* D164 (53604) */ - 3343, /* D165 (53605) */ - 3343, /* D166 (53606) */ - 3343, /* D167 (53607) */ - 3343, /* D168 (53608) */ - 3343, /* D169 (53609) */ - 3343, /* D16A (53610) */ - 3343, /* D16B (53611) */ - 3343, /* D16C (53612) */ - 3343, /* D16D (53613) */ - 3343, /* D16E (53614) */ - 3343, /* D16F (53615) */ - 3343, /* D170 (53616) */ - 3343, /* D171 (53617) */ - 3343, /* D172 (53618) */ - 3343, /* D173 (53619) */ - 3343, /* D174 (53620) */ - 3343, /* D175 (53621) */ - 3343, /* D176 (53622) */ - 3343, /* D177 (53623) */ - 3343, /* D178 (53624) */ - 3343, /* D179 (53625) */ - 3343, /* D17A (53626) */ - 3343, /* D17B (53627) */ - 3343, /* D17C (53628) */ - 3343, /* D17D (53629) */ - 3343, /* D17E (53630) */ - 3343, /* D17F (53631) */ - 3343, /* D180 (53632) */ - 3343, /* D181 (53633) */ - 3343, /* D182 (53634) */ - 3343, /* D183 (53635) */ - 3343, /* D184 (53636) */ - 3343, /* D185 (53637) */ - 3343, /* D186 (53638) */ - 3343, /* D187 (53639) */ - 3343, /* D188 (53640) */ - 3343, /* D189 (53641) */ - 3343, /* D18A (53642) */ - 3343, /* D18B (53643) */ - 3343, /* D18C (53644) */ - 3343, /* D18D (53645) */ - 3343, /* D18E (53646) */ - 3343, /* D18F (53647) */ - 3343, /* D190 (53648) */ - 3343, /* D191 (53649) */ - 3343, /* D192 (53650) */ - 3343, /* D193 (53651) */ - 3343, /* D194 (53652) */ - 3343, /* D195 (53653) */ - 3343, /* D196 (53654) */ - 3343, /* D197 (53655) */ - 3343, /* D198 (53656) */ - 3343, /* D199 (53657) */ - 3343, /* D19A (53658) */ - 3343, /* D19B (53659) */ - 3343, /* D19C (53660) */ - 3343, /* D19D (53661) */ - 3343, /* D19E (53662) */ - 3343, /* D19F (53663) */ - 3343, /* D1A0 (53664) */ - 3343, /* D1A1 (53665) */ - 3343, /* D1A2 (53666) */ - 3343, /* D1A3 (53667) */ - 3343, /* D1A4 (53668) */ - 3343, /* D1A5 (53669) */ - 3343, /* D1A6 (53670) */ - 3343, /* D1A7 (53671) */ - 3343, /* D1A8 (53672) */ - 3343, /* D1A9 (53673) */ - 3343, /* D1AA (53674) */ - 3343, /* D1AB (53675) */ - 3343, /* D1AC (53676) */ - 3343, /* D1AD (53677) */ - 3343, /* D1AE (53678) */ - 3343, /* D1AF (53679) */ - 3343, /* D1B0 (53680) */ - 3343, /* D1B1 (53681) */ - 3343, /* D1B2 (53682) */ - 3343, /* D1B3 (53683) */ - 3343, /* D1B4 (53684) */ - 3343, /* D1B5 (53685) */ - 3343, /* D1B6 (53686) */ - 3343, /* D1B7 (53687) */ - 3343, /* D1B8 (53688) */ - 3343, /* D1B9 (53689) */ - 3343, /* D1BA (53690) */ - 3343, /* D1BB (53691) */ - 3343, /* D1BC (53692) */ - 3343, /* D1BD (53693) */ - 3343, /* D1BE (53694) */ - 3343, /* D1BF (53695) */ - 3343, /* D1C0 (53696) */ - 3343, /* D1C1 (53697) */ - 3343, /* D1C2 (53698) */ - 3343, /* D1C3 (53699) */ - 3343, /* D1C4 (53700) */ - 3343, /* D1C5 (53701) */ - 3343, /* D1C6 (53702) */ - 3343, /* D1C7 (53703) */ - 3343, /* D1C8 (53704) */ - 3343, /* D1C9 (53705) */ - 3343, /* D1CA (53706) */ - 3343, /* D1CB (53707) */ - 3343, /* D1CC (53708) */ - 3343, /* D1CD (53709) */ - 3343, /* D1CE (53710) */ - 3343, /* D1CF (53711) */ - 3343, /* D1D0 (53712) */ - 3343, /* D1D1 (53713) */ - 3343, /* D1D2 (53714) */ - 3343, /* D1D3 (53715) */ - 3343, /* D1D4 (53716) */ - 3343, /* D1D5 (53717) */ - 3343, /* D1D6 (53718) */ - 3343, /* D1D7 (53719) */ - 3343, /* D1D8 (53720) */ - 3343, /* D1D9 (53721) */ - 3343, /* D1DA (53722) */ - 3343, /* D1DB (53723) */ - 3343, /* D1DC (53724) */ - 3343, /* D1DD (53725) */ - 3343, /* D1DE (53726) */ - 3343, /* D1DF (53727) */ - 3343, /* D1E0 (53728) */ - 3343, /* D1E1 (53729) */ - 3343, /* D1E2 (53730) */ - 3343, /* D1E3 (53731) */ - 3343, /* D1E4 (53732) */ - 3343, /* D1E5 (53733) */ - 3343, /* D1E6 (53734) */ - 3343, /* D1E7 (53735) */ - 3343, /* D1E8 (53736) */ - 3343, /* D1E9 (53737) */ - 3343, /* D1EA (53738) */ - 3343, /* D1EB (53739) */ - 3343, /* D1EC (53740) */ - 3343, /* D1ED (53741) */ - 3343, /* D1EE (53742) */ - 3343, /* D1EF (53743) */ - 3343, /* D1F0 (53744) */ - 3343, /* D1F1 (53745) */ - 3343, /* D1F2 (53746) */ - 3343, /* D1F3 (53747) */ - 3343, /* D1F4 (53748) */ - 3343, /* D1F5 (53749) */ - 3343, /* D1F6 (53750) */ - 3343, /* D1F7 (53751) */ - 3343, /* D1F8 (53752) */ - 3343, /* D1F9 (53753) */ - 3343, /* D1FA (53754) */ - 3343, /* D1FB (53755) */ - 3343, /* D1FC (53756) */ - 3343, /* D1FD (53757) */ - 3343, /* D1FE (53758) */ - 3343, /* D1FF (53759) */ - 3343, /* D200 (53760) */ - 3343, /* D201 (53761) */ - 3343, /* D202 (53762) */ - 3343, /* D203 (53763) */ - 3343, /* D204 (53764) */ - 3343, /* D205 (53765) */ - 3343, /* D206 (53766) */ - 3343, /* D207 (53767) */ - 3343, /* D208 (53768) */ - 3343, /* D209 (53769) */ - 3343, /* D20A (53770) */ - 3343, /* D20B (53771) */ - 3343, /* D20C (53772) */ - 3343, /* D20D (53773) */ - 3343, /* D20E (53774) */ - 3343, /* D20F (53775) */ - 3343, /* D210 (53776) */ - 3343, /* D211 (53777) */ - 3343, /* D212 (53778) */ - 3343, /* D213 (53779) */ - 3343, /* D214 (53780) */ - 3343, /* D215 (53781) */ - 3343, /* D216 (53782) */ - 3343, /* D217 (53783) */ - 3343, /* D218 (53784) */ - 3343, /* D219 (53785) */ - 3343, /* D21A (53786) */ - 3343, /* D21B (53787) */ - 3343, /* D21C (53788) */ - 3343, /* D21D (53789) */ - 3343, /* D21E (53790) */ - 3343, /* D21F (53791) */ - 3343, /* D220 (53792) */ - 3343, /* D221 (53793) */ - 3343, /* D222 (53794) */ - 3343, /* D223 (53795) */ - 3343, /* D224 (53796) */ - 3343, /* D225 (53797) */ - 3343, /* D226 (53798) */ - 3343, /* D227 (53799) */ - 3343, /* D228 (53800) */ - 3343, /* D229 (53801) */ - 3343, /* D22A (53802) */ - 3343, /* D22B (53803) */ - 3343, /* D22C (53804) */ - 3343, /* D22D (53805) */ - 3343, /* D22E (53806) */ - 3343, /* D22F (53807) */ - 3343, /* D230 (53808) */ - 3343, /* D231 (53809) */ - 3343, /* D232 (53810) */ - 3343, /* D233 (53811) */ - 3343, /* D234 (53812) */ - 3343, /* D235 (53813) */ - 3343, /* D236 (53814) */ - 3343, /* D237 (53815) */ - 3343, /* D238 (53816) */ - 3343, /* D239 (53817) */ - 3343, /* D23A (53818) */ - 3343, /* D23B (53819) */ - 3343, /* D23C (53820) */ - 3343, /* D23D (53821) */ - 3343, /* D23E (53822) */ - 3343, /* D23F (53823) */ - 3343, /* D240 (53824) */ - 3343, /* D241 (53825) */ - 3343, /* D242 (53826) */ - 3343, /* D243 (53827) */ - 3343, /* D244 (53828) */ - 3343, /* D245 (53829) */ - 3343, /* D246 (53830) */ - 3343, /* D247 (53831) */ - 3343, /* D248 (53832) */ - 3343, /* D249 (53833) */ - 3343, /* D24A (53834) */ - 3343, /* D24B (53835) */ - 3343, /* D24C (53836) */ - 3343, /* D24D (53837) */ - 3343, /* D24E (53838) */ - 3343, /* D24F (53839) */ - 3343, /* D250 (53840) */ - 3343, /* D251 (53841) */ - 3343, /* D252 (53842) */ - 3343, /* D253 (53843) */ - 3343, /* D254 (53844) */ - 3343, /* D255 (53845) */ - 3343, /* D256 (53846) */ - 3343, /* D257 (53847) */ - 3343, /* D258 (53848) */ - 3343, /* D259 (53849) */ - 3343, /* D25A (53850) */ - 3343, /* D25B (53851) */ - 3343, /* D25C (53852) */ - 3343, /* D25D (53853) */ - 3343, /* D25E (53854) */ - 3343, /* D25F (53855) */ - 3343, /* D260 (53856) */ - 3343, /* D261 (53857) */ - 3343, /* D262 (53858) */ - 3343, /* D263 (53859) */ - 3343, /* D264 (53860) */ - 3343, /* D265 (53861) */ - 3343, /* D266 (53862) */ - 3343, /* D267 (53863) */ - 3343, /* D268 (53864) */ - 3343, /* D269 (53865) */ - 3343, /* D26A (53866) */ - 3343, /* D26B (53867) */ - 3343, /* D26C (53868) */ - 3343, /* D26D (53869) */ - 3343, /* D26E (53870) */ - 3343, /* D26F (53871) */ - 3343, /* D270 (53872) */ - 3343, /* D271 (53873) */ - 3343, /* D272 (53874) */ - 3343, /* D273 (53875) */ - 3343, /* D274 (53876) */ - 3343, /* D275 (53877) */ - 3343, /* D276 (53878) */ - 3343, /* D277 (53879) */ - 3343, /* D278 (53880) */ - 3343, /* D279 (53881) */ - 3343, /* D27A (53882) */ - 3343, /* D27B (53883) */ - 3343, /* D27C (53884) */ - 3343, /* D27D (53885) */ - 3343, /* D27E (53886) */ - 3343, /* D27F (53887) */ - 3343, /* D280 (53888) */ - 3343, /* D281 (53889) */ - 3343, /* D282 (53890) */ - 3343, /* D283 (53891) */ - 3343, /* D284 (53892) */ - 3343, /* D285 (53893) */ - 3343, /* D286 (53894) */ - 3343, /* D287 (53895) */ - 3343, /* D288 (53896) */ - 3343, /* D289 (53897) */ - 3343, /* D28A (53898) */ - 3343, /* D28B (53899) */ - 3343, /* D28C (53900) */ - 3343, /* D28D (53901) */ - 3343, /* D28E (53902) */ - 3343, /* D28F (53903) */ - 3343, /* D290 (53904) */ - 3343, /* D291 (53905) */ - 3343, /* D292 (53906) */ - 3343, /* D293 (53907) */ - 3343, /* D294 (53908) */ - 3343, /* D295 (53909) */ - 3343, /* D296 (53910) */ - 3343, /* D297 (53911) */ - 3343, /* D298 (53912) */ - 3343, /* D299 (53913) */ - 3343, /* D29A (53914) */ - 3343, /* D29B (53915) */ - 3343, /* D29C (53916) */ - 3343, /* D29D (53917) */ - 3343, /* D29E (53918) */ - 3343, /* D29F (53919) */ - 3343, /* D2A0 (53920) */ - 3343, /* D2A1 (53921) */ - 3343, /* D2A2 (53922) */ - 3343, /* D2A3 (53923) */ - 3343, /* D2A4 (53924) */ - 3343, /* D2A5 (53925) */ - 3343, /* D2A6 (53926) */ - 3343, /* D2A7 (53927) */ - 3343, /* D2A8 (53928) */ - 3343, /* D2A9 (53929) */ - 3343, /* D2AA (53930) */ - 3343, /* D2AB (53931) */ - 3343, /* D2AC (53932) */ - 3343, /* D2AD (53933) */ - 3343, /* D2AE (53934) */ - 3343, /* D2AF (53935) */ - 3343, /* D2B0 (53936) */ - 3343, /* D2B1 (53937) */ - 3343, /* D2B2 (53938) */ - 3343, /* D2B3 (53939) */ - 3343, /* D2B4 (53940) */ - 3343, /* D2B5 (53941) */ - 3343, /* D2B6 (53942) */ - 3343, /* D2B7 (53943) */ - 3343, /* D2B8 (53944) */ - 3343, /* D2B9 (53945) */ - 3343, /* D2BA (53946) */ - 3343, /* D2BB (53947) */ - 3343, /* D2BC (53948) */ - 3343, /* D2BD (53949) */ - 3343, /* D2BE (53950) */ - 3343, /* D2BF (53951) */ - 3343, /* D2C0 (53952) */ - 3343, /* D2C1 (53953) */ - 3343, /* D2C2 (53954) */ - 3343, /* D2C3 (53955) */ - 3343, /* D2C4 (53956) */ - 3343, /* D2C5 (53957) */ - 3343, /* D2C6 (53958) */ - 3343, /* D2C7 (53959) */ - 3343, /* D2C8 (53960) */ - 3343, /* D2C9 (53961) */ - 3343, /* D2CA (53962) */ - 3343, /* D2CB (53963) */ - 3343, /* D2CC (53964) */ - 3343, /* D2CD (53965) */ - 3343, /* D2CE (53966) */ - 3343, /* D2CF (53967) */ - 3343, /* D2D0 (53968) */ - 3343, /* D2D1 (53969) */ - 3343, /* D2D2 (53970) */ - 3343, /* D2D3 (53971) */ - 3343, /* D2D4 (53972) */ - 3343, /* D2D5 (53973) */ - 3343, /* D2D6 (53974) */ - 3343, /* D2D7 (53975) */ - 3343, /* D2D8 (53976) */ - 3343, /* D2D9 (53977) */ - 3343, /* D2DA (53978) */ - 3343, /* D2DB (53979) */ - 3343, /* D2DC (53980) */ - 3343, /* D2DD (53981) */ - 3343, /* D2DE (53982) */ - 3343, /* D2DF (53983) */ - 3343, /* D2E0 (53984) */ - 3343, /* D2E1 (53985) */ - 3343, /* D2E2 (53986) */ - 3343, /* D2E3 (53987) */ - 3343, /* D2E4 (53988) */ - 3343, /* D2E5 (53989) */ - 3343, /* D2E6 (53990) */ - 3343, /* D2E7 (53991) */ - 3343, /* D2E8 (53992) */ - 3343, /* D2E9 (53993) */ - 3343, /* D2EA (53994) */ - 3343, /* D2EB (53995) */ - 3343, /* D2EC (53996) */ - 3343, /* D2ED (53997) */ - 3343, /* D2EE (53998) */ - 3343, /* D2EF (53999) */ - 3343, /* D2F0 (54000) */ - 3343, /* D2F1 (54001) */ - 3343, /* D2F2 (54002) */ - 3343, /* D2F3 (54003) */ - 3343, /* D2F4 (54004) */ - 3343, /* D2F5 (54005) */ - 3343, /* D2F6 (54006) */ - 3343, /* D2F7 (54007) */ - 3343, /* D2F8 (54008) */ - 3343, /* D2F9 (54009) */ - 3343, /* D2FA (54010) */ - 3343, /* D2FB (54011) */ - 3343, /* D2FC (54012) */ - 3343, /* D2FD (54013) */ - 3343, /* D2FE (54014) */ - 3343, /* D2FF (54015) */ - 3343, /* D300 (54016) */ - 3343, /* D301 (54017) */ - 3343, /* D302 (54018) */ - 3343, /* D303 (54019) */ - 3343, /* D304 (54020) */ - 3343, /* D305 (54021) */ - 3343, /* D306 (54022) */ - 3343, /* D307 (54023) */ - 3343, /* D308 (54024) */ - 3343, /* D309 (54025) */ - 3343, /* D30A (54026) */ - 3343, /* D30B (54027) */ - 3343, /* D30C (54028) */ - 3343, /* D30D (54029) */ - 3343, /* D30E (54030) */ - 3343, /* D30F (54031) */ - 3343, /* D310 (54032) */ - 3343, /* D311 (54033) */ - 3343, /* D312 (54034) */ - 3343, /* D313 (54035) */ - 3343, /* D314 (54036) */ - 3343, /* D315 (54037) */ - 3343, /* D316 (54038) */ - 3343, /* D317 (54039) */ - 3343, /* D318 (54040) */ - 3343, /* D319 (54041) */ - 3343, /* D31A (54042) */ - 3343, /* D31B (54043) */ - 3343, /* D31C (54044) */ - 3343, /* D31D (54045) */ - 3343, /* D31E (54046) */ - 3343, /* D31F (54047) */ - 3343, /* D320 (54048) */ - 3343, /* D321 (54049) */ - 3343, /* D322 (54050) */ - 3343, /* D323 (54051) */ - 3343, /* D324 (54052) */ - 3343, /* D325 (54053) */ - 3343, /* D326 (54054) */ - 3343, /* D327 (54055) */ - 3343, /* D328 (54056) */ - 3343, /* D329 (54057) */ - 3343, /* D32A (54058) */ - 3343, /* D32B (54059) */ - 3343, /* D32C (54060) */ - 3343, /* D32D (54061) */ - 3343, /* D32E (54062) */ - 3343, /* D32F (54063) */ - 3343, /* D330 (54064) */ - 3343, /* D331 (54065) */ - 3343, /* D332 (54066) */ - 3343, /* D333 (54067) */ - 3343, /* D334 (54068) */ - 3343, /* D335 (54069) */ - 3343, /* D336 (54070) */ - 3343, /* D337 (54071) */ - 3343, /* D338 (54072) */ - 3343, /* D339 (54073) */ - 3343, /* D33A (54074) */ - 3343, /* D33B (54075) */ - 3343, /* D33C (54076) */ - 3343, /* D33D (54077) */ - 3343, /* D33E (54078) */ - 3343, /* D33F (54079) */ - 3343, /* D340 (54080) */ - 3343, /* D341 (54081) */ - 3343, /* D342 (54082) */ - 3343, /* D343 (54083) */ - 3343, /* D344 (54084) */ - 3343, /* D345 (54085) */ - 3343, /* D346 (54086) */ - 3343, /* D347 (54087) */ - 3343, /* D348 (54088) */ - 3343, /* D349 (54089) */ - 3343, /* D34A (54090) */ - 3343, /* D34B (54091) */ - 3343, /* D34C (54092) */ - 3343, /* D34D (54093) */ - 3343, /* D34E (54094) */ - 3343, /* D34F (54095) */ - 3343, /* D350 (54096) */ - 3343, /* D351 (54097) */ - 3343, /* D352 (54098) */ - 3343, /* D353 (54099) */ - 3343, /* D354 (54100) */ - 3343, /* D355 (54101) */ - 3343, /* D356 (54102) */ - 3343, /* D357 (54103) */ - 3343, /* D358 (54104) */ - 3343, /* D359 (54105) */ - 3343, /* D35A (54106) */ - 3343, /* D35B (54107) */ - 3343, /* D35C (54108) */ - 3343, /* D35D (54109) */ - 3343, /* D35E (54110) */ - 3343, /* D35F (54111) */ - 3343, /* D360 (54112) */ - 3343, /* D361 (54113) */ - 3343, /* D362 (54114) */ - 3343, /* D363 (54115) */ - 3343, /* D364 (54116) */ - 3343, /* D365 (54117) */ - 3343, /* D366 (54118) */ - 3343, /* D367 (54119) */ - 3343, /* D368 (54120) */ - 3343, /* D369 (54121) */ - 3343, /* D36A (54122) */ - 3343, /* D36B (54123) */ - 3343, /* D36C (54124) */ - 3343, /* D36D (54125) */ - 3343, /* D36E (54126) */ - 3343, /* D36F (54127) */ - 3343, /* D370 (54128) */ - 3343, /* D371 (54129) */ - 3343, /* D372 (54130) */ - 3343, /* D373 (54131) */ - 3343, /* D374 (54132) */ - 3343, /* D375 (54133) */ - 3343, /* D376 (54134) */ - 3343, /* D377 (54135) */ - 3343, /* D378 (54136) */ - 3343, /* D379 (54137) */ - 3343, /* D37A (54138) */ - 3343, /* D37B (54139) */ - 3343, /* D37C (54140) */ - 3343, /* D37D (54141) */ - 3343, /* D37E (54142) */ - 3343, /* D37F (54143) */ - 3343, /* D380 (54144) */ - 3343, /* D381 (54145) */ - 3343, /* D382 (54146) */ - 3343, /* D383 (54147) */ - 3343, /* D384 (54148) */ - 3343, /* D385 (54149) */ - 3343, /* D386 (54150) */ - 3343, /* D387 (54151) */ - 3343, /* D388 (54152) */ - 3343, /* D389 (54153) */ - 3343, /* D38A (54154) */ - 3343, /* D38B (54155) */ - 3343, /* D38C (54156) */ - 3343, /* D38D (54157) */ - 3343, /* D38E (54158) */ - 3343, /* D38F (54159) */ - 3343, /* D390 (54160) */ - 3343, /* D391 (54161) */ - 3343, /* D392 (54162) */ - 3343, /* D393 (54163) */ - 3343, /* D394 (54164) */ - 3343, /* D395 (54165) */ - 3343, /* D396 (54166) */ - 3343, /* D397 (54167) */ - 3343, /* D398 (54168) */ - 3343, /* D399 (54169) */ - 3343, /* D39A (54170) */ - 3343, /* D39B (54171) */ - 3343, /* D39C (54172) */ - 3343, /* D39D (54173) */ - 3343, /* D39E (54174) */ - 3343, /* D39F (54175) */ - 3343, /* D3A0 (54176) */ - 3343, /* D3A1 (54177) */ - 3343, /* D3A2 (54178) */ - 3343, /* D3A3 (54179) */ - 3343, /* D3A4 (54180) */ - 3343, /* D3A5 (54181) */ - 3343, /* D3A6 (54182) */ - 3343, /* D3A7 (54183) */ - 3343, /* D3A8 (54184) */ - 3343, /* D3A9 (54185) */ - 3343, /* D3AA (54186) */ - 3343, /* D3AB (54187) */ - 3343, /* D3AC (54188) */ - 3343, /* D3AD (54189) */ - 3343, /* D3AE (54190) */ - 3343, /* D3AF (54191) */ - 3343, /* D3B0 (54192) */ - 3343, /* D3B1 (54193) */ - 3343, /* D3B2 (54194) */ - 3343, /* D3B3 (54195) */ - 3343, /* D3B4 (54196) */ - 3343, /* D3B5 (54197) */ - 3343, /* D3B6 (54198) */ - 3343, /* D3B7 (54199) */ - 3343, /* D3B8 (54200) */ - 3343, /* D3B9 (54201) */ - 3343, /* D3BA (54202) */ - 3343, /* D3BB (54203) */ - 3343, /* D3BC (54204) */ - 3343, /* D3BD (54205) */ - 3343, /* D3BE (54206) */ - 3343, /* D3BF (54207) */ - 3343, /* D3C0 (54208) */ - 3343, /* D3C1 (54209) */ - 3343, /* D3C2 (54210) */ - 3343, /* D3C3 (54211) */ - 3343, /* D3C4 (54212) */ - 3343, /* D3C5 (54213) */ - 3343, /* D3C6 (54214) */ - 3343, /* D3C7 (54215) */ - 3343, /* D3C8 (54216) */ - 3343, /* D3C9 (54217) */ - 3343, /* D3CA (54218) */ - 3343, /* D3CB (54219) */ - 3343, /* D3CC (54220) */ - 3343, /* D3CD (54221) */ - 3343, /* D3CE (54222) */ - 3343, /* D3CF (54223) */ - 3343, /* D3D0 (54224) */ - 3343, /* D3D1 (54225) */ - 3343, /* D3D2 (54226) */ - 3343, /* D3D3 (54227) */ - 3343, /* D3D4 (54228) */ - 3343, /* D3D5 (54229) */ - 3343, /* D3D6 (54230) */ - 3343, /* D3D7 (54231) */ - 3343, /* D3D8 (54232) */ - 3343, /* D3D9 (54233) */ - 3343, /* D3DA (54234) */ - 3343, /* D3DB (54235) */ - 3343, /* D3DC (54236) */ - 3343, /* D3DD (54237) */ - 3343, /* D3DE (54238) */ - 3343, /* D3DF (54239) */ - 3343, /* D3E0 (54240) */ - 3343, /* D3E1 (54241) */ - 3343, /* D3E2 (54242) */ - 3343, /* D3E3 (54243) */ - 3343, /* D3E4 (54244) */ - 3343, /* D3E5 (54245) */ - 3343, /* D3E6 (54246) */ - 3343, /* D3E7 (54247) */ - 3343, /* D3E8 (54248) */ - 3343, /* D3E9 (54249) */ - 3343, /* D3EA (54250) */ - 3343, /* D3EB (54251) */ - 3343, /* D3EC (54252) */ - 3343, /* D3ED (54253) */ - 3343, /* D3EE (54254) */ - 3343, /* D3EF (54255) */ - 3343, /* D3F0 (54256) */ - 3343, /* D3F1 (54257) */ - 3343, /* D3F2 (54258) */ - 3343, /* D3F3 (54259) */ - 3343, /* D3F4 (54260) */ - 3343, /* D3F5 (54261) */ - 3343, /* D3F6 (54262) */ - 3343, /* D3F7 (54263) */ - 3343, /* D3F8 (54264) */ - 3343, /* D3F9 (54265) */ - 3343, /* D3FA (54266) */ - 3343, /* D3FB (54267) */ - 3343, /* D3FC (54268) */ - 3343, /* D3FD (54269) */ - 3343, /* D3FE (54270) */ - 3343, /* D3FF (54271) */ - 3343, /* D400 (54272) */ - 3343, /* D401 (54273) */ - 3343, /* D402 (54274) */ - 3343, /* D403 (54275) */ - 3343, /* D404 (54276) */ - 3343, /* D405 (54277) */ - 3343, /* D406 (54278) */ - 3343, /* D407 (54279) */ - 3343, /* D408 (54280) */ - 3343, /* D409 (54281) */ - 3343, /* D40A (54282) */ - 3343, /* D40B (54283) */ - 3343, /* D40C (54284) */ - 3343, /* D40D (54285) */ - 3343, /* D40E (54286) */ - 3343, /* D40F (54287) */ - 3343, /* D410 (54288) */ - 3343, /* D411 (54289) */ - 3343, /* D412 (54290) */ - 3343, /* D413 (54291) */ - 3343, /* D414 (54292) */ - 3343, /* D415 (54293) */ - 3343, /* D416 (54294) */ - 3343, /* D417 (54295) */ - 3343, /* D418 (54296) */ - 3343, /* D419 (54297) */ - 3343, /* D41A (54298) */ - 3343, /* D41B (54299) */ - 3343, /* D41C (54300) */ - 3343, /* D41D (54301) */ - 3343, /* D41E (54302) */ - 3343, /* D41F (54303) */ - 3343, /* D420 (54304) */ - 3343, /* D421 (54305) */ - 3343, /* D422 (54306) */ - 3343, /* D423 (54307) */ - 3343, /* D424 (54308) */ - 3343, /* D425 (54309) */ - 3343, /* D426 (54310) */ - 3343, /* D427 (54311) */ - 3343, /* D428 (54312) */ - 3343, /* D429 (54313) */ - 3343, /* D42A (54314) */ - 3343, /* D42B (54315) */ - 3343, /* D42C (54316) */ - 3343, /* D42D (54317) */ - 3343, /* D42E (54318) */ - 3343, /* D42F (54319) */ - 3343, /* D430 (54320) */ - 3343, /* D431 (54321) */ - 3343, /* D432 (54322) */ - 3343, /* D433 (54323) */ - 3343, /* D434 (54324) */ - 3343, /* D435 (54325) */ - 3343, /* D436 (54326) */ - 3343, /* D437 (54327) */ - 3343, /* D438 (54328) */ - 3343, /* D439 (54329) */ - 3343, /* D43A (54330) */ - 3343, /* D43B (54331) */ - 3343, /* D43C (54332) */ - 3343, /* D43D (54333) */ - 3343, /* D43E (54334) */ - 3343, /* D43F (54335) */ - 3343, /* D440 (54336) */ - 3343, /* D441 (54337) */ - 3343, /* D442 (54338) */ - 3343, /* D443 (54339) */ - 3343, /* D444 (54340) */ - 3343, /* D445 (54341) */ - 3343, /* D446 (54342) */ - 3343, /* D447 (54343) */ - 3343, /* D448 (54344) */ - 3343, /* D449 (54345) */ - 3343, /* D44A (54346) */ - 3343, /* D44B (54347) */ - 3343, /* D44C (54348) */ - 3343, /* D44D (54349) */ - 3343, /* D44E (54350) */ - 3343, /* D44F (54351) */ - 3343, /* D450 (54352) */ - 3343, /* D451 (54353) */ - 3343, /* D452 (54354) */ - 3343, /* D453 (54355) */ - 3343, /* D454 (54356) */ - 3343, /* D455 (54357) */ - 3343, /* D456 (54358) */ - 3343, /* D457 (54359) */ - 3343, /* D458 (54360) */ - 3343, /* D459 (54361) */ - 3343, /* D45A (54362) */ - 3343, /* D45B (54363) */ - 3343, /* D45C (54364) */ - 3343, /* D45D (54365) */ - 3343, /* D45E (54366) */ - 3343, /* D45F (54367) */ - 3343, /* D460 (54368) */ - 3343, /* D461 (54369) */ - 3343, /* D462 (54370) */ - 3343, /* D463 (54371) */ - 3343, /* D464 (54372) */ - 3343, /* D465 (54373) */ - 3343, /* D466 (54374) */ - 3343, /* D467 (54375) */ - 3343, /* D468 (54376) */ - 3343, /* D469 (54377) */ - 3343, /* D46A (54378) */ - 3343, /* D46B (54379) */ - 3343, /* D46C (54380) */ - 3343, /* D46D (54381) */ - 3343, /* D46E (54382) */ - 3343, /* D46F (54383) */ - 3343, /* D470 (54384) */ - 3343, /* D471 (54385) */ - 3343, /* D472 (54386) */ - 3343, /* D473 (54387) */ - 3343, /* D474 (54388) */ - 3343, /* D475 (54389) */ - 3343, /* D476 (54390) */ - 3343, /* D477 (54391) */ - 3343, /* D478 (54392) */ - 3343, /* D479 (54393) */ - 3343, /* D47A (54394) */ - 3343, /* D47B (54395) */ - 3343, /* D47C (54396) */ - 3343, /* D47D (54397) */ - 3343, /* D47E (54398) */ - 3343, /* D47F (54399) */ - 3343, /* D480 (54400) */ - 3343, /* D481 (54401) */ - 3343, /* D482 (54402) */ - 3343, /* D483 (54403) */ - 3343, /* D484 (54404) */ - 3343, /* D485 (54405) */ - 3343, /* D486 (54406) */ - 3343, /* D487 (54407) */ - 3343, /* D488 (54408) */ - 3343, /* D489 (54409) */ - 3343, /* D48A (54410) */ - 3343, /* D48B (54411) */ - 3343, /* D48C (54412) */ - 3343, /* D48D (54413) */ - 3343, /* D48E (54414) */ - 3343, /* D48F (54415) */ - 3343, /* D490 (54416) */ - 3343, /* D491 (54417) */ - 3343, /* D492 (54418) */ - 3343, /* D493 (54419) */ - 3343, /* D494 (54420) */ - 3343, /* D495 (54421) */ - 3343, /* D496 (54422) */ - 3343, /* D497 (54423) */ - 3343, /* D498 (54424) */ - 3343, /* D499 (54425) */ - 3343, /* D49A (54426) */ - 3343, /* D49B (54427) */ - 3343, /* D49C (54428) */ - 3343, /* D49D (54429) */ - 3343, /* D49E (54430) */ - 3343, /* D49F (54431) */ - 3343, /* D4A0 (54432) */ - 3343, /* D4A1 (54433) */ - 3343, /* D4A2 (54434) */ - 3343, /* D4A3 (54435) */ - 3343, /* D4A4 (54436) */ - 3343, /* D4A5 (54437) */ - 3343, /* D4A6 (54438) */ - 3343, /* D4A7 (54439) */ - 3343, /* D4A8 (54440) */ - 3343, /* D4A9 (54441) */ - 3343, /* D4AA (54442) */ - 3343, /* D4AB (54443) */ - 3343, /* D4AC (54444) */ - 3343, /* D4AD (54445) */ - 3343, /* D4AE (54446) */ - 3343, /* D4AF (54447) */ - 3343, /* D4B0 (54448) */ - 3343, /* D4B1 (54449) */ - 3343, /* D4B2 (54450) */ - 3343, /* D4B3 (54451) */ - 3343, /* D4B4 (54452) */ - 3343, /* D4B5 (54453) */ - 3343, /* D4B6 (54454) */ - 3343, /* D4B7 (54455) */ - 3343, /* D4B8 (54456) */ - 3343, /* D4B9 (54457) */ - 3343, /* D4BA (54458) */ - 3343, /* D4BB (54459) */ - 3343, /* D4BC (54460) */ - 3343, /* D4BD (54461) */ - 3343, /* D4BE (54462) */ - 3343, /* D4BF (54463) */ - 3343, /* D4C0 (54464) */ - 3343, /* D4C1 (54465) */ - 3343, /* D4C2 (54466) */ - 3343, /* D4C3 (54467) */ - 3343, /* D4C4 (54468) */ - 3343, /* D4C5 (54469) */ - 3343, /* D4C6 (54470) */ - 3343, /* D4C7 (54471) */ - 3343, /* D4C8 (54472) */ - 3343, /* D4C9 (54473) */ - 3343, /* D4CA (54474) */ - 3343, /* D4CB (54475) */ - 3343, /* D4CC (54476) */ - 3343, /* D4CD (54477) */ - 3343, /* D4CE (54478) */ - 3343, /* D4CF (54479) */ - 3343, /* D4D0 (54480) */ - 3343, /* D4D1 (54481) */ - 3343, /* D4D2 (54482) */ - 3343, /* D4D3 (54483) */ - 3343, /* D4D4 (54484) */ - 3343, /* D4D5 (54485) */ - 3343, /* D4D6 (54486) */ - 3343, /* D4D7 (54487) */ - 3343, /* D4D8 (54488) */ - 3343, /* D4D9 (54489) */ - 3343, /* D4DA (54490) */ - 3343, /* D4DB (54491) */ - 3343, /* D4DC (54492) */ - 3343, /* D4DD (54493) */ - 3343, /* D4DE (54494) */ - 3343, /* D4DF (54495) */ - 3343, /* D4E0 (54496) */ - 3343, /* D4E1 (54497) */ - 3343, /* D4E2 (54498) */ - 3343, /* D4E3 (54499) */ - 3343, /* D4E4 (54500) */ - 3343, /* D4E5 (54501) */ - 3343, /* D4E6 (54502) */ - 3343, /* D4E7 (54503) */ - 3343, /* D4E8 (54504) */ - 3343, /* D4E9 (54505) */ - 3343, /* D4EA (54506) */ - 3343, /* D4EB (54507) */ - 3343, /* D4EC (54508) */ - 3343, /* D4ED (54509) */ - 3343, /* D4EE (54510) */ - 3343, /* D4EF (54511) */ - 3343, /* D4F0 (54512) */ - 3343, /* D4F1 (54513) */ - 3343, /* D4F2 (54514) */ - 3343, /* D4F3 (54515) */ - 3343, /* D4F4 (54516) */ - 3343, /* D4F5 (54517) */ - 3343, /* D4F6 (54518) */ - 3343, /* D4F7 (54519) */ - 3343, /* D4F8 (54520) */ - 3343, /* D4F9 (54521) */ - 3343, /* D4FA (54522) */ - 3343, /* D4FB (54523) */ - 3343, /* D4FC (54524) */ - 3343, /* D4FD (54525) */ - 3343, /* D4FE (54526) */ - 3343, /* D4FF (54527) */ - 3343, /* D500 (54528) */ - 3343, /* D501 (54529) */ - 3343, /* D502 (54530) */ - 3343, /* D503 (54531) */ - 3343, /* D504 (54532) */ - 3343, /* D505 (54533) */ - 3343, /* D506 (54534) */ - 3343, /* D507 (54535) */ - 3343, /* D508 (54536) */ - 3343, /* D509 (54537) */ - 3343, /* D50A (54538) */ - 3343, /* D50B (54539) */ - 3343, /* D50C (54540) */ - 3343, /* D50D (54541) */ - 3343, /* D50E (54542) */ - 3343, /* D50F (54543) */ - 3343, /* D510 (54544) */ - 3343, /* D511 (54545) */ - 3343, /* D512 (54546) */ - 3343, /* D513 (54547) */ - 3343, /* D514 (54548) */ - 3343, /* D515 (54549) */ - 3343, /* D516 (54550) */ - 3343, /* D517 (54551) */ - 3343, /* D518 (54552) */ - 3343, /* D519 (54553) */ - 3343, /* D51A (54554) */ - 3343, /* D51B (54555) */ - 3343, /* D51C (54556) */ - 3343, /* D51D (54557) */ - 3343, /* D51E (54558) */ - 3343, /* D51F (54559) */ - 3343, /* D520 (54560) */ - 3343, /* D521 (54561) */ - 3343, /* D522 (54562) */ - 3343, /* D523 (54563) */ - 3343, /* D524 (54564) */ - 3343, /* D525 (54565) */ - 3343, /* D526 (54566) */ - 3343, /* D527 (54567) */ - 3343, /* D528 (54568) */ - 3343, /* D529 (54569) */ - 3343, /* D52A (54570) */ - 3343, /* D52B (54571) */ - 3343, /* D52C (54572) */ - 3343, /* D52D (54573) */ - 3343, /* D52E (54574) */ - 3343, /* D52F (54575) */ - 3343, /* D530 (54576) */ - 3343, /* D531 (54577) */ - 3343, /* D532 (54578) */ - 3343, /* D533 (54579) */ - 3343, /* D534 (54580) */ - 3343, /* D535 (54581) */ - 3343, /* D536 (54582) */ - 3343, /* D537 (54583) */ - 3343, /* D538 (54584) */ - 3343, /* D539 (54585) */ - 3343, /* D53A (54586) */ - 3343, /* D53B (54587) */ - 3343, /* D53C (54588) */ - 3343, /* D53D (54589) */ - 3343, /* D53E (54590) */ - 3343, /* D53F (54591) */ - 3343, /* D540 (54592) */ - 3343, /* D541 (54593) */ - 3343, /* D542 (54594) */ - 3343, /* D543 (54595) */ - 3343, /* D544 (54596) */ - 3343, /* D545 (54597) */ - 3343, /* D546 (54598) */ - 3343, /* D547 (54599) */ - 3343, /* D548 (54600) */ - 3343, /* D549 (54601) */ - 3343, /* D54A (54602) */ - 3343, /* D54B (54603) */ - 3343, /* D54C (54604) */ - 3343, /* D54D (54605) */ - 3343, /* D54E (54606) */ - 3343, /* D54F (54607) */ - 3343, /* D550 (54608) */ - 3343, /* D551 (54609) */ - 3343, /* D552 (54610) */ - 3343, /* D553 (54611) */ - 3343, /* D554 (54612) */ - 3343, /* D555 (54613) */ - 3343, /* D556 (54614) */ - 3343, /* D557 (54615) */ - 3343, /* D558 (54616) */ - 3343, /* D559 (54617) */ - 3343, /* D55A (54618) */ - 3343, /* D55B (54619) */ - 3343, /* D55C (54620) */ - 3343, /* D55D (54621) */ - 3343, /* D55E (54622) */ - 3343, /* D55F (54623) */ - 3343, /* D560 (54624) */ - 3343, /* D561 (54625) */ - 3343, /* D562 (54626) */ - 3343, /* D563 (54627) */ - 3343, /* D564 (54628) */ - 3343, /* D565 (54629) */ - 3343, /* D566 (54630) */ - 3343, /* D567 (54631) */ - 3343, /* D568 (54632) */ - 3343, /* D569 (54633) */ - 3343, /* D56A (54634) */ - 3343, /* D56B (54635) */ - 3343, /* D56C (54636) */ - 3343, /* D56D (54637) */ - 3343, /* D56E (54638) */ - 3343, /* D56F (54639) */ - 3343, /* D570 (54640) */ - 3343, /* D571 (54641) */ - 3343, /* D572 (54642) */ - 3343, /* D573 (54643) */ - 3343, /* D574 (54644) */ - 3343, /* D575 (54645) */ - 3343, /* D576 (54646) */ - 3343, /* D577 (54647) */ - 3343, /* D578 (54648) */ - 3343, /* D579 (54649) */ - 3343, /* D57A (54650) */ - 3343, /* D57B (54651) */ - 3343, /* D57C (54652) */ - 3343, /* D57D (54653) */ - 3343, /* D57E (54654) */ - 3343, /* D57F (54655) */ - 3343, /* D580 (54656) */ - 3343, /* D581 (54657) */ - 3343, /* D582 (54658) */ - 3343, /* D583 (54659) */ - 3343, /* D584 (54660) */ - 3343, /* D585 (54661) */ - 3343, /* D586 (54662) */ - 3343, /* D587 (54663) */ - 3343, /* D588 (54664) */ - 3343, /* D589 (54665) */ - 3343, /* D58A (54666) */ - 3343, /* D58B (54667) */ - 3343, /* D58C (54668) */ - 3343, /* D58D (54669) */ - 3343, /* D58E (54670) */ - 3343, /* D58F (54671) */ - 3343, /* D590 (54672) */ - 3343, /* D591 (54673) */ - 3343, /* D592 (54674) */ - 3343, /* D593 (54675) */ - 3343, /* D594 (54676) */ - 3343, /* D595 (54677) */ - 3343, /* D596 (54678) */ - 3343, /* D597 (54679) */ - 3343, /* D598 (54680) */ - 3343, /* D599 (54681) */ - 3343, /* D59A (54682) */ - 3343, /* D59B (54683) */ - 3343, /* D59C (54684) */ - 3343, /* D59D (54685) */ - 3343, /* D59E (54686) */ - 3343, /* D59F (54687) */ - 3343, /* D5A0 (54688) */ - 3343, /* D5A1 (54689) */ - 3343, /* D5A2 (54690) */ - 3343, /* D5A3 (54691) */ - 3343, /* D5A4 (54692) */ - 3343, /* D5A5 (54693) */ - 3343, /* D5A6 (54694) */ - 3343, /* D5A7 (54695) */ - 3343, /* D5A8 (54696) */ - 3343, /* D5A9 (54697) */ - 3343, /* D5AA (54698) */ - 3343, /* D5AB (54699) */ - 3343, /* D5AC (54700) */ - 3343, /* D5AD (54701) */ - 3343, /* D5AE (54702) */ - 3343, /* D5AF (54703) */ - 3343, /* D5B0 (54704) */ - 3343, /* D5B1 (54705) */ - 3343, /* D5B2 (54706) */ - 3343, /* D5B3 (54707) */ - 3343, /* D5B4 (54708) */ - 3343, /* D5B5 (54709) */ - 3343, /* D5B6 (54710) */ - 3343, /* D5B7 (54711) */ - 3343, /* D5B8 (54712) */ - 3343, /* D5B9 (54713) */ - 3343, /* D5BA (54714) */ - 3343, /* D5BB (54715) */ - 3343, /* D5BC (54716) */ - 3343, /* D5BD (54717) */ - 3343, /* D5BE (54718) */ - 3343, /* D5BF (54719) */ - 3343, /* D5C0 (54720) */ - 3343, /* D5C1 (54721) */ - 3343, /* D5C2 (54722) */ - 3343, /* D5C3 (54723) */ - 3343, /* D5C4 (54724) */ - 3343, /* D5C5 (54725) */ - 3343, /* D5C6 (54726) */ - 3343, /* D5C7 (54727) */ - 3343, /* D5C8 (54728) */ - 3343, /* D5C9 (54729) */ - 3343, /* D5CA (54730) */ - 3343, /* D5CB (54731) */ - 3343, /* D5CC (54732) */ - 3343, /* D5CD (54733) */ - 3343, /* D5CE (54734) */ - 3343, /* D5CF (54735) */ - 3343, /* D5D0 (54736) */ - 3343, /* D5D1 (54737) */ - 3343, /* D5D2 (54738) */ - 3343, /* D5D3 (54739) */ - 3343, /* D5D4 (54740) */ - 3343, /* D5D5 (54741) */ - 3343, /* D5D6 (54742) */ - 3343, /* D5D7 (54743) */ - 3343, /* D5D8 (54744) */ - 3343, /* D5D9 (54745) */ - 3343, /* D5DA (54746) */ - 3343, /* D5DB (54747) */ - 3343, /* D5DC (54748) */ - 3343, /* D5DD (54749) */ - 3343, /* D5DE (54750) */ - 3343, /* D5DF (54751) */ - 3343, /* D5E0 (54752) */ - 3343, /* D5E1 (54753) */ - 3343, /* D5E2 (54754) */ - 3343, /* D5E3 (54755) */ - 3343, /* D5E4 (54756) */ - 3343, /* D5E5 (54757) */ - 3343, /* D5E6 (54758) */ - 3343, /* D5E7 (54759) */ - 3343, /* D5E8 (54760) */ - 3343, /* D5E9 (54761) */ - 3343, /* D5EA (54762) */ - 3343, /* D5EB (54763) */ - 3343, /* D5EC (54764) */ - 3343, /* D5ED (54765) */ - 3343, /* D5EE (54766) */ - 3343, /* D5EF (54767) */ - 3343, /* D5F0 (54768) */ - 3343, /* D5F1 (54769) */ - 3343, /* D5F2 (54770) */ - 3343, /* D5F3 (54771) */ - 3343, /* D5F4 (54772) */ - 3343, /* D5F5 (54773) */ - 3343, /* D5F6 (54774) */ - 3343, /* D5F7 (54775) */ - 3343, /* D5F8 (54776) */ - 3343, /* D5F9 (54777) */ - 3343, /* D5FA (54778) */ - 3343, /* D5FB (54779) */ - 3343, /* D5FC (54780) */ - 3343, /* D5FD (54781) */ - 3343, /* D5FE (54782) */ - 3343, /* D5FF (54783) */ - 3343, /* D600 (54784) */ - 3343, /* D601 (54785) */ - 3343, /* D602 (54786) */ - 3343, /* D603 (54787) */ - 3343, /* D604 (54788) */ - 3343, /* D605 (54789) */ - 3343, /* D606 (54790) */ - 3343, /* D607 (54791) */ - 3343, /* D608 (54792) */ - 3343, /* D609 (54793) */ - 3343, /* D60A (54794) */ - 3343, /* D60B (54795) */ - 3343, /* D60C (54796) */ - 3343, /* D60D (54797) */ - 3343, /* D60E (54798) */ - 3343, /* D60F (54799) */ - 3343, /* D610 (54800) */ - 3343, /* D611 (54801) */ - 3343, /* D612 (54802) */ - 3343, /* D613 (54803) */ - 3343, /* D614 (54804) */ - 3343, /* D615 (54805) */ - 3343, /* D616 (54806) */ - 3343, /* D617 (54807) */ - 3343, /* D618 (54808) */ - 3343, /* D619 (54809) */ - 3343, /* D61A (54810) */ - 3343, /* D61B (54811) */ - 3343, /* D61C (54812) */ - 3343, /* D61D (54813) */ - 3343, /* D61E (54814) */ - 3343, /* D61F (54815) */ - 3343, /* D620 (54816) */ - 3343, /* D621 (54817) */ - 3343, /* D622 (54818) */ - 3343, /* D623 (54819) */ - 3343, /* D624 (54820) */ - 3343, /* D625 (54821) */ - 3343, /* D626 (54822) */ - 3343, /* D627 (54823) */ - 3343, /* D628 (54824) */ - 3343, /* D629 (54825) */ - 3343, /* D62A (54826) */ - 3343, /* D62B (54827) */ - 3343, /* D62C (54828) */ - 3343, /* D62D (54829) */ - 3343, /* D62E (54830) */ - 3343, /* D62F (54831) */ - 3343, /* D630 (54832) */ - 3343, /* D631 (54833) */ - 3343, /* D632 (54834) */ - 3343, /* D633 (54835) */ - 3343, /* D634 (54836) */ - 3343, /* D635 (54837) */ - 3343, /* D636 (54838) */ - 3343, /* D637 (54839) */ - 3343, /* D638 (54840) */ - 3343, /* D639 (54841) */ - 3343, /* D63A (54842) */ - 3343, /* D63B (54843) */ - 3343, /* D63C (54844) */ - 3343, /* D63D (54845) */ - 3343, /* D63E (54846) */ - 3343, /* D63F (54847) */ - 3343, /* D640 (54848) */ - 3343, /* D641 (54849) */ - 3343, /* D642 (54850) */ - 3343, /* D643 (54851) */ - 3343, /* D644 (54852) */ - 3343, /* D645 (54853) */ - 3343, /* D646 (54854) */ - 3343, /* D647 (54855) */ - 3343, /* D648 (54856) */ - 3343, /* D649 (54857) */ - 3343, /* D64A (54858) */ - 3343, /* D64B (54859) */ - 3343, /* D64C (54860) */ - 3343, /* D64D (54861) */ - 3343, /* D64E (54862) */ - 3343, /* D64F (54863) */ - 3343, /* D650 (54864) */ - 3343, /* D651 (54865) */ - 3343, /* D652 (54866) */ - 3343, /* D653 (54867) */ - 3343, /* D654 (54868) */ - 3343, /* D655 (54869) */ - 3343, /* D656 (54870) */ - 3343, /* D657 (54871) */ - 3343, /* D658 (54872) */ - 3343, /* D659 (54873) */ - 3343, /* D65A (54874) */ - 3343, /* D65B (54875) */ - 3343, /* D65C (54876) */ - 3343, /* D65D (54877) */ - 3343, /* D65E (54878) */ - 3343, /* D65F (54879) */ - 3343, /* D660 (54880) */ - 3343, /* D661 (54881) */ - 3343, /* D662 (54882) */ - 3343, /* D663 (54883) */ - 3343, /* D664 (54884) */ - 3343, /* D665 (54885) */ - 3343, /* D666 (54886) */ - 3343, /* D667 (54887) */ - 3343, /* D668 (54888) */ - 3343, /* D669 (54889) */ - 3343, /* D66A (54890) */ - 3343, /* D66B (54891) */ - 3343, /* D66C (54892) */ - 3343, /* D66D (54893) */ - 3343, /* D66E (54894) */ - 3343, /* D66F (54895) */ - 3343, /* D670 (54896) */ - 3343, /* D671 (54897) */ - 3343, /* D672 (54898) */ - 3343, /* D673 (54899) */ - 3343, /* D674 (54900) */ - 3343, /* D675 (54901) */ - 3343, /* D676 (54902) */ - 3343, /* D677 (54903) */ - 3343, /* D678 (54904) */ - 3343, /* D679 (54905) */ - 3343, /* D67A (54906) */ - 3343, /* D67B (54907) */ - 3343, /* D67C (54908) */ - 3343, /* D67D (54909) */ - 3343, /* D67E (54910) */ - 3343, /* D67F (54911) */ - 3343, /* D680 (54912) */ - 3343, /* D681 (54913) */ - 3343, /* D682 (54914) */ - 3343, /* D683 (54915) */ - 3343, /* D684 (54916) */ - 3343, /* D685 (54917) */ - 3343, /* D686 (54918) */ - 3343, /* D687 (54919) */ - 3343, /* D688 (54920) */ - 3343, /* D689 (54921) */ - 3343, /* D68A (54922) */ - 3343, /* D68B (54923) */ - 3343, /* D68C (54924) */ - 3343, /* D68D (54925) */ - 3343, /* D68E (54926) */ - 3343, /* D68F (54927) */ - 3343, /* D690 (54928) */ - 3343, /* D691 (54929) */ - 3343, /* D692 (54930) */ - 3343, /* D693 (54931) */ - 3343, /* D694 (54932) */ - 3343, /* D695 (54933) */ - 3343, /* D696 (54934) */ - 3343, /* D697 (54935) */ - 3343, /* D698 (54936) */ - 3343, /* D699 (54937) */ - 3343, /* D69A (54938) */ - 3343, /* D69B (54939) */ - 3343, /* D69C (54940) */ - 3343, /* D69D (54941) */ - 3343, /* D69E (54942) */ - 3343, /* D69F (54943) */ - 3343, /* D6A0 (54944) */ - 3343, /* D6A1 (54945) */ - 3343, /* D6A2 (54946) */ - 3343, /* D6A3 (54947) */ - 3343, /* D6A4 (54948) */ - 3343, /* D6A5 (54949) */ - 3343, /* D6A6 (54950) */ - 3343, /* D6A7 (54951) */ - 3343, /* D6A8 (54952) */ - 3343, /* D6A9 (54953) */ - 3343, /* D6AA (54954) */ - 3343, /* D6AB (54955) */ - 3343, /* D6AC (54956) */ - 3343, /* D6AD (54957) */ - 3343, /* D6AE (54958) */ - 3343, /* D6AF (54959) */ - 3343, /* D6B0 (54960) */ - 3343, /* D6B1 (54961) */ - 3343, /* D6B2 (54962) */ - 3343, /* D6B3 (54963) */ - 3343, /* D6B4 (54964) */ - 3343, /* D6B5 (54965) */ - 3343, /* D6B6 (54966) */ - 3343, /* D6B7 (54967) */ - 3343, /* D6B8 (54968) */ - 3343, /* D6B9 (54969) */ - 3343, /* D6BA (54970) */ - 3343, /* D6BB (54971) */ - 3343, /* D6BC (54972) */ - 3343, /* D6BD (54973) */ - 3343, /* D6BE (54974) */ - 3343, /* D6BF (54975) */ - 3343, /* D6C0 (54976) */ - 3343, /* D6C1 (54977) */ - 3343, /* D6C2 (54978) */ - 3343, /* D6C3 (54979) */ - 3343, /* D6C4 (54980) */ - 3343, /* D6C5 (54981) */ - 3343, /* D6C6 (54982) */ - 3343, /* D6C7 (54983) */ - 3343, /* D6C8 (54984) */ - 3343, /* D6C9 (54985) */ - 3343, /* D6CA (54986) */ - 3343, /* D6CB (54987) */ - 3343, /* D6CC (54988) */ - 3343, /* D6CD (54989) */ - 3343, /* D6CE (54990) */ - 3343, /* D6CF (54991) */ - 3343, /* D6D0 (54992) */ - 3343, /* D6D1 (54993) */ - 3343, /* D6D2 (54994) */ - 3343, /* D6D3 (54995) */ - 3343, /* D6D4 (54996) */ - 3343, /* D6D5 (54997) */ - 3343, /* D6D6 (54998) */ - 3343, /* D6D7 (54999) */ - 3343, /* D6D8 (55000) */ - 3343, /* D6D9 (55001) */ - 3343, /* D6DA (55002) */ - 3343, /* D6DB (55003) */ - 3343, /* D6DC (55004) */ - 3343, /* D6DD (55005) */ - 3343, /* D6DE (55006) */ - 3343, /* D6DF (55007) */ - 3343, /* D6E0 (55008) */ - 3343, /* D6E1 (55009) */ - 3343, /* D6E2 (55010) */ - 3343, /* D6E3 (55011) */ - 3343, /* D6E4 (55012) */ - 3343, /* D6E5 (55013) */ - 3343, /* D6E6 (55014) */ - 3343, /* D6E7 (55015) */ - 3343, /* D6E8 (55016) */ - 3343, /* D6E9 (55017) */ - 3343, /* D6EA (55018) */ - 3343, /* D6EB (55019) */ - 3343, /* D6EC (55020) */ - 3343, /* D6ED (55021) */ - 3343, /* D6EE (55022) */ - 3343, /* D6EF (55023) */ - 3343, /* D6F0 (55024) */ - 3343, /* D6F1 (55025) */ - 3343, /* D6F2 (55026) */ - 3343, /* D6F3 (55027) */ - 3343, /* D6F4 (55028) */ - 3343, /* D6F5 (55029) */ - 3343, /* D6F6 (55030) */ - 3343, /* D6F7 (55031) */ - 3343, /* D6F8 (55032) */ - 3343, /* D6F9 (55033) */ - 3343, /* D6FA (55034) */ - 3343, /* D6FB (55035) */ - 3343, /* D6FC (55036) */ - 3343, /* D6FD (55037) */ - 3343, /* D6FE (55038) */ - 3343, /* D6FF (55039) */ - 3343, /* D700 (55040) */ - 3343, /* D701 (55041) */ - 3343, /* D702 (55042) */ - 3343, /* D703 (55043) */ - 3343, /* D704 (55044) */ - 3343, /* D705 (55045) */ - 3343, /* D706 (55046) */ - 3343, /* D707 (55047) */ - 3343, /* D708 (55048) */ - 3343, /* D709 (55049) */ - 3343, /* D70A (55050) */ - 3343, /* D70B (55051) */ - 3343, /* D70C (55052) */ - 3343, /* D70D (55053) */ - 3343, /* D70E (55054) */ - 3343, /* D70F (55055) */ - 3343, /* D710 (55056) */ - 3343, /* D711 (55057) */ - 3343, /* D712 (55058) */ - 3343, /* D713 (55059) */ - 3343, /* D714 (55060) */ - 3343, /* D715 (55061) */ - 3343, /* D716 (55062) */ - 3343, /* D717 (55063) */ - 3343, /* D718 (55064) */ - 3343, /* D719 (55065) */ - 3343, /* D71A (55066) */ - 3343, /* D71B (55067) */ - 3343, /* D71C (55068) */ - 3343, /* D71D (55069) */ - 3343, /* D71E (55070) */ - 3343, /* D71F (55071) */ - 3343, /* D720 (55072) */ - 3343, /* D721 (55073) */ - 3343, /* D722 (55074) */ - 3343, /* D723 (55075) */ - 3343, /* D724 (55076) */ - 3343, /* D725 (55077) */ - 3343, /* D726 (55078) */ - 3343, /* D727 (55079) */ - 3343, /* D728 (55080) */ - 3343, /* D729 (55081) */ - 3343, /* D72A (55082) */ - 3343, /* D72B (55083) */ - 3343, /* D72C (55084) */ - 3343, /* D72D (55085) */ - 3343, /* D72E (55086) */ - 3343, /* D72F (55087) */ - 3343, /* D730 (55088) */ - 3343, /* D731 (55089) */ - 3343, /* D732 (55090) */ - 3343, /* D733 (55091) */ - 3343, /* D734 (55092) */ - 3343, /* D735 (55093) */ - 3343, /* D736 (55094) */ - 3343, /* D737 (55095) */ - 3343, /* D738 (55096) */ - 3343, /* D739 (55097) */ - 3343, /* D73A (55098) */ - 3343, /* D73B (55099) */ - 3343, /* D73C (55100) */ - 3343, /* D73D (55101) */ - 3343, /* D73E (55102) */ - 3343, /* D73F (55103) */ - 3343, /* D740 (55104) */ - 3343, /* D741 (55105) */ - 3343, /* D742 (55106) */ - 3343, /* D743 (55107) */ - 3343, /* D744 (55108) */ - 3343, /* D745 (55109) */ - 3343, /* D746 (55110) */ - 3343, /* D747 (55111) */ - 3343, /* D748 (55112) */ - 3343, /* D749 (55113) */ - 3343, /* D74A (55114) */ - 3343, /* D74B (55115) */ - 3343, /* D74C (55116) */ - 3343, /* D74D (55117) */ - 3343, /* D74E (55118) */ - 3343, /* D74F (55119) */ - 3343, /* D750 (55120) */ - 3343, /* D751 (55121) */ - 3343, /* D752 (55122) */ - 3343, /* D753 (55123) */ - 3343, /* D754 (55124) */ - 3343, /* D755 (55125) */ - 3343, /* D756 (55126) */ - 3343, /* D757 (55127) */ - 3343, /* D758 (55128) */ - 3343, /* D759 (55129) */ - 3343, /* D75A (55130) */ - 3343, /* D75B (55131) */ - 3343, /* D75C (55132) */ - 3343, /* D75D (55133) */ - 3343, /* D75E (55134) */ - 3343, /* D75F (55135) */ - 3343, /* D760 (55136) */ - 3343, /* D761 (55137) */ - 3343, /* D762 (55138) */ - 3343, /* D763 (55139) */ - 3343, /* D764 (55140) */ - 3343, /* D765 (55141) */ - 3343, /* D766 (55142) */ - 3343, /* D767 (55143) */ - 3343, /* D768 (55144) */ - 3343, /* D769 (55145) */ - 3343, /* D76A (55146) */ - 3343, /* D76B (55147) */ - 3343, /* D76C (55148) */ - 3343, /* D76D (55149) */ - 3343, /* D76E (55150) */ - 3343, /* D76F (55151) */ - 3343, /* D770 (55152) */ - 3343, /* D771 (55153) */ - 3343, /* D772 (55154) */ - 3343, /* D773 (55155) */ - 3343, /* D774 (55156) */ - 3343, /* D775 (55157) */ - 3343, /* D776 (55158) */ - 3343, /* D777 (55159) */ - 3343, /* D778 (55160) */ - 3343, /* D779 (55161) */ - 3343, /* D77A (55162) */ - 3343, /* D77B (55163) */ - 3343, /* D77C (55164) */ - 3343, /* D77D (55165) */ - 3343, /* D77E (55166) */ - 3343, /* D77F (55167) */ - 3343, /* D780 (55168) */ - 3343, /* D781 (55169) */ - 3343, /* D782 (55170) */ - 3343, /* D783 (55171) */ - 3343, /* D784 (55172) */ - 3343, /* D785 (55173) */ - 3343, /* D786 (55174) */ - 3343, /* D787 (55175) */ - 3343, /* D788 (55176) */ - 3343, /* D789 (55177) */ - 3343, /* D78A (55178) */ - 3343, /* D78B (55179) */ - 3343, /* D78C (55180) */ - 3343, /* D78D (55181) */ - 3343, /* D78E (55182) */ - 3343, /* D78F (55183) */ - 3343, /* D790 (55184) */ - 3343, /* D791 (55185) */ - 3343, /* D792 (55186) */ - 3343, /* D793 (55187) */ - 3343, /* D794 (55188) */ - 3343, /* D795 (55189) */ - 3343, /* D796 (55190) */ - 3343, /* D797 (55191) */ - 3343, /* D798 (55192) */ - 3343, /* D799 (55193) */ - 3343, /* D79A (55194) */ - 3343, /* D79B (55195) */ - 3343, /* D79C (55196) */ - 3343, /* D79D (55197) */ - 3343, /* D79E (55198) */ - 3343, /* D79F (55199) */ - 3343, /* D7A0 (55200) */ - 3343, /* D7A1 (55201) */ - 3343, /* D7A2 (55202) */ - 3343, /* D7A3 (55203) */ + 3347, /* AC00 (44032) */ + 3347, /* AC01 (44033) */ + 3347, /* AC02 (44034) */ + 3347, /* AC03 (44035) */ + 3347, /* AC04 (44036) */ + 3347, /* AC05 (44037) */ + 3347, /* AC06 (44038) */ + 3347, /* AC07 (44039) */ + 3347, /* AC08 (44040) */ + 3347, /* AC09 (44041) */ + 3347, /* AC0A (44042) */ + 3347, /* AC0B (44043) */ + 3347, /* AC0C (44044) */ + 3347, /* AC0D (44045) */ + 3347, /* AC0E (44046) */ + 3347, /* AC0F (44047) */ + 3347, /* AC10 (44048) */ + 3347, /* AC11 (44049) */ + 3347, /* AC12 (44050) */ + 3347, /* AC13 (44051) */ + 3347, /* AC14 (44052) */ + 3347, /* AC15 (44053) */ + 3347, /* AC16 (44054) */ + 3347, /* AC17 (44055) */ + 3347, /* AC18 (44056) */ + 3347, /* AC19 (44057) */ + 3347, /* AC1A (44058) */ + 3347, /* AC1B (44059) */ + 3347, /* AC1C (44060) */ + 3347, /* AC1D (44061) */ + 3347, /* AC1E (44062) */ + 3347, /* AC1F (44063) */ + 3347, /* AC20 (44064) */ + 3347, /* AC21 (44065) */ + 3347, /* AC22 (44066) */ + 3347, /* AC23 (44067) */ + 3347, /* AC24 (44068) */ + 3347, /* AC25 (44069) */ + 3347, /* AC26 (44070) */ + 3347, /* AC27 (44071) */ + 3347, /* AC28 (44072) */ + 3347, /* AC29 (44073) */ + 3347, /* AC2A (44074) */ + 3347, /* AC2B (44075) */ + 3347, /* AC2C (44076) */ + 3347, /* AC2D (44077) */ + 3347, /* AC2E (44078) */ + 3347, /* AC2F (44079) */ + 3347, /* AC30 (44080) */ + 3347, /* AC31 (44081) */ + 3347, /* AC32 (44082) */ + 3347, /* AC33 (44083) */ + 3347, /* AC34 (44084) */ + 3347, /* AC35 (44085) */ + 3347, /* AC36 (44086) */ + 3347, /* AC37 (44087) */ + 3347, /* AC38 (44088) */ + 3347, /* AC39 (44089) */ + 3347, /* AC3A (44090) */ + 3347, /* AC3B (44091) */ + 3347, /* AC3C (44092) */ + 3347, /* AC3D (44093) */ + 3347, /* AC3E (44094) */ + 3347, /* AC3F (44095) */ + 3347, /* AC40 (44096) */ + 3347, /* AC41 (44097) */ + 3347, /* AC42 (44098) */ + 3347, /* AC43 (44099) */ + 3347, /* AC44 (44100) */ + 3347, /* AC45 (44101) */ + 3347, /* AC46 (44102) */ + 3347, /* AC47 (44103) */ + 3347, /* AC48 (44104) */ + 3347, /* AC49 (44105) */ + 3347, /* AC4A (44106) */ + 3347, /* AC4B (44107) */ + 3347, /* AC4C (44108) */ + 3347, /* AC4D (44109) */ + 3347, /* AC4E (44110) */ + 3347, /* AC4F (44111) */ + 3347, /* AC50 (44112) */ + 3347, /* AC51 (44113) */ + 3347, /* AC52 (44114) */ + 3347, /* AC53 (44115) */ + 3347, /* AC54 (44116) */ + 3347, /* AC55 (44117) */ + 3347, /* AC56 (44118) */ + 3347, /* AC57 (44119) */ + 3347, /* AC58 (44120) */ + 3347, /* AC59 (44121) */ + 3347, /* AC5A (44122) */ + 3347, /* AC5B (44123) */ + 3347, /* AC5C (44124) */ + 3347, /* AC5D (44125) */ + 3347, /* AC5E (44126) */ + 3347, /* AC5F (44127) */ + 3347, /* AC60 (44128) */ + 3347, /* AC61 (44129) */ + 3347, /* AC62 (44130) */ + 3347, /* AC63 (44131) */ + 3347, /* AC64 (44132) */ + 3347, /* AC65 (44133) */ + 3347, /* AC66 (44134) */ + 3347, /* AC67 (44135) */ + 3347, /* AC68 (44136) */ + 3347, /* AC69 (44137) */ + 3347, /* AC6A (44138) */ + 3347, /* AC6B (44139) */ + 3347, /* AC6C (44140) */ + 3347, /* AC6D (44141) */ + 3347, /* AC6E (44142) */ + 3347, /* AC6F (44143) */ + 3347, /* AC70 (44144) */ + 3347, /* AC71 (44145) */ + 3347, /* AC72 (44146) */ + 3347, /* AC73 (44147) */ + 3347, /* AC74 (44148) */ + 3347, /* AC75 (44149) */ + 3347, /* AC76 (44150) */ + 3347, /* AC77 (44151) */ + 3347, /* AC78 (44152) */ + 3347, /* AC79 (44153) */ + 3347, /* AC7A (44154) */ + 3347, /* AC7B (44155) */ + 3347, /* AC7C (44156) */ + 3347, /* AC7D (44157) */ + 3347, /* AC7E (44158) */ + 3347, /* AC7F (44159) */ + 3347, /* AC80 (44160) */ + 3347, /* AC81 (44161) */ + 3347, /* AC82 (44162) */ + 3347, /* AC83 (44163) */ + 3347, /* AC84 (44164) */ + 3347, /* AC85 (44165) */ + 3347, /* AC86 (44166) */ + 3347, /* AC87 (44167) */ + 3347, /* AC88 (44168) */ + 3347, /* AC89 (44169) */ + 3347, /* AC8A (44170) */ + 3347, /* AC8B (44171) */ + 3347, /* AC8C (44172) */ + 3347, /* AC8D (44173) */ + 3347, /* AC8E (44174) */ + 3347, /* AC8F (44175) */ + 3347, /* AC90 (44176) */ + 3347, /* AC91 (44177) */ + 3347, /* AC92 (44178) */ + 3347, /* AC93 (44179) */ + 3347, /* AC94 (44180) */ + 3347, /* AC95 (44181) */ + 3347, /* AC96 (44182) */ + 3347, /* AC97 (44183) */ + 3347, /* AC98 (44184) */ + 3347, /* AC99 (44185) */ + 3347, /* AC9A (44186) */ + 3347, /* AC9B (44187) */ + 3347, /* AC9C (44188) */ + 3347, /* AC9D (44189) */ + 3347, /* AC9E (44190) */ + 3347, /* AC9F (44191) */ + 3347, /* ACA0 (44192) */ + 3347, /* ACA1 (44193) */ + 3347, /* ACA2 (44194) */ + 3347, /* ACA3 (44195) */ + 3347, /* ACA4 (44196) */ + 3347, /* ACA5 (44197) */ + 3347, /* ACA6 (44198) */ + 3347, /* ACA7 (44199) */ + 3347, /* ACA8 (44200) */ + 3347, /* ACA9 (44201) */ + 3347, /* ACAA (44202) */ + 3347, /* ACAB (44203) */ + 3347, /* ACAC (44204) */ + 3347, /* ACAD (44205) */ + 3347, /* ACAE (44206) */ + 3347, /* ACAF (44207) */ + 3347, /* ACB0 (44208) */ + 3347, /* ACB1 (44209) */ + 3347, /* ACB2 (44210) */ + 3347, /* ACB3 (44211) */ + 3347, /* ACB4 (44212) */ + 3347, /* ACB5 (44213) */ + 3347, /* ACB6 (44214) */ + 3347, /* ACB7 (44215) */ + 3347, /* ACB8 (44216) */ + 3347, /* ACB9 (44217) */ + 3347, /* ACBA (44218) */ + 3347, /* ACBB (44219) */ + 3347, /* ACBC (44220) */ + 3347, /* ACBD (44221) */ + 3347, /* ACBE (44222) */ + 3347, /* ACBF (44223) */ + 3347, /* ACC0 (44224) */ + 3347, /* ACC1 (44225) */ + 3347, /* ACC2 (44226) */ + 3347, /* ACC3 (44227) */ + 3347, /* ACC4 (44228) */ + 3347, /* ACC5 (44229) */ + 3347, /* ACC6 (44230) */ + 3347, /* ACC7 (44231) */ + 3347, /* ACC8 (44232) */ + 3347, /* ACC9 (44233) */ + 3347, /* ACCA (44234) */ + 3347, /* ACCB (44235) */ + 3347, /* ACCC (44236) */ + 3347, /* ACCD (44237) */ + 3347, /* ACCE (44238) */ + 3347, /* ACCF (44239) */ + 3347, /* ACD0 (44240) */ + 3347, /* ACD1 (44241) */ + 3347, /* ACD2 (44242) */ + 3347, /* ACD3 (44243) */ + 3347, /* ACD4 (44244) */ + 3347, /* ACD5 (44245) */ + 3347, /* ACD6 (44246) */ + 3347, /* ACD7 (44247) */ + 3347, /* ACD8 (44248) */ + 3347, /* ACD9 (44249) */ + 3347, /* ACDA (44250) */ + 3347, /* ACDB (44251) */ + 3347, /* ACDC (44252) */ + 3347, /* ACDD (44253) */ + 3347, /* ACDE (44254) */ + 3347, /* ACDF (44255) */ + 3347, /* ACE0 (44256) */ + 3347, /* ACE1 (44257) */ + 3347, /* ACE2 (44258) */ + 3347, /* ACE3 (44259) */ + 3347, /* ACE4 (44260) */ + 3347, /* ACE5 (44261) */ + 3347, /* ACE6 (44262) */ + 3347, /* ACE7 (44263) */ + 3347, /* ACE8 (44264) */ + 3347, /* ACE9 (44265) */ + 3347, /* ACEA (44266) */ + 3347, /* ACEB (44267) */ + 3347, /* ACEC (44268) */ + 3347, /* ACED (44269) */ + 3347, /* ACEE (44270) */ + 3347, /* ACEF (44271) */ + 3347, /* ACF0 (44272) */ + 3347, /* ACF1 (44273) */ + 3347, /* ACF2 (44274) */ + 3347, /* ACF3 (44275) */ + 3347, /* ACF4 (44276) */ + 3347, /* ACF5 (44277) */ + 3347, /* ACF6 (44278) */ + 3347, /* ACF7 (44279) */ + 3347, /* ACF8 (44280) */ + 3347, /* ACF9 (44281) */ + 3347, /* ACFA (44282) */ + 3347, /* ACFB (44283) */ + 3347, /* ACFC (44284) */ + 3347, /* ACFD (44285) */ + 3347, /* ACFE (44286) */ + 3347, /* ACFF (44287) */ + 3347, /* AD00 (44288) */ + 3347, /* AD01 (44289) */ + 3347, /* AD02 (44290) */ + 3347, /* AD03 (44291) */ + 3347, /* AD04 (44292) */ + 3347, /* AD05 (44293) */ + 3347, /* AD06 (44294) */ + 3347, /* AD07 (44295) */ + 3347, /* AD08 (44296) */ + 3347, /* AD09 (44297) */ + 3347, /* AD0A (44298) */ + 3347, /* AD0B (44299) */ + 3347, /* AD0C (44300) */ + 3347, /* AD0D (44301) */ + 3347, /* AD0E (44302) */ + 3347, /* AD0F (44303) */ + 3347, /* AD10 (44304) */ + 3347, /* AD11 (44305) */ + 3347, /* AD12 (44306) */ + 3347, /* AD13 (44307) */ + 3347, /* AD14 (44308) */ + 3347, /* AD15 (44309) */ + 3347, /* AD16 (44310) */ + 3347, /* AD17 (44311) */ + 3347, /* AD18 (44312) */ + 3347, /* AD19 (44313) */ + 3347, /* AD1A (44314) */ + 3347, /* AD1B (44315) */ + 3347, /* AD1C (44316) */ + 3347, /* AD1D (44317) */ + 3347, /* AD1E (44318) */ + 3347, /* AD1F (44319) */ + 3347, /* AD20 (44320) */ + 3347, /* AD21 (44321) */ + 3347, /* AD22 (44322) */ + 3347, /* AD23 (44323) */ + 3347, /* AD24 (44324) */ + 3347, /* AD25 (44325) */ + 3347, /* AD26 (44326) */ + 3347, /* AD27 (44327) */ + 3347, /* AD28 (44328) */ + 3347, /* AD29 (44329) */ + 3347, /* AD2A (44330) */ + 3347, /* AD2B (44331) */ + 3347, /* AD2C (44332) */ + 3347, /* AD2D (44333) */ + 3347, /* AD2E (44334) */ + 3347, /* AD2F (44335) */ + 3347, /* AD30 (44336) */ + 3347, /* AD31 (44337) */ + 3347, /* AD32 (44338) */ + 3347, /* AD33 (44339) */ + 3347, /* AD34 (44340) */ + 3347, /* AD35 (44341) */ + 3347, /* AD36 (44342) */ + 3347, /* AD37 (44343) */ + 3347, /* AD38 (44344) */ + 3347, /* AD39 (44345) */ + 3347, /* AD3A (44346) */ + 3347, /* AD3B (44347) */ + 3347, /* AD3C (44348) */ + 3347, /* AD3D (44349) */ + 3347, /* AD3E (44350) */ + 3347, /* AD3F (44351) */ + 3347, /* AD40 (44352) */ + 3347, /* AD41 (44353) */ + 3347, /* AD42 (44354) */ + 3347, /* AD43 (44355) */ + 3347, /* AD44 (44356) */ + 3347, /* AD45 (44357) */ + 3347, /* AD46 (44358) */ + 3347, /* AD47 (44359) */ + 3347, /* AD48 (44360) */ + 3347, /* AD49 (44361) */ + 3347, /* AD4A (44362) */ + 3347, /* AD4B (44363) */ + 3347, /* AD4C (44364) */ + 3347, /* AD4D (44365) */ + 3347, /* AD4E (44366) */ + 3347, /* AD4F (44367) */ + 3347, /* AD50 (44368) */ + 3347, /* AD51 (44369) */ + 3347, /* AD52 (44370) */ + 3347, /* AD53 (44371) */ + 3347, /* AD54 (44372) */ + 3347, /* AD55 (44373) */ + 3347, /* AD56 (44374) */ + 3347, /* AD57 (44375) */ + 3347, /* AD58 (44376) */ + 3347, /* AD59 (44377) */ + 3347, /* AD5A (44378) */ + 3347, /* AD5B (44379) */ + 3347, /* AD5C (44380) */ + 3347, /* AD5D (44381) */ + 3347, /* AD5E (44382) */ + 3347, /* AD5F (44383) */ + 3347, /* AD60 (44384) */ + 3347, /* AD61 (44385) */ + 3347, /* AD62 (44386) */ + 3347, /* AD63 (44387) */ + 3347, /* AD64 (44388) */ + 3347, /* AD65 (44389) */ + 3347, /* AD66 (44390) */ + 3347, /* AD67 (44391) */ + 3347, /* AD68 (44392) */ + 3347, /* AD69 (44393) */ + 3347, /* AD6A (44394) */ + 3347, /* AD6B (44395) */ + 3347, /* AD6C (44396) */ + 3347, /* AD6D (44397) */ + 3347, /* AD6E (44398) */ + 3347, /* AD6F (44399) */ + 3347, /* AD70 (44400) */ + 3347, /* AD71 (44401) */ + 3347, /* AD72 (44402) */ + 3347, /* AD73 (44403) */ + 3347, /* AD74 (44404) */ + 3347, /* AD75 (44405) */ + 3347, /* AD76 (44406) */ + 3347, /* AD77 (44407) */ + 3347, /* AD78 (44408) */ + 3347, /* AD79 (44409) */ + 3347, /* AD7A (44410) */ + 3347, /* AD7B (44411) */ + 3347, /* AD7C (44412) */ + 3347, /* AD7D (44413) */ + 3347, /* AD7E (44414) */ + 3347, /* AD7F (44415) */ + 3347, /* AD80 (44416) */ + 3347, /* AD81 (44417) */ + 3347, /* AD82 (44418) */ + 3347, /* AD83 (44419) */ + 3347, /* AD84 (44420) */ + 3347, /* AD85 (44421) */ + 3347, /* AD86 (44422) */ + 3347, /* AD87 (44423) */ + 3347, /* AD88 (44424) */ + 3347, /* AD89 (44425) */ + 3347, /* AD8A (44426) */ + 3347, /* AD8B (44427) */ + 3347, /* AD8C (44428) */ + 3347, /* AD8D (44429) */ + 3347, /* AD8E (44430) */ + 3347, /* AD8F (44431) */ + 3347, /* AD90 (44432) */ + 3347, /* AD91 (44433) */ + 3347, /* AD92 (44434) */ + 3347, /* AD93 (44435) */ + 3347, /* AD94 (44436) */ + 3347, /* AD95 (44437) */ + 3347, /* AD96 (44438) */ + 3347, /* AD97 (44439) */ + 3347, /* AD98 (44440) */ + 3347, /* AD99 (44441) */ + 3347, /* AD9A (44442) */ + 3347, /* AD9B (44443) */ + 3347, /* AD9C (44444) */ + 3347, /* AD9D (44445) */ + 3347, /* AD9E (44446) */ + 3347, /* AD9F (44447) */ + 3347, /* ADA0 (44448) */ + 3347, /* ADA1 (44449) */ + 3347, /* ADA2 (44450) */ + 3347, /* ADA3 (44451) */ + 3347, /* ADA4 (44452) */ + 3347, /* ADA5 (44453) */ + 3347, /* ADA6 (44454) */ + 3347, /* ADA7 (44455) */ + 3347, /* ADA8 (44456) */ + 3347, /* ADA9 (44457) */ + 3347, /* ADAA (44458) */ + 3347, /* ADAB (44459) */ + 3347, /* ADAC (44460) */ + 3347, /* ADAD (44461) */ + 3347, /* ADAE (44462) */ + 3347, /* ADAF (44463) */ + 3347, /* ADB0 (44464) */ + 3347, /* ADB1 (44465) */ + 3347, /* ADB2 (44466) */ + 3347, /* ADB3 (44467) */ + 3347, /* ADB4 (44468) */ + 3347, /* ADB5 (44469) */ + 3347, /* ADB6 (44470) */ + 3347, /* ADB7 (44471) */ + 3347, /* ADB8 (44472) */ + 3347, /* ADB9 (44473) */ + 3347, /* ADBA (44474) */ + 3347, /* ADBB (44475) */ + 3347, /* ADBC (44476) */ + 3347, /* ADBD (44477) */ + 3347, /* ADBE (44478) */ + 3347, /* ADBF (44479) */ + 3347, /* ADC0 (44480) */ + 3347, /* ADC1 (44481) */ + 3347, /* ADC2 (44482) */ + 3347, /* ADC3 (44483) */ + 3347, /* ADC4 (44484) */ + 3347, /* ADC5 (44485) */ + 3347, /* ADC6 (44486) */ + 3347, /* ADC7 (44487) */ + 3347, /* ADC8 (44488) */ + 3347, /* ADC9 (44489) */ + 3347, /* ADCA (44490) */ + 3347, /* ADCB (44491) */ + 3347, /* ADCC (44492) */ + 3347, /* ADCD (44493) */ + 3347, /* ADCE (44494) */ + 3347, /* ADCF (44495) */ + 3347, /* ADD0 (44496) */ + 3347, /* ADD1 (44497) */ + 3347, /* ADD2 (44498) */ + 3347, /* ADD3 (44499) */ + 3347, /* ADD4 (44500) */ + 3347, /* ADD5 (44501) */ + 3347, /* ADD6 (44502) */ + 3347, /* ADD7 (44503) */ + 3347, /* ADD8 (44504) */ + 3347, /* ADD9 (44505) */ + 3347, /* ADDA (44506) */ + 3347, /* ADDB (44507) */ + 3347, /* ADDC (44508) */ + 3347, /* ADDD (44509) */ + 3347, /* ADDE (44510) */ + 3347, /* ADDF (44511) */ + 3347, /* ADE0 (44512) */ + 3347, /* ADE1 (44513) */ + 3347, /* ADE2 (44514) */ + 3347, /* ADE3 (44515) */ + 3347, /* ADE4 (44516) */ + 3347, /* ADE5 (44517) */ + 3347, /* ADE6 (44518) */ + 3347, /* ADE7 (44519) */ + 3347, /* ADE8 (44520) */ + 3347, /* ADE9 (44521) */ + 3347, /* ADEA (44522) */ + 3347, /* ADEB (44523) */ + 3347, /* ADEC (44524) */ + 3347, /* ADED (44525) */ + 3347, /* ADEE (44526) */ + 3347, /* ADEF (44527) */ + 3347, /* ADF0 (44528) */ + 3347, /* ADF1 (44529) */ + 3347, /* ADF2 (44530) */ + 3347, /* ADF3 (44531) */ + 3347, /* ADF4 (44532) */ + 3347, /* ADF5 (44533) */ + 3347, /* ADF6 (44534) */ + 3347, /* ADF7 (44535) */ + 3347, /* ADF8 (44536) */ + 3347, /* ADF9 (44537) */ + 3347, /* ADFA (44538) */ + 3347, /* ADFB (44539) */ + 3347, /* ADFC (44540) */ + 3347, /* ADFD (44541) */ + 3347, /* ADFE (44542) */ + 3347, /* ADFF (44543) */ + 3347, /* AE00 (44544) */ + 3347, /* AE01 (44545) */ + 3347, /* AE02 (44546) */ + 3347, /* AE03 (44547) */ + 3347, /* AE04 (44548) */ + 3347, /* AE05 (44549) */ + 3347, /* AE06 (44550) */ + 3347, /* AE07 (44551) */ + 3347, /* AE08 (44552) */ + 3347, /* AE09 (44553) */ + 3347, /* AE0A (44554) */ + 3347, /* AE0B (44555) */ + 3347, /* AE0C (44556) */ + 3347, /* AE0D (44557) */ + 3347, /* AE0E (44558) */ + 3347, /* AE0F (44559) */ + 3347, /* AE10 (44560) */ + 3347, /* AE11 (44561) */ + 3347, /* AE12 (44562) */ + 3347, /* AE13 (44563) */ + 3347, /* AE14 (44564) */ + 3347, /* AE15 (44565) */ + 3347, /* AE16 (44566) */ + 3347, /* AE17 (44567) */ + 3347, /* AE18 (44568) */ + 3347, /* AE19 (44569) */ + 3347, /* AE1A (44570) */ + 3347, /* AE1B (44571) */ + 3347, /* AE1C (44572) */ + 3347, /* AE1D (44573) */ + 3347, /* AE1E (44574) */ + 3347, /* AE1F (44575) */ + 3347, /* AE20 (44576) */ + 3347, /* AE21 (44577) */ + 3347, /* AE22 (44578) */ + 3347, /* AE23 (44579) */ + 3347, /* AE24 (44580) */ + 3347, /* AE25 (44581) */ + 3347, /* AE26 (44582) */ + 3347, /* AE27 (44583) */ + 3347, /* AE28 (44584) */ + 3347, /* AE29 (44585) */ + 3347, /* AE2A (44586) */ + 3347, /* AE2B (44587) */ + 3347, /* AE2C (44588) */ + 3347, /* AE2D (44589) */ + 3347, /* AE2E (44590) */ + 3347, /* AE2F (44591) */ + 3347, /* AE30 (44592) */ + 3347, /* AE31 (44593) */ + 3347, /* AE32 (44594) */ + 3347, /* AE33 (44595) */ + 3347, /* AE34 (44596) */ + 3347, /* AE35 (44597) */ + 3347, /* AE36 (44598) */ + 3347, /* AE37 (44599) */ + 3347, /* AE38 (44600) */ + 3347, /* AE39 (44601) */ + 3347, /* AE3A (44602) */ + 3347, /* AE3B (44603) */ + 3347, /* AE3C (44604) */ + 3347, /* AE3D (44605) */ + 3347, /* AE3E (44606) */ + 3347, /* AE3F (44607) */ + 3347, /* AE40 (44608) */ + 3347, /* AE41 (44609) */ + 3347, /* AE42 (44610) */ + 3347, /* AE43 (44611) */ + 3347, /* AE44 (44612) */ + 3347, /* AE45 (44613) */ + 3347, /* AE46 (44614) */ + 3347, /* AE47 (44615) */ + 3347, /* AE48 (44616) */ + 3347, /* AE49 (44617) */ + 3347, /* AE4A (44618) */ + 3347, /* AE4B (44619) */ + 3347, /* AE4C (44620) */ + 3347, /* AE4D (44621) */ + 3347, /* AE4E (44622) */ + 3347, /* AE4F (44623) */ + 3347, /* AE50 (44624) */ + 3347, /* AE51 (44625) */ + 3347, /* AE52 (44626) */ + 3347, /* AE53 (44627) */ + 3347, /* AE54 (44628) */ + 3347, /* AE55 (44629) */ + 3347, /* AE56 (44630) */ + 3347, /* AE57 (44631) */ + 3347, /* AE58 (44632) */ + 3347, /* AE59 (44633) */ + 3347, /* AE5A (44634) */ + 3347, /* AE5B (44635) */ + 3347, /* AE5C (44636) */ + 3347, /* AE5D (44637) */ + 3347, /* AE5E (44638) */ + 3347, /* AE5F (44639) */ + 3347, /* AE60 (44640) */ + 3347, /* AE61 (44641) */ + 3347, /* AE62 (44642) */ + 3347, /* AE63 (44643) */ + 3347, /* AE64 (44644) */ + 3347, /* AE65 (44645) */ + 3347, /* AE66 (44646) */ + 3347, /* AE67 (44647) */ + 3347, /* AE68 (44648) */ + 3347, /* AE69 (44649) */ + 3347, /* AE6A (44650) */ + 3347, /* AE6B (44651) */ + 3347, /* AE6C (44652) */ + 3347, /* AE6D (44653) */ + 3347, /* AE6E (44654) */ + 3347, /* AE6F (44655) */ + 3347, /* AE70 (44656) */ + 3347, /* AE71 (44657) */ + 3347, /* AE72 (44658) */ + 3347, /* AE73 (44659) */ + 3347, /* AE74 (44660) */ + 3347, /* AE75 (44661) */ + 3347, /* AE76 (44662) */ + 3347, /* AE77 (44663) */ + 3347, /* AE78 (44664) */ + 3347, /* AE79 (44665) */ + 3347, /* AE7A (44666) */ + 3347, /* AE7B (44667) */ + 3347, /* AE7C (44668) */ + 3347, /* AE7D (44669) */ + 3347, /* AE7E (44670) */ + 3347, /* AE7F (44671) */ + 3347, /* AE80 (44672) */ + 3347, /* AE81 (44673) */ + 3347, /* AE82 (44674) */ + 3347, /* AE83 (44675) */ + 3347, /* AE84 (44676) */ + 3347, /* AE85 (44677) */ + 3347, /* AE86 (44678) */ + 3347, /* AE87 (44679) */ + 3347, /* AE88 (44680) */ + 3347, /* AE89 (44681) */ + 3347, /* AE8A (44682) */ + 3347, /* AE8B (44683) */ + 3347, /* AE8C (44684) */ + 3347, /* AE8D (44685) */ + 3347, /* AE8E (44686) */ + 3347, /* AE8F (44687) */ + 3347, /* AE90 (44688) */ + 3347, /* AE91 (44689) */ + 3347, /* AE92 (44690) */ + 3347, /* AE93 (44691) */ + 3347, /* AE94 (44692) */ + 3347, /* AE95 (44693) */ + 3347, /* AE96 (44694) */ + 3347, /* AE97 (44695) */ + 3347, /* AE98 (44696) */ + 3347, /* AE99 (44697) */ + 3347, /* AE9A (44698) */ + 3347, /* AE9B (44699) */ + 3347, /* AE9C (44700) */ + 3347, /* AE9D (44701) */ + 3347, /* AE9E (44702) */ + 3347, /* AE9F (44703) */ + 3347, /* AEA0 (44704) */ + 3347, /* AEA1 (44705) */ + 3347, /* AEA2 (44706) */ + 3347, /* AEA3 (44707) */ + 3347, /* AEA4 (44708) */ + 3347, /* AEA5 (44709) */ + 3347, /* AEA6 (44710) */ + 3347, /* AEA7 (44711) */ + 3347, /* AEA8 (44712) */ + 3347, /* AEA9 (44713) */ + 3347, /* AEAA (44714) */ + 3347, /* AEAB (44715) */ + 3347, /* AEAC (44716) */ + 3347, /* AEAD (44717) */ + 3347, /* AEAE (44718) */ + 3347, /* AEAF (44719) */ + 3347, /* AEB0 (44720) */ + 3347, /* AEB1 (44721) */ + 3347, /* AEB2 (44722) */ + 3347, /* AEB3 (44723) */ + 3347, /* AEB4 (44724) */ + 3347, /* AEB5 (44725) */ + 3347, /* AEB6 (44726) */ + 3347, /* AEB7 (44727) */ + 3347, /* AEB8 (44728) */ + 3347, /* AEB9 (44729) */ + 3347, /* AEBA (44730) */ + 3347, /* AEBB (44731) */ + 3347, /* AEBC (44732) */ + 3347, /* AEBD (44733) */ + 3347, /* AEBE (44734) */ + 3347, /* AEBF (44735) */ + 3347, /* AEC0 (44736) */ + 3347, /* AEC1 (44737) */ + 3347, /* AEC2 (44738) */ + 3347, /* AEC3 (44739) */ + 3347, /* AEC4 (44740) */ + 3347, /* AEC5 (44741) */ + 3347, /* AEC6 (44742) */ + 3347, /* AEC7 (44743) */ + 3347, /* AEC8 (44744) */ + 3347, /* AEC9 (44745) */ + 3347, /* AECA (44746) */ + 3347, /* AECB (44747) */ + 3347, /* AECC (44748) */ + 3347, /* AECD (44749) */ + 3347, /* AECE (44750) */ + 3347, /* AECF (44751) */ + 3347, /* AED0 (44752) */ + 3347, /* AED1 (44753) */ + 3347, /* AED2 (44754) */ + 3347, /* AED3 (44755) */ + 3347, /* AED4 (44756) */ + 3347, /* AED5 (44757) */ + 3347, /* AED6 (44758) */ + 3347, /* AED7 (44759) */ + 3347, /* AED8 (44760) */ + 3347, /* AED9 (44761) */ + 3347, /* AEDA (44762) */ + 3347, /* AEDB (44763) */ + 3347, /* AEDC (44764) */ + 3347, /* AEDD (44765) */ + 3347, /* AEDE (44766) */ + 3347, /* AEDF (44767) */ + 3347, /* AEE0 (44768) */ + 3347, /* AEE1 (44769) */ + 3347, /* AEE2 (44770) */ + 3347, /* AEE3 (44771) */ + 3347, /* AEE4 (44772) */ + 3347, /* AEE5 (44773) */ + 3347, /* AEE6 (44774) */ + 3347, /* AEE7 (44775) */ + 3347, /* AEE8 (44776) */ + 3347, /* AEE9 (44777) */ + 3347, /* AEEA (44778) */ + 3347, /* AEEB (44779) */ + 3347, /* AEEC (44780) */ + 3347, /* AEED (44781) */ + 3347, /* AEEE (44782) */ + 3347, /* AEEF (44783) */ + 3347, /* AEF0 (44784) */ + 3347, /* AEF1 (44785) */ + 3347, /* AEF2 (44786) */ + 3347, /* AEF3 (44787) */ + 3347, /* AEF4 (44788) */ + 3347, /* AEF5 (44789) */ + 3347, /* AEF6 (44790) */ + 3347, /* AEF7 (44791) */ + 3347, /* AEF8 (44792) */ + 3347, /* AEF9 (44793) */ + 3347, /* AEFA (44794) */ + 3347, /* AEFB (44795) */ + 3347, /* AEFC (44796) */ + 3347, /* AEFD (44797) */ + 3347, /* AEFE (44798) */ + 3347, /* AEFF (44799) */ + 3347, /* AF00 (44800) */ + 3347, /* AF01 (44801) */ + 3347, /* AF02 (44802) */ + 3347, /* AF03 (44803) */ + 3347, /* AF04 (44804) */ + 3347, /* AF05 (44805) */ + 3347, /* AF06 (44806) */ + 3347, /* AF07 (44807) */ + 3347, /* AF08 (44808) */ + 3347, /* AF09 (44809) */ + 3347, /* AF0A (44810) */ + 3347, /* AF0B (44811) */ + 3347, /* AF0C (44812) */ + 3347, /* AF0D (44813) */ + 3347, /* AF0E (44814) */ + 3347, /* AF0F (44815) */ + 3347, /* AF10 (44816) */ + 3347, /* AF11 (44817) */ + 3347, /* AF12 (44818) */ + 3347, /* AF13 (44819) */ + 3347, /* AF14 (44820) */ + 3347, /* AF15 (44821) */ + 3347, /* AF16 (44822) */ + 3347, /* AF17 (44823) */ + 3347, /* AF18 (44824) */ + 3347, /* AF19 (44825) */ + 3347, /* AF1A (44826) */ + 3347, /* AF1B (44827) */ + 3347, /* AF1C (44828) */ + 3347, /* AF1D (44829) */ + 3347, /* AF1E (44830) */ + 3347, /* AF1F (44831) */ + 3347, /* AF20 (44832) */ + 3347, /* AF21 (44833) */ + 3347, /* AF22 (44834) */ + 3347, /* AF23 (44835) */ + 3347, /* AF24 (44836) */ + 3347, /* AF25 (44837) */ + 3347, /* AF26 (44838) */ + 3347, /* AF27 (44839) */ + 3347, /* AF28 (44840) */ + 3347, /* AF29 (44841) */ + 3347, /* AF2A (44842) */ + 3347, /* AF2B (44843) */ + 3347, /* AF2C (44844) */ + 3347, /* AF2D (44845) */ + 3347, /* AF2E (44846) */ + 3347, /* AF2F (44847) */ + 3347, /* AF30 (44848) */ + 3347, /* AF31 (44849) */ + 3347, /* AF32 (44850) */ + 3347, /* AF33 (44851) */ + 3347, /* AF34 (44852) */ + 3347, /* AF35 (44853) */ + 3347, /* AF36 (44854) */ + 3347, /* AF37 (44855) */ + 3347, /* AF38 (44856) */ + 3347, /* AF39 (44857) */ + 3347, /* AF3A (44858) */ + 3347, /* AF3B (44859) */ + 3347, /* AF3C (44860) */ + 3347, /* AF3D (44861) */ + 3347, /* AF3E (44862) */ + 3347, /* AF3F (44863) */ + 3347, /* AF40 (44864) */ + 3347, /* AF41 (44865) */ + 3347, /* AF42 (44866) */ + 3347, /* AF43 (44867) */ + 3347, /* AF44 (44868) */ + 3347, /* AF45 (44869) */ + 3347, /* AF46 (44870) */ + 3347, /* AF47 (44871) */ + 3347, /* AF48 (44872) */ + 3347, /* AF49 (44873) */ + 3347, /* AF4A (44874) */ + 3347, /* AF4B (44875) */ + 3347, /* AF4C (44876) */ + 3347, /* AF4D (44877) */ + 3347, /* AF4E (44878) */ + 3347, /* AF4F (44879) */ + 3347, /* AF50 (44880) */ + 3347, /* AF51 (44881) */ + 3347, /* AF52 (44882) */ + 3347, /* AF53 (44883) */ + 3347, /* AF54 (44884) */ + 3347, /* AF55 (44885) */ + 3347, /* AF56 (44886) */ + 3347, /* AF57 (44887) */ + 3347, /* AF58 (44888) */ + 3347, /* AF59 (44889) */ + 3347, /* AF5A (44890) */ + 3347, /* AF5B (44891) */ + 3347, /* AF5C (44892) */ + 3347, /* AF5D (44893) */ + 3347, /* AF5E (44894) */ + 3347, /* AF5F (44895) */ + 3347, /* AF60 (44896) */ + 3347, /* AF61 (44897) */ + 3347, /* AF62 (44898) */ + 3347, /* AF63 (44899) */ + 3347, /* AF64 (44900) */ + 3347, /* AF65 (44901) */ + 3347, /* AF66 (44902) */ + 3347, /* AF67 (44903) */ + 3347, /* AF68 (44904) */ + 3347, /* AF69 (44905) */ + 3347, /* AF6A (44906) */ + 3347, /* AF6B (44907) */ + 3347, /* AF6C (44908) */ + 3347, /* AF6D (44909) */ + 3347, /* AF6E (44910) */ + 3347, /* AF6F (44911) */ + 3347, /* AF70 (44912) */ + 3347, /* AF71 (44913) */ + 3347, /* AF72 (44914) */ + 3347, /* AF73 (44915) */ + 3347, /* AF74 (44916) */ + 3347, /* AF75 (44917) */ + 3347, /* AF76 (44918) */ + 3347, /* AF77 (44919) */ + 3347, /* AF78 (44920) */ + 3347, /* AF79 (44921) */ + 3347, /* AF7A (44922) */ + 3347, /* AF7B (44923) */ + 3347, /* AF7C (44924) */ + 3347, /* AF7D (44925) */ + 3347, /* AF7E (44926) */ + 3347, /* AF7F (44927) */ + 3347, /* AF80 (44928) */ + 3347, /* AF81 (44929) */ + 3347, /* AF82 (44930) */ + 3347, /* AF83 (44931) */ + 3347, /* AF84 (44932) */ + 3347, /* AF85 (44933) */ + 3347, /* AF86 (44934) */ + 3347, /* AF87 (44935) */ + 3347, /* AF88 (44936) */ + 3347, /* AF89 (44937) */ + 3347, /* AF8A (44938) */ + 3347, /* AF8B (44939) */ + 3347, /* AF8C (44940) */ + 3347, /* AF8D (44941) */ + 3347, /* AF8E (44942) */ + 3347, /* AF8F (44943) */ + 3347, /* AF90 (44944) */ + 3347, /* AF91 (44945) */ + 3347, /* AF92 (44946) */ + 3347, /* AF93 (44947) */ + 3347, /* AF94 (44948) */ + 3347, /* AF95 (44949) */ + 3347, /* AF96 (44950) */ + 3347, /* AF97 (44951) */ + 3347, /* AF98 (44952) */ + 3347, /* AF99 (44953) */ + 3347, /* AF9A (44954) */ + 3347, /* AF9B (44955) */ + 3347, /* AF9C (44956) */ + 3347, /* AF9D (44957) */ + 3347, /* AF9E (44958) */ + 3347, /* AF9F (44959) */ + 3347, /* AFA0 (44960) */ + 3347, /* AFA1 (44961) */ + 3347, /* AFA2 (44962) */ + 3347, /* AFA3 (44963) */ + 3347, /* AFA4 (44964) */ + 3347, /* AFA5 (44965) */ + 3347, /* AFA6 (44966) */ + 3347, /* AFA7 (44967) */ + 3347, /* AFA8 (44968) */ + 3347, /* AFA9 (44969) */ + 3347, /* AFAA (44970) */ + 3347, /* AFAB (44971) */ + 3347, /* AFAC (44972) */ + 3347, /* AFAD (44973) */ + 3347, /* AFAE (44974) */ + 3347, /* AFAF (44975) */ + 3347, /* AFB0 (44976) */ + 3347, /* AFB1 (44977) */ + 3347, /* AFB2 (44978) */ + 3347, /* AFB3 (44979) */ + 3347, /* AFB4 (44980) */ + 3347, /* AFB5 (44981) */ + 3347, /* AFB6 (44982) */ + 3347, /* AFB7 (44983) */ + 3347, /* AFB8 (44984) */ + 3347, /* AFB9 (44985) */ + 3347, /* AFBA (44986) */ + 3347, /* AFBB (44987) */ + 3347, /* AFBC (44988) */ + 3347, /* AFBD (44989) */ + 3347, /* AFBE (44990) */ + 3347, /* AFBF (44991) */ + 3347, /* AFC0 (44992) */ + 3347, /* AFC1 (44993) */ + 3347, /* AFC2 (44994) */ + 3347, /* AFC3 (44995) */ + 3347, /* AFC4 (44996) */ + 3347, /* AFC5 (44997) */ + 3347, /* AFC6 (44998) */ + 3347, /* AFC7 (44999) */ + 3347, /* AFC8 (45000) */ + 3347, /* AFC9 (45001) */ + 3347, /* AFCA (45002) */ + 3347, /* AFCB (45003) */ + 3347, /* AFCC (45004) */ + 3347, /* AFCD (45005) */ + 3347, /* AFCE (45006) */ + 3347, /* AFCF (45007) */ + 3347, /* AFD0 (45008) */ + 3347, /* AFD1 (45009) */ + 3347, /* AFD2 (45010) */ + 3347, /* AFD3 (45011) */ + 3347, /* AFD4 (45012) */ + 3347, /* AFD5 (45013) */ + 3347, /* AFD6 (45014) */ + 3347, /* AFD7 (45015) */ + 3347, /* AFD8 (45016) */ + 3347, /* AFD9 (45017) */ + 3347, /* AFDA (45018) */ + 3347, /* AFDB (45019) */ + 3347, /* AFDC (45020) */ + 3347, /* AFDD (45021) */ + 3347, /* AFDE (45022) */ + 3347, /* AFDF (45023) */ + 3347, /* AFE0 (45024) */ + 3347, /* AFE1 (45025) */ + 3347, /* AFE2 (45026) */ + 3347, /* AFE3 (45027) */ + 3347, /* AFE4 (45028) */ + 3347, /* AFE5 (45029) */ + 3347, /* AFE6 (45030) */ + 3347, /* AFE7 (45031) */ + 3347, /* AFE8 (45032) */ + 3347, /* AFE9 (45033) */ + 3347, /* AFEA (45034) */ + 3347, /* AFEB (45035) */ + 3347, /* AFEC (45036) */ + 3347, /* AFED (45037) */ + 3347, /* AFEE (45038) */ + 3347, /* AFEF (45039) */ + 3347, /* AFF0 (45040) */ + 3347, /* AFF1 (45041) */ + 3347, /* AFF2 (45042) */ + 3347, /* AFF3 (45043) */ + 3347, /* AFF4 (45044) */ + 3347, /* AFF5 (45045) */ + 3347, /* AFF6 (45046) */ + 3347, /* AFF7 (45047) */ + 3347, /* AFF8 (45048) */ + 3347, /* AFF9 (45049) */ + 3347, /* AFFA (45050) */ + 3347, /* AFFB (45051) */ + 3347, /* AFFC (45052) */ + 3347, /* AFFD (45053) */ + 3347, /* AFFE (45054) */ + 3347, /* AFFF (45055) */ + 3347, /* B000 (45056) */ + 3347, /* B001 (45057) */ + 3347, /* B002 (45058) */ + 3347, /* B003 (45059) */ + 3347, /* B004 (45060) */ + 3347, /* B005 (45061) */ + 3347, /* B006 (45062) */ + 3347, /* B007 (45063) */ + 3347, /* B008 (45064) */ + 3347, /* B009 (45065) */ + 3347, /* B00A (45066) */ + 3347, /* B00B (45067) */ + 3347, /* B00C (45068) */ + 3347, /* B00D (45069) */ + 3347, /* B00E (45070) */ + 3347, /* B00F (45071) */ + 3347, /* B010 (45072) */ + 3347, /* B011 (45073) */ + 3347, /* B012 (45074) */ + 3347, /* B013 (45075) */ + 3347, /* B014 (45076) */ + 3347, /* B015 (45077) */ + 3347, /* B016 (45078) */ + 3347, /* B017 (45079) */ + 3347, /* B018 (45080) */ + 3347, /* B019 (45081) */ + 3347, /* B01A (45082) */ + 3347, /* B01B (45083) */ + 3347, /* B01C (45084) */ + 3347, /* B01D (45085) */ + 3347, /* B01E (45086) */ + 3347, /* B01F (45087) */ + 3347, /* B020 (45088) */ + 3347, /* B021 (45089) */ + 3347, /* B022 (45090) */ + 3347, /* B023 (45091) */ + 3347, /* B024 (45092) */ + 3347, /* B025 (45093) */ + 3347, /* B026 (45094) */ + 3347, /* B027 (45095) */ + 3347, /* B028 (45096) */ + 3347, /* B029 (45097) */ + 3347, /* B02A (45098) */ + 3347, /* B02B (45099) */ + 3347, /* B02C (45100) */ + 3347, /* B02D (45101) */ + 3347, /* B02E (45102) */ + 3347, /* B02F (45103) */ + 3347, /* B030 (45104) */ + 3347, /* B031 (45105) */ + 3347, /* B032 (45106) */ + 3347, /* B033 (45107) */ + 3347, /* B034 (45108) */ + 3347, /* B035 (45109) */ + 3347, /* B036 (45110) */ + 3347, /* B037 (45111) */ + 3347, /* B038 (45112) */ + 3347, /* B039 (45113) */ + 3347, /* B03A (45114) */ + 3347, /* B03B (45115) */ + 3347, /* B03C (45116) */ + 3347, /* B03D (45117) */ + 3347, /* B03E (45118) */ + 3347, /* B03F (45119) */ + 3347, /* B040 (45120) */ + 3347, /* B041 (45121) */ + 3347, /* B042 (45122) */ + 3347, /* B043 (45123) */ + 3347, /* B044 (45124) */ + 3347, /* B045 (45125) */ + 3347, /* B046 (45126) */ + 3347, /* B047 (45127) */ + 3347, /* B048 (45128) */ + 3347, /* B049 (45129) */ + 3347, /* B04A (45130) */ + 3347, /* B04B (45131) */ + 3347, /* B04C (45132) */ + 3347, /* B04D (45133) */ + 3347, /* B04E (45134) */ + 3347, /* B04F (45135) */ + 3347, /* B050 (45136) */ + 3347, /* B051 (45137) */ + 3347, /* B052 (45138) */ + 3347, /* B053 (45139) */ + 3347, /* B054 (45140) */ + 3347, /* B055 (45141) */ + 3347, /* B056 (45142) */ + 3347, /* B057 (45143) */ + 3347, /* B058 (45144) */ + 3347, /* B059 (45145) */ + 3347, /* B05A (45146) */ + 3347, /* B05B (45147) */ + 3347, /* B05C (45148) */ + 3347, /* B05D (45149) */ + 3347, /* B05E (45150) */ + 3347, /* B05F (45151) */ + 3347, /* B060 (45152) */ + 3347, /* B061 (45153) */ + 3347, /* B062 (45154) */ + 3347, /* B063 (45155) */ + 3347, /* B064 (45156) */ + 3347, /* B065 (45157) */ + 3347, /* B066 (45158) */ + 3347, /* B067 (45159) */ + 3347, /* B068 (45160) */ + 3347, /* B069 (45161) */ + 3347, /* B06A (45162) */ + 3347, /* B06B (45163) */ + 3347, /* B06C (45164) */ + 3347, /* B06D (45165) */ + 3347, /* B06E (45166) */ + 3347, /* B06F (45167) */ + 3347, /* B070 (45168) */ + 3347, /* B071 (45169) */ + 3347, /* B072 (45170) */ + 3347, /* B073 (45171) */ + 3347, /* B074 (45172) */ + 3347, /* B075 (45173) */ + 3347, /* B076 (45174) */ + 3347, /* B077 (45175) */ + 3347, /* B078 (45176) */ + 3347, /* B079 (45177) */ + 3347, /* B07A (45178) */ + 3347, /* B07B (45179) */ + 3347, /* B07C (45180) */ + 3347, /* B07D (45181) */ + 3347, /* B07E (45182) */ + 3347, /* B07F (45183) */ + 3347, /* B080 (45184) */ + 3347, /* B081 (45185) */ + 3347, /* B082 (45186) */ + 3347, /* B083 (45187) */ + 3347, /* B084 (45188) */ + 3347, /* B085 (45189) */ + 3347, /* B086 (45190) */ + 3347, /* B087 (45191) */ + 3347, /* B088 (45192) */ + 3347, /* B089 (45193) */ + 3347, /* B08A (45194) */ + 3347, /* B08B (45195) */ + 3347, /* B08C (45196) */ + 3347, /* B08D (45197) */ + 3347, /* B08E (45198) */ + 3347, /* B08F (45199) */ + 3347, /* B090 (45200) */ + 3347, /* B091 (45201) */ + 3347, /* B092 (45202) */ + 3347, /* B093 (45203) */ + 3347, /* B094 (45204) */ + 3347, /* B095 (45205) */ + 3347, /* B096 (45206) */ + 3347, /* B097 (45207) */ + 3347, /* B098 (45208) */ + 3347, /* B099 (45209) */ + 3347, /* B09A (45210) */ + 3347, /* B09B (45211) */ + 3347, /* B09C (45212) */ + 3347, /* B09D (45213) */ + 3347, /* B09E (45214) */ + 3347, /* B09F (45215) */ + 3347, /* B0A0 (45216) */ + 3347, /* B0A1 (45217) */ + 3347, /* B0A2 (45218) */ + 3347, /* B0A3 (45219) */ + 3347, /* B0A4 (45220) */ + 3347, /* B0A5 (45221) */ + 3347, /* B0A6 (45222) */ + 3347, /* B0A7 (45223) */ + 3347, /* B0A8 (45224) */ + 3347, /* B0A9 (45225) */ + 3347, /* B0AA (45226) */ + 3347, /* B0AB (45227) */ + 3347, /* B0AC (45228) */ + 3347, /* B0AD (45229) */ + 3347, /* B0AE (45230) */ + 3347, /* B0AF (45231) */ + 3347, /* B0B0 (45232) */ + 3347, /* B0B1 (45233) */ + 3347, /* B0B2 (45234) */ + 3347, /* B0B3 (45235) */ + 3347, /* B0B4 (45236) */ + 3347, /* B0B5 (45237) */ + 3347, /* B0B6 (45238) */ + 3347, /* B0B7 (45239) */ + 3347, /* B0B8 (45240) */ + 3347, /* B0B9 (45241) */ + 3347, /* B0BA (45242) */ + 3347, /* B0BB (45243) */ + 3347, /* B0BC (45244) */ + 3347, /* B0BD (45245) */ + 3347, /* B0BE (45246) */ + 3347, /* B0BF (45247) */ + 3347, /* B0C0 (45248) */ + 3347, /* B0C1 (45249) */ + 3347, /* B0C2 (45250) */ + 3347, /* B0C3 (45251) */ + 3347, /* B0C4 (45252) */ + 3347, /* B0C5 (45253) */ + 3347, /* B0C6 (45254) */ + 3347, /* B0C7 (45255) */ + 3347, /* B0C8 (45256) */ + 3347, /* B0C9 (45257) */ + 3347, /* B0CA (45258) */ + 3347, /* B0CB (45259) */ + 3347, /* B0CC (45260) */ + 3347, /* B0CD (45261) */ + 3347, /* B0CE (45262) */ + 3347, /* B0CF (45263) */ + 3347, /* B0D0 (45264) */ + 3347, /* B0D1 (45265) */ + 3347, /* B0D2 (45266) */ + 3347, /* B0D3 (45267) */ + 3347, /* B0D4 (45268) */ + 3347, /* B0D5 (45269) */ + 3347, /* B0D6 (45270) */ + 3347, /* B0D7 (45271) */ + 3347, /* B0D8 (45272) */ + 3347, /* B0D9 (45273) */ + 3347, /* B0DA (45274) */ + 3347, /* B0DB (45275) */ + 3347, /* B0DC (45276) */ + 3347, /* B0DD (45277) */ + 3347, /* B0DE (45278) */ + 3347, /* B0DF (45279) */ + 3347, /* B0E0 (45280) */ + 3347, /* B0E1 (45281) */ + 3347, /* B0E2 (45282) */ + 3347, /* B0E3 (45283) */ + 3347, /* B0E4 (45284) */ + 3347, /* B0E5 (45285) */ + 3347, /* B0E6 (45286) */ + 3347, /* B0E7 (45287) */ + 3347, /* B0E8 (45288) */ + 3347, /* B0E9 (45289) */ + 3347, /* B0EA (45290) */ + 3347, /* B0EB (45291) */ + 3347, /* B0EC (45292) */ + 3347, /* B0ED (45293) */ + 3347, /* B0EE (45294) */ + 3347, /* B0EF (45295) */ + 3347, /* B0F0 (45296) */ + 3347, /* B0F1 (45297) */ + 3347, /* B0F2 (45298) */ + 3347, /* B0F3 (45299) */ + 3347, /* B0F4 (45300) */ + 3347, /* B0F5 (45301) */ + 3347, /* B0F6 (45302) */ + 3347, /* B0F7 (45303) */ + 3347, /* B0F8 (45304) */ + 3347, /* B0F9 (45305) */ + 3347, /* B0FA (45306) */ + 3347, /* B0FB (45307) */ + 3347, /* B0FC (45308) */ + 3347, /* B0FD (45309) */ + 3347, /* B0FE (45310) */ + 3347, /* B0FF (45311) */ + 3347, /* B100 (45312) */ + 3347, /* B101 (45313) */ + 3347, /* B102 (45314) */ + 3347, /* B103 (45315) */ + 3347, /* B104 (45316) */ + 3347, /* B105 (45317) */ + 3347, /* B106 (45318) */ + 3347, /* B107 (45319) */ + 3347, /* B108 (45320) */ + 3347, /* B109 (45321) */ + 3347, /* B10A (45322) */ + 3347, /* B10B (45323) */ + 3347, /* B10C (45324) */ + 3347, /* B10D (45325) */ + 3347, /* B10E (45326) */ + 3347, /* B10F (45327) */ + 3347, /* B110 (45328) */ + 3347, /* B111 (45329) */ + 3347, /* B112 (45330) */ + 3347, /* B113 (45331) */ + 3347, /* B114 (45332) */ + 3347, /* B115 (45333) */ + 3347, /* B116 (45334) */ + 3347, /* B117 (45335) */ + 3347, /* B118 (45336) */ + 3347, /* B119 (45337) */ + 3347, /* B11A (45338) */ + 3347, /* B11B (45339) */ + 3347, /* B11C (45340) */ + 3347, /* B11D (45341) */ + 3347, /* B11E (45342) */ + 3347, /* B11F (45343) */ + 3347, /* B120 (45344) */ + 3347, /* B121 (45345) */ + 3347, /* B122 (45346) */ + 3347, /* B123 (45347) */ + 3347, /* B124 (45348) */ + 3347, /* B125 (45349) */ + 3347, /* B126 (45350) */ + 3347, /* B127 (45351) */ + 3347, /* B128 (45352) */ + 3347, /* B129 (45353) */ + 3347, /* B12A (45354) */ + 3347, /* B12B (45355) */ + 3347, /* B12C (45356) */ + 3347, /* B12D (45357) */ + 3347, /* B12E (45358) */ + 3347, /* B12F (45359) */ + 3347, /* B130 (45360) */ + 3347, /* B131 (45361) */ + 3347, /* B132 (45362) */ + 3347, /* B133 (45363) */ + 3347, /* B134 (45364) */ + 3347, /* B135 (45365) */ + 3347, /* B136 (45366) */ + 3347, /* B137 (45367) */ + 3347, /* B138 (45368) */ + 3347, /* B139 (45369) */ + 3347, /* B13A (45370) */ + 3347, /* B13B (45371) */ + 3347, /* B13C (45372) */ + 3347, /* B13D (45373) */ + 3347, /* B13E (45374) */ + 3347, /* B13F (45375) */ + 3347, /* B140 (45376) */ + 3347, /* B141 (45377) */ + 3347, /* B142 (45378) */ + 3347, /* B143 (45379) */ + 3347, /* B144 (45380) */ + 3347, /* B145 (45381) */ + 3347, /* B146 (45382) */ + 3347, /* B147 (45383) */ + 3347, /* B148 (45384) */ + 3347, /* B149 (45385) */ + 3347, /* B14A (45386) */ + 3347, /* B14B (45387) */ + 3347, /* B14C (45388) */ + 3347, /* B14D (45389) */ + 3347, /* B14E (45390) */ + 3347, /* B14F (45391) */ + 3347, /* B150 (45392) */ + 3347, /* B151 (45393) */ + 3347, /* B152 (45394) */ + 3347, /* B153 (45395) */ + 3347, /* B154 (45396) */ + 3347, /* B155 (45397) */ + 3347, /* B156 (45398) */ + 3347, /* B157 (45399) */ + 3347, /* B158 (45400) */ + 3347, /* B159 (45401) */ + 3347, /* B15A (45402) */ + 3347, /* B15B (45403) */ + 3347, /* B15C (45404) */ + 3347, /* B15D (45405) */ + 3347, /* B15E (45406) */ + 3347, /* B15F (45407) */ + 3347, /* B160 (45408) */ + 3347, /* B161 (45409) */ + 3347, /* B162 (45410) */ + 3347, /* B163 (45411) */ + 3347, /* B164 (45412) */ + 3347, /* B165 (45413) */ + 3347, /* B166 (45414) */ + 3347, /* B167 (45415) */ + 3347, /* B168 (45416) */ + 3347, /* B169 (45417) */ + 3347, /* B16A (45418) */ + 3347, /* B16B (45419) */ + 3347, /* B16C (45420) */ + 3347, /* B16D (45421) */ + 3347, /* B16E (45422) */ + 3347, /* B16F (45423) */ + 3347, /* B170 (45424) */ + 3347, /* B171 (45425) */ + 3347, /* B172 (45426) */ + 3347, /* B173 (45427) */ + 3347, /* B174 (45428) */ + 3347, /* B175 (45429) */ + 3347, /* B176 (45430) */ + 3347, /* B177 (45431) */ + 3347, /* B178 (45432) */ + 3347, /* B179 (45433) */ + 3347, /* B17A (45434) */ + 3347, /* B17B (45435) */ + 3347, /* B17C (45436) */ + 3347, /* B17D (45437) */ + 3347, /* B17E (45438) */ + 3347, /* B17F (45439) */ + 3347, /* B180 (45440) */ + 3347, /* B181 (45441) */ + 3347, /* B182 (45442) */ + 3347, /* B183 (45443) */ + 3347, /* B184 (45444) */ + 3347, /* B185 (45445) */ + 3347, /* B186 (45446) */ + 3347, /* B187 (45447) */ + 3347, /* B188 (45448) */ + 3347, /* B189 (45449) */ + 3347, /* B18A (45450) */ + 3347, /* B18B (45451) */ + 3347, /* B18C (45452) */ + 3347, /* B18D (45453) */ + 3347, /* B18E (45454) */ + 3347, /* B18F (45455) */ + 3347, /* B190 (45456) */ + 3347, /* B191 (45457) */ + 3347, /* B192 (45458) */ + 3347, /* B193 (45459) */ + 3347, /* B194 (45460) */ + 3347, /* B195 (45461) */ + 3347, /* B196 (45462) */ + 3347, /* B197 (45463) */ + 3347, /* B198 (45464) */ + 3347, /* B199 (45465) */ + 3347, /* B19A (45466) */ + 3347, /* B19B (45467) */ + 3347, /* B19C (45468) */ + 3347, /* B19D (45469) */ + 3347, /* B19E (45470) */ + 3347, /* B19F (45471) */ + 3347, /* B1A0 (45472) */ + 3347, /* B1A1 (45473) */ + 3347, /* B1A2 (45474) */ + 3347, /* B1A3 (45475) */ + 3347, /* B1A4 (45476) */ + 3347, /* B1A5 (45477) */ + 3347, /* B1A6 (45478) */ + 3347, /* B1A7 (45479) */ + 3347, /* B1A8 (45480) */ + 3347, /* B1A9 (45481) */ + 3347, /* B1AA (45482) */ + 3347, /* B1AB (45483) */ + 3347, /* B1AC (45484) */ + 3347, /* B1AD (45485) */ + 3347, /* B1AE (45486) */ + 3347, /* B1AF (45487) */ + 3347, /* B1B0 (45488) */ + 3347, /* B1B1 (45489) */ + 3347, /* B1B2 (45490) */ + 3347, /* B1B3 (45491) */ + 3347, /* B1B4 (45492) */ + 3347, /* B1B5 (45493) */ + 3347, /* B1B6 (45494) */ + 3347, /* B1B7 (45495) */ + 3347, /* B1B8 (45496) */ + 3347, /* B1B9 (45497) */ + 3347, /* B1BA (45498) */ + 3347, /* B1BB (45499) */ + 3347, /* B1BC (45500) */ + 3347, /* B1BD (45501) */ + 3347, /* B1BE (45502) */ + 3347, /* B1BF (45503) */ + 3347, /* B1C0 (45504) */ + 3347, /* B1C1 (45505) */ + 3347, /* B1C2 (45506) */ + 3347, /* B1C3 (45507) */ + 3347, /* B1C4 (45508) */ + 3347, /* B1C5 (45509) */ + 3347, /* B1C6 (45510) */ + 3347, /* B1C7 (45511) */ + 3347, /* B1C8 (45512) */ + 3347, /* B1C9 (45513) */ + 3347, /* B1CA (45514) */ + 3347, /* B1CB (45515) */ + 3347, /* B1CC (45516) */ + 3347, /* B1CD (45517) */ + 3347, /* B1CE (45518) */ + 3347, /* B1CF (45519) */ + 3347, /* B1D0 (45520) */ + 3347, /* B1D1 (45521) */ + 3347, /* B1D2 (45522) */ + 3347, /* B1D3 (45523) */ + 3347, /* B1D4 (45524) */ + 3347, /* B1D5 (45525) */ + 3347, /* B1D6 (45526) */ + 3347, /* B1D7 (45527) */ + 3347, /* B1D8 (45528) */ + 3347, /* B1D9 (45529) */ + 3347, /* B1DA (45530) */ + 3347, /* B1DB (45531) */ + 3347, /* B1DC (45532) */ + 3347, /* B1DD (45533) */ + 3347, /* B1DE (45534) */ + 3347, /* B1DF (45535) */ + 3347, /* B1E0 (45536) */ + 3347, /* B1E1 (45537) */ + 3347, /* B1E2 (45538) */ + 3347, /* B1E3 (45539) */ + 3347, /* B1E4 (45540) */ + 3347, /* B1E5 (45541) */ + 3347, /* B1E6 (45542) */ + 3347, /* B1E7 (45543) */ + 3347, /* B1E8 (45544) */ + 3347, /* B1E9 (45545) */ + 3347, /* B1EA (45546) */ + 3347, /* B1EB (45547) */ + 3347, /* B1EC (45548) */ + 3347, /* B1ED (45549) */ + 3347, /* B1EE (45550) */ + 3347, /* B1EF (45551) */ + 3347, /* B1F0 (45552) */ + 3347, /* B1F1 (45553) */ + 3347, /* B1F2 (45554) */ + 3347, /* B1F3 (45555) */ + 3347, /* B1F4 (45556) */ + 3347, /* B1F5 (45557) */ + 3347, /* B1F6 (45558) */ + 3347, /* B1F7 (45559) */ + 3347, /* B1F8 (45560) */ + 3347, /* B1F9 (45561) */ + 3347, /* B1FA (45562) */ + 3347, /* B1FB (45563) */ + 3347, /* B1FC (45564) */ + 3347, /* B1FD (45565) */ + 3347, /* B1FE (45566) */ + 3347, /* B1FF (45567) */ + 3347, /* B200 (45568) */ + 3347, /* B201 (45569) */ + 3347, /* B202 (45570) */ + 3347, /* B203 (45571) */ + 3347, /* B204 (45572) */ + 3347, /* B205 (45573) */ + 3347, /* B206 (45574) */ + 3347, /* B207 (45575) */ + 3347, /* B208 (45576) */ + 3347, /* B209 (45577) */ + 3347, /* B20A (45578) */ + 3347, /* B20B (45579) */ + 3347, /* B20C (45580) */ + 3347, /* B20D (45581) */ + 3347, /* B20E (45582) */ + 3347, /* B20F (45583) */ + 3347, /* B210 (45584) */ + 3347, /* B211 (45585) */ + 3347, /* B212 (45586) */ + 3347, /* B213 (45587) */ + 3347, /* B214 (45588) */ + 3347, /* B215 (45589) */ + 3347, /* B216 (45590) */ + 3347, /* B217 (45591) */ + 3347, /* B218 (45592) */ + 3347, /* B219 (45593) */ + 3347, /* B21A (45594) */ + 3347, /* B21B (45595) */ + 3347, /* B21C (45596) */ + 3347, /* B21D (45597) */ + 3347, /* B21E (45598) */ + 3347, /* B21F (45599) */ + 3347, /* B220 (45600) */ + 3347, /* B221 (45601) */ + 3347, /* B222 (45602) */ + 3347, /* B223 (45603) */ + 3347, /* B224 (45604) */ + 3347, /* B225 (45605) */ + 3347, /* B226 (45606) */ + 3347, /* B227 (45607) */ + 3347, /* B228 (45608) */ + 3347, /* B229 (45609) */ + 3347, /* B22A (45610) */ + 3347, /* B22B (45611) */ + 3347, /* B22C (45612) */ + 3347, /* B22D (45613) */ + 3347, /* B22E (45614) */ + 3347, /* B22F (45615) */ + 3347, /* B230 (45616) */ + 3347, /* B231 (45617) */ + 3347, /* B232 (45618) */ + 3347, /* B233 (45619) */ + 3347, /* B234 (45620) */ + 3347, /* B235 (45621) */ + 3347, /* B236 (45622) */ + 3347, /* B237 (45623) */ + 3347, /* B238 (45624) */ + 3347, /* B239 (45625) */ + 3347, /* B23A (45626) */ + 3347, /* B23B (45627) */ + 3347, /* B23C (45628) */ + 3347, /* B23D (45629) */ + 3347, /* B23E (45630) */ + 3347, /* B23F (45631) */ + 3347, /* B240 (45632) */ + 3347, /* B241 (45633) */ + 3347, /* B242 (45634) */ + 3347, /* B243 (45635) */ + 3347, /* B244 (45636) */ + 3347, /* B245 (45637) */ + 3347, /* B246 (45638) */ + 3347, /* B247 (45639) */ + 3347, /* B248 (45640) */ + 3347, /* B249 (45641) */ + 3347, /* B24A (45642) */ + 3347, /* B24B (45643) */ + 3347, /* B24C (45644) */ + 3347, /* B24D (45645) */ + 3347, /* B24E (45646) */ + 3347, /* B24F (45647) */ + 3347, /* B250 (45648) */ + 3347, /* B251 (45649) */ + 3347, /* B252 (45650) */ + 3347, /* B253 (45651) */ + 3347, /* B254 (45652) */ + 3347, /* B255 (45653) */ + 3347, /* B256 (45654) */ + 3347, /* B257 (45655) */ + 3347, /* B258 (45656) */ + 3347, /* B259 (45657) */ + 3347, /* B25A (45658) */ + 3347, /* B25B (45659) */ + 3347, /* B25C (45660) */ + 3347, /* B25D (45661) */ + 3347, /* B25E (45662) */ + 3347, /* B25F (45663) */ + 3347, /* B260 (45664) */ + 3347, /* B261 (45665) */ + 3347, /* B262 (45666) */ + 3347, /* B263 (45667) */ + 3347, /* B264 (45668) */ + 3347, /* B265 (45669) */ + 3347, /* B266 (45670) */ + 3347, /* B267 (45671) */ + 3347, /* B268 (45672) */ + 3347, /* B269 (45673) */ + 3347, /* B26A (45674) */ + 3347, /* B26B (45675) */ + 3347, /* B26C (45676) */ + 3347, /* B26D (45677) */ + 3347, /* B26E (45678) */ + 3347, /* B26F (45679) */ + 3347, /* B270 (45680) */ + 3347, /* B271 (45681) */ + 3347, /* B272 (45682) */ + 3347, /* B273 (45683) */ + 3347, /* B274 (45684) */ + 3347, /* B275 (45685) */ + 3347, /* B276 (45686) */ + 3347, /* B277 (45687) */ + 3347, /* B278 (45688) */ + 3347, /* B279 (45689) */ + 3347, /* B27A (45690) */ + 3347, /* B27B (45691) */ + 3347, /* B27C (45692) */ + 3347, /* B27D (45693) */ + 3347, /* B27E (45694) */ + 3347, /* B27F (45695) */ + 3347, /* B280 (45696) */ + 3347, /* B281 (45697) */ + 3347, /* B282 (45698) */ + 3347, /* B283 (45699) */ + 3347, /* B284 (45700) */ + 3347, /* B285 (45701) */ + 3347, /* B286 (45702) */ + 3347, /* B287 (45703) */ + 3347, /* B288 (45704) */ + 3347, /* B289 (45705) */ + 3347, /* B28A (45706) */ + 3347, /* B28B (45707) */ + 3347, /* B28C (45708) */ + 3347, /* B28D (45709) */ + 3347, /* B28E (45710) */ + 3347, /* B28F (45711) */ + 3347, /* B290 (45712) */ + 3347, /* B291 (45713) */ + 3347, /* B292 (45714) */ + 3347, /* B293 (45715) */ + 3347, /* B294 (45716) */ + 3347, /* B295 (45717) */ + 3347, /* B296 (45718) */ + 3347, /* B297 (45719) */ + 3347, /* B298 (45720) */ + 3347, /* B299 (45721) */ + 3347, /* B29A (45722) */ + 3347, /* B29B (45723) */ + 3347, /* B29C (45724) */ + 3347, /* B29D (45725) */ + 3347, /* B29E (45726) */ + 3347, /* B29F (45727) */ + 3347, /* B2A0 (45728) */ + 3347, /* B2A1 (45729) */ + 3347, /* B2A2 (45730) */ + 3347, /* B2A3 (45731) */ + 3347, /* B2A4 (45732) */ + 3347, /* B2A5 (45733) */ + 3347, /* B2A6 (45734) */ + 3347, /* B2A7 (45735) */ + 3347, /* B2A8 (45736) */ + 3347, /* B2A9 (45737) */ + 3347, /* B2AA (45738) */ + 3347, /* B2AB (45739) */ + 3347, /* B2AC (45740) */ + 3347, /* B2AD (45741) */ + 3347, /* B2AE (45742) */ + 3347, /* B2AF (45743) */ + 3347, /* B2B0 (45744) */ + 3347, /* B2B1 (45745) */ + 3347, /* B2B2 (45746) */ + 3347, /* B2B3 (45747) */ + 3347, /* B2B4 (45748) */ + 3347, /* B2B5 (45749) */ + 3347, /* B2B6 (45750) */ + 3347, /* B2B7 (45751) */ + 3347, /* B2B8 (45752) */ + 3347, /* B2B9 (45753) */ + 3347, /* B2BA (45754) */ + 3347, /* B2BB (45755) */ + 3347, /* B2BC (45756) */ + 3347, /* B2BD (45757) */ + 3347, /* B2BE (45758) */ + 3347, /* B2BF (45759) */ + 3347, /* B2C0 (45760) */ + 3347, /* B2C1 (45761) */ + 3347, /* B2C2 (45762) */ + 3347, /* B2C3 (45763) */ + 3347, /* B2C4 (45764) */ + 3347, /* B2C5 (45765) */ + 3347, /* B2C6 (45766) */ + 3347, /* B2C7 (45767) */ + 3347, /* B2C8 (45768) */ + 3347, /* B2C9 (45769) */ + 3347, /* B2CA (45770) */ + 3347, /* B2CB (45771) */ + 3347, /* B2CC (45772) */ + 3347, /* B2CD (45773) */ + 3347, /* B2CE (45774) */ + 3347, /* B2CF (45775) */ + 3347, /* B2D0 (45776) */ + 3347, /* B2D1 (45777) */ + 3347, /* B2D2 (45778) */ + 3347, /* B2D3 (45779) */ + 3347, /* B2D4 (45780) */ + 3347, /* B2D5 (45781) */ + 3347, /* B2D6 (45782) */ + 3347, /* B2D7 (45783) */ + 3347, /* B2D8 (45784) */ + 3347, /* B2D9 (45785) */ + 3347, /* B2DA (45786) */ + 3347, /* B2DB (45787) */ + 3347, /* B2DC (45788) */ + 3347, /* B2DD (45789) */ + 3347, /* B2DE (45790) */ + 3347, /* B2DF (45791) */ + 3347, /* B2E0 (45792) */ + 3347, /* B2E1 (45793) */ + 3347, /* B2E2 (45794) */ + 3347, /* B2E3 (45795) */ + 3347, /* B2E4 (45796) */ + 3347, /* B2E5 (45797) */ + 3347, /* B2E6 (45798) */ + 3347, /* B2E7 (45799) */ + 3347, /* B2E8 (45800) */ + 3347, /* B2E9 (45801) */ + 3347, /* B2EA (45802) */ + 3347, /* B2EB (45803) */ + 3347, /* B2EC (45804) */ + 3347, /* B2ED (45805) */ + 3347, /* B2EE (45806) */ + 3347, /* B2EF (45807) */ + 3347, /* B2F0 (45808) */ + 3347, /* B2F1 (45809) */ + 3347, /* B2F2 (45810) */ + 3347, /* B2F3 (45811) */ + 3347, /* B2F4 (45812) */ + 3347, /* B2F5 (45813) */ + 3347, /* B2F6 (45814) */ + 3347, /* B2F7 (45815) */ + 3347, /* B2F8 (45816) */ + 3347, /* B2F9 (45817) */ + 3347, /* B2FA (45818) */ + 3347, /* B2FB (45819) */ + 3347, /* B2FC (45820) */ + 3347, /* B2FD (45821) */ + 3347, /* B2FE (45822) */ + 3347, /* B2FF (45823) */ + 3347, /* B300 (45824) */ + 3347, /* B301 (45825) */ + 3347, /* B302 (45826) */ + 3347, /* B303 (45827) */ + 3347, /* B304 (45828) */ + 3347, /* B305 (45829) */ + 3347, /* B306 (45830) */ + 3347, /* B307 (45831) */ + 3347, /* B308 (45832) */ + 3347, /* B309 (45833) */ + 3347, /* B30A (45834) */ + 3347, /* B30B (45835) */ + 3347, /* B30C (45836) */ + 3347, /* B30D (45837) */ + 3347, /* B30E (45838) */ + 3347, /* B30F (45839) */ + 3347, /* B310 (45840) */ + 3347, /* B311 (45841) */ + 3347, /* B312 (45842) */ + 3347, /* B313 (45843) */ + 3347, /* B314 (45844) */ + 3347, /* B315 (45845) */ + 3347, /* B316 (45846) */ + 3347, /* B317 (45847) */ + 3347, /* B318 (45848) */ + 3347, /* B319 (45849) */ + 3347, /* B31A (45850) */ + 3347, /* B31B (45851) */ + 3347, /* B31C (45852) */ + 3347, /* B31D (45853) */ + 3347, /* B31E (45854) */ + 3347, /* B31F (45855) */ + 3347, /* B320 (45856) */ + 3347, /* B321 (45857) */ + 3347, /* B322 (45858) */ + 3347, /* B323 (45859) */ + 3347, /* B324 (45860) */ + 3347, /* B325 (45861) */ + 3347, /* B326 (45862) */ + 3347, /* B327 (45863) */ + 3347, /* B328 (45864) */ + 3347, /* B329 (45865) */ + 3347, /* B32A (45866) */ + 3347, /* B32B (45867) */ + 3347, /* B32C (45868) */ + 3347, /* B32D (45869) */ + 3347, /* B32E (45870) */ + 3347, /* B32F (45871) */ + 3347, /* B330 (45872) */ + 3347, /* B331 (45873) */ + 3347, /* B332 (45874) */ + 3347, /* B333 (45875) */ + 3347, /* B334 (45876) */ + 3347, /* B335 (45877) */ + 3347, /* B336 (45878) */ + 3347, /* B337 (45879) */ + 3347, /* B338 (45880) */ + 3347, /* B339 (45881) */ + 3347, /* B33A (45882) */ + 3347, /* B33B (45883) */ + 3347, /* B33C (45884) */ + 3347, /* B33D (45885) */ + 3347, /* B33E (45886) */ + 3347, /* B33F (45887) */ + 3347, /* B340 (45888) */ + 3347, /* B341 (45889) */ + 3347, /* B342 (45890) */ + 3347, /* B343 (45891) */ + 3347, /* B344 (45892) */ + 3347, /* B345 (45893) */ + 3347, /* B346 (45894) */ + 3347, /* B347 (45895) */ + 3347, /* B348 (45896) */ + 3347, /* B349 (45897) */ + 3347, /* B34A (45898) */ + 3347, /* B34B (45899) */ + 3347, /* B34C (45900) */ + 3347, /* B34D (45901) */ + 3347, /* B34E (45902) */ + 3347, /* B34F (45903) */ + 3347, /* B350 (45904) */ + 3347, /* B351 (45905) */ + 3347, /* B352 (45906) */ + 3347, /* B353 (45907) */ + 3347, /* B354 (45908) */ + 3347, /* B355 (45909) */ + 3347, /* B356 (45910) */ + 3347, /* B357 (45911) */ + 3347, /* B358 (45912) */ + 3347, /* B359 (45913) */ + 3347, /* B35A (45914) */ + 3347, /* B35B (45915) */ + 3347, /* B35C (45916) */ + 3347, /* B35D (45917) */ + 3347, /* B35E (45918) */ + 3347, /* B35F (45919) */ + 3347, /* B360 (45920) */ + 3347, /* B361 (45921) */ + 3347, /* B362 (45922) */ + 3347, /* B363 (45923) */ + 3347, /* B364 (45924) */ + 3347, /* B365 (45925) */ + 3347, /* B366 (45926) */ + 3347, /* B367 (45927) */ + 3347, /* B368 (45928) */ + 3347, /* B369 (45929) */ + 3347, /* B36A (45930) */ + 3347, /* B36B (45931) */ + 3347, /* B36C (45932) */ + 3347, /* B36D (45933) */ + 3347, /* B36E (45934) */ + 3347, /* B36F (45935) */ + 3347, /* B370 (45936) */ + 3347, /* B371 (45937) */ + 3347, /* B372 (45938) */ + 3347, /* B373 (45939) */ + 3347, /* B374 (45940) */ + 3347, /* B375 (45941) */ + 3347, /* B376 (45942) */ + 3347, /* B377 (45943) */ + 3347, /* B378 (45944) */ + 3347, /* B379 (45945) */ + 3347, /* B37A (45946) */ + 3347, /* B37B (45947) */ + 3347, /* B37C (45948) */ + 3347, /* B37D (45949) */ + 3347, /* B37E (45950) */ + 3347, /* B37F (45951) */ + 3347, /* B380 (45952) */ + 3347, /* B381 (45953) */ + 3347, /* B382 (45954) */ + 3347, /* B383 (45955) */ + 3347, /* B384 (45956) */ + 3347, /* B385 (45957) */ + 3347, /* B386 (45958) */ + 3347, /* B387 (45959) */ + 3347, /* B388 (45960) */ + 3347, /* B389 (45961) */ + 3347, /* B38A (45962) */ + 3347, /* B38B (45963) */ + 3347, /* B38C (45964) */ + 3347, /* B38D (45965) */ + 3347, /* B38E (45966) */ + 3347, /* B38F (45967) */ + 3347, /* B390 (45968) */ + 3347, /* B391 (45969) */ + 3347, /* B392 (45970) */ + 3347, /* B393 (45971) */ + 3347, /* B394 (45972) */ + 3347, /* B395 (45973) */ + 3347, /* B396 (45974) */ + 3347, /* B397 (45975) */ + 3347, /* B398 (45976) */ + 3347, /* B399 (45977) */ + 3347, /* B39A (45978) */ + 3347, /* B39B (45979) */ + 3347, /* B39C (45980) */ + 3347, /* B39D (45981) */ + 3347, /* B39E (45982) */ + 3347, /* B39F (45983) */ + 3347, /* B3A0 (45984) */ + 3347, /* B3A1 (45985) */ + 3347, /* B3A2 (45986) */ + 3347, /* B3A3 (45987) */ + 3347, /* B3A4 (45988) */ + 3347, /* B3A5 (45989) */ + 3347, /* B3A6 (45990) */ + 3347, /* B3A7 (45991) */ + 3347, /* B3A8 (45992) */ + 3347, /* B3A9 (45993) */ + 3347, /* B3AA (45994) */ + 3347, /* B3AB (45995) */ + 3347, /* B3AC (45996) */ + 3347, /* B3AD (45997) */ + 3347, /* B3AE (45998) */ + 3347, /* B3AF (45999) */ + 3347, /* B3B0 (46000) */ + 3347, /* B3B1 (46001) */ + 3347, /* B3B2 (46002) */ + 3347, /* B3B3 (46003) */ + 3347, /* B3B4 (46004) */ + 3347, /* B3B5 (46005) */ + 3347, /* B3B6 (46006) */ + 3347, /* B3B7 (46007) */ + 3347, /* B3B8 (46008) */ + 3347, /* B3B9 (46009) */ + 3347, /* B3BA (46010) */ + 3347, /* B3BB (46011) */ + 3347, /* B3BC (46012) */ + 3347, /* B3BD (46013) */ + 3347, /* B3BE (46014) */ + 3347, /* B3BF (46015) */ + 3347, /* B3C0 (46016) */ + 3347, /* B3C1 (46017) */ + 3347, /* B3C2 (46018) */ + 3347, /* B3C3 (46019) */ + 3347, /* B3C4 (46020) */ + 3347, /* B3C5 (46021) */ + 3347, /* B3C6 (46022) */ + 3347, /* B3C7 (46023) */ + 3347, /* B3C8 (46024) */ + 3347, /* B3C9 (46025) */ + 3347, /* B3CA (46026) */ + 3347, /* B3CB (46027) */ + 3347, /* B3CC (46028) */ + 3347, /* B3CD (46029) */ + 3347, /* B3CE (46030) */ + 3347, /* B3CF (46031) */ + 3347, /* B3D0 (46032) */ + 3347, /* B3D1 (46033) */ + 3347, /* B3D2 (46034) */ + 3347, /* B3D3 (46035) */ + 3347, /* B3D4 (46036) */ + 3347, /* B3D5 (46037) */ + 3347, /* B3D6 (46038) */ + 3347, /* B3D7 (46039) */ + 3347, /* B3D8 (46040) */ + 3347, /* B3D9 (46041) */ + 3347, /* B3DA (46042) */ + 3347, /* B3DB (46043) */ + 3347, /* B3DC (46044) */ + 3347, /* B3DD (46045) */ + 3347, /* B3DE (46046) */ + 3347, /* B3DF (46047) */ + 3347, /* B3E0 (46048) */ + 3347, /* B3E1 (46049) */ + 3347, /* B3E2 (46050) */ + 3347, /* B3E3 (46051) */ + 3347, /* B3E4 (46052) */ + 3347, /* B3E5 (46053) */ + 3347, /* B3E6 (46054) */ + 3347, /* B3E7 (46055) */ + 3347, /* B3E8 (46056) */ + 3347, /* B3E9 (46057) */ + 3347, /* B3EA (46058) */ + 3347, /* B3EB (46059) */ + 3347, /* B3EC (46060) */ + 3347, /* B3ED (46061) */ + 3347, /* B3EE (46062) */ + 3347, /* B3EF (46063) */ + 3347, /* B3F0 (46064) */ + 3347, /* B3F1 (46065) */ + 3347, /* B3F2 (46066) */ + 3347, /* B3F3 (46067) */ + 3347, /* B3F4 (46068) */ + 3347, /* B3F5 (46069) */ + 3347, /* B3F6 (46070) */ + 3347, /* B3F7 (46071) */ + 3347, /* B3F8 (46072) */ + 3347, /* B3F9 (46073) */ + 3347, /* B3FA (46074) */ + 3347, /* B3FB (46075) */ + 3347, /* B3FC (46076) */ + 3347, /* B3FD (46077) */ + 3347, /* B3FE (46078) */ + 3347, /* B3FF (46079) */ + 3347, /* B400 (46080) */ + 3347, /* B401 (46081) */ + 3347, /* B402 (46082) */ + 3347, /* B403 (46083) */ + 3347, /* B404 (46084) */ + 3347, /* B405 (46085) */ + 3347, /* B406 (46086) */ + 3347, /* B407 (46087) */ + 3347, /* B408 (46088) */ + 3347, /* B409 (46089) */ + 3347, /* B40A (46090) */ + 3347, /* B40B (46091) */ + 3347, /* B40C (46092) */ + 3347, /* B40D (46093) */ + 3347, /* B40E (46094) */ + 3347, /* B40F (46095) */ + 3347, /* B410 (46096) */ + 3347, /* B411 (46097) */ + 3347, /* B412 (46098) */ + 3347, /* B413 (46099) */ + 3347, /* B414 (46100) */ + 3347, /* B415 (46101) */ + 3347, /* B416 (46102) */ + 3347, /* B417 (46103) */ + 3347, /* B418 (46104) */ + 3347, /* B419 (46105) */ + 3347, /* B41A (46106) */ + 3347, /* B41B (46107) */ + 3347, /* B41C (46108) */ + 3347, /* B41D (46109) */ + 3347, /* B41E (46110) */ + 3347, /* B41F (46111) */ + 3347, /* B420 (46112) */ + 3347, /* B421 (46113) */ + 3347, /* B422 (46114) */ + 3347, /* B423 (46115) */ + 3347, /* B424 (46116) */ + 3347, /* B425 (46117) */ + 3347, /* B426 (46118) */ + 3347, /* B427 (46119) */ + 3347, /* B428 (46120) */ + 3347, /* B429 (46121) */ + 3347, /* B42A (46122) */ + 3347, /* B42B (46123) */ + 3347, /* B42C (46124) */ + 3347, /* B42D (46125) */ + 3347, /* B42E (46126) */ + 3347, /* B42F (46127) */ + 3347, /* B430 (46128) */ + 3347, /* B431 (46129) */ + 3347, /* B432 (46130) */ + 3347, /* B433 (46131) */ + 3347, /* B434 (46132) */ + 3347, /* B435 (46133) */ + 3347, /* B436 (46134) */ + 3347, /* B437 (46135) */ + 3347, /* B438 (46136) */ + 3347, /* B439 (46137) */ + 3347, /* B43A (46138) */ + 3347, /* B43B (46139) */ + 3347, /* B43C (46140) */ + 3347, /* B43D (46141) */ + 3347, /* B43E (46142) */ + 3347, /* B43F (46143) */ + 3347, /* B440 (46144) */ + 3347, /* B441 (46145) */ + 3347, /* B442 (46146) */ + 3347, /* B443 (46147) */ + 3347, /* B444 (46148) */ + 3347, /* B445 (46149) */ + 3347, /* B446 (46150) */ + 3347, /* B447 (46151) */ + 3347, /* B448 (46152) */ + 3347, /* B449 (46153) */ + 3347, /* B44A (46154) */ + 3347, /* B44B (46155) */ + 3347, /* B44C (46156) */ + 3347, /* B44D (46157) */ + 3347, /* B44E (46158) */ + 3347, /* B44F (46159) */ + 3347, /* B450 (46160) */ + 3347, /* B451 (46161) */ + 3347, /* B452 (46162) */ + 3347, /* B453 (46163) */ + 3347, /* B454 (46164) */ + 3347, /* B455 (46165) */ + 3347, /* B456 (46166) */ + 3347, /* B457 (46167) */ + 3347, /* B458 (46168) */ + 3347, /* B459 (46169) */ + 3347, /* B45A (46170) */ + 3347, /* B45B (46171) */ + 3347, /* B45C (46172) */ + 3347, /* B45D (46173) */ + 3347, /* B45E (46174) */ + 3347, /* B45F (46175) */ + 3347, /* B460 (46176) */ + 3347, /* B461 (46177) */ + 3347, /* B462 (46178) */ + 3347, /* B463 (46179) */ + 3347, /* B464 (46180) */ + 3347, /* B465 (46181) */ + 3347, /* B466 (46182) */ + 3347, /* B467 (46183) */ + 3347, /* B468 (46184) */ + 3347, /* B469 (46185) */ + 3347, /* B46A (46186) */ + 3347, /* B46B (46187) */ + 3347, /* B46C (46188) */ + 3347, /* B46D (46189) */ + 3347, /* B46E (46190) */ + 3347, /* B46F (46191) */ + 3347, /* B470 (46192) */ + 3347, /* B471 (46193) */ + 3347, /* B472 (46194) */ + 3347, /* B473 (46195) */ + 3347, /* B474 (46196) */ + 3347, /* B475 (46197) */ + 3347, /* B476 (46198) */ + 3347, /* B477 (46199) */ + 3347, /* B478 (46200) */ + 3347, /* B479 (46201) */ + 3347, /* B47A (46202) */ + 3347, /* B47B (46203) */ + 3347, /* B47C (46204) */ + 3347, /* B47D (46205) */ + 3347, /* B47E (46206) */ + 3347, /* B47F (46207) */ + 3347, /* B480 (46208) */ + 3347, /* B481 (46209) */ + 3347, /* B482 (46210) */ + 3347, /* B483 (46211) */ + 3347, /* B484 (46212) */ + 3347, /* B485 (46213) */ + 3347, /* B486 (46214) */ + 3347, /* B487 (46215) */ + 3347, /* B488 (46216) */ + 3347, /* B489 (46217) */ + 3347, /* B48A (46218) */ + 3347, /* B48B (46219) */ + 3347, /* B48C (46220) */ + 3347, /* B48D (46221) */ + 3347, /* B48E (46222) */ + 3347, /* B48F (46223) */ + 3347, /* B490 (46224) */ + 3347, /* B491 (46225) */ + 3347, /* B492 (46226) */ + 3347, /* B493 (46227) */ + 3347, /* B494 (46228) */ + 3347, /* B495 (46229) */ + 3347, /* B496 (46230) */ + 3347, /* B497 (46231) */ + 3347, /* B498 (46232) */ + 3347, /* B499 (46233) */ + 3347, /* B49A (46234) */ + 3347, /* B49B (46235) */ + 3347, /* B49C (46236) */ + 3347, /* B49D (46237) */ + 3347, /* B49E (46238) */ + 3347, /* B49F (46239) */ + 3347, /* B4A0 (46240) */ + 3347, /* B4A1 (46241) */ + 3347, /* B4A2 (46242) */ + 3347, /* B4A3 (46243) */ + 3347, /* B4A4 (46244) */ + 3347, /* B4A5 (46245) */ + 3347, /* B4A6 (46246) */ + 3347, /* B4A7 (46247) */ + 3347, /* B4A8 (46248) */ + 3347, /* B4A9 (46249) */ + 3347, /* B4AA (46250) */ + 3347, /* B4AB (46251) */ + 3347, /* B4AC (46252) */ + 3347, /* B4AD (46253) */ + 3347, /* B4AE (46254) */ + 3347, /* B4AF (46255) */ + 3347, /* B4B0 (46256) */ + 3347, /* B4B1 (46257) */ + 3347, /* B4B2 (46258) */ + 3347, /* B4B3 (46259) */ + 3347, /* B4B4 (46260) */ + 3347, /* B4B5 (46261) */ + 3347, /* B4B6 (46262) */ + 3347, /* B4B7 (46263) */ + 3347, /* B4B8 (46264) */ + 3347, /* B4B9 (46265) */ + 3347, /* B4BA (46266) */ + 3347, /* B4BB (46267) */ + 3347, /* B4BC (46268) */ + 3347, /* B4BD (46269) */ + 3347, /* B4BE (46270) */ + 3347, /* B4BF (46271) */ + 3347, /* B4C0 (46272) */ + 3347, /* B4C1 (46273) */ + 3347, /* B4C2 (46274) */ + 3347, /* B4C3 (46275) */ + 3347, /* B4C4 (46276) */ + 3347, /* B4C5 (46277) */ + 3347, /* B4C6 (46278) */ + 3347, /* B4C7 (46279) */ + 3347, /* B4C8 (46280) */ + 3347, /* B4C9 (46281) */ + 3347, /* B4CA (46282) */ + 3347, /* B4CB (46283) */ + 3347, /* B4CC (46284) */ + 3347, /* B4CD (46285) */ + 3347, /* B4CE (46286) */ + 3347, /* B4CF (46287) */ + 3347, /* B4D0 (46288) */ + 3347, /* B4D1 (46289) */ + 3347, /* B4D2 (46290) */ + 3347, /* B4D3 (46291) */ + 3347, /* B4D4 (46292) */ + 3347, /* B4D5 (46293) */ + 3347, /* B4D6 (46294) */ + 3347, /* B4D7 (46295) */ + 3347, /* B4D8 (46296) */ + 3347, /* B4D9 (46297) */ + 3347, /* B4DA (46298) */ + 3347, /* B4DB (46299) */ + 3347, /* B4DC (46300) */ + 3347, /* B4DD (46301) */ + 3347, /* B4DE (46302) */ + 3347, /* B4DF (46303) */ + 3347, /* B4E0 (46304) */ + 3347, /* B4E1 (46305) */ + 3347, /* B4E2 (46306) */ + 3347, /* B4E3 (46307) */ + 3347, /* B4E4 (46308) */ + 3347, /* B4E5 (46309) */ + 3347, /* B4E6 (46310) */ + 3347, /* B4E7 (46311) */ + 3347, /* B4E8 (46312) */ + 3347, /* B4E9 (46313) */ + 3347, /* B4EA (46314) */ + 3347, /* B4EB (46315) */ + 3347, /* B4EC (46316) */ + 3347, /* B4ED (46317) */ + 3347, /* B4EE (46318) */ + 3347, /* B4EF (46319) */ + 3347, /* B4F0 (46320) */ + 3347, /* B4F1 (46321) */ + 3347, /* B4F2 (46322) */ + 3347, /* B4F3 (46323) */ + 3347, /* B4F4 (46324) */ + 3347, /* B4F5 (46325) */ + 3347, /* B4F6 (46326) */ + 3347, /* B4F7 (46327) */ + 3347, /* B4F8 (46328) */ + 3347, /* B4F9 (46329) */ + 3347, /* B4FA (46330) */ + 3347, /* B4FB (46331) */ + 3347, /* B4FC (46332) */ + 3347, /* B4FD (46333) */ + 3347, /* B4FE (46334) */ + 3347, /* B4FF (46335) */ + 3347, /* B500 (46336) */ + 3347, /* B501 (46337) */ + 3347, /* B502 (46338) */ + 3347, /* B503 (46339) */ + 3347, /* B504 (46340) */ + 3347, /* B505 (46341) */ + 3347, /* B506 (46342) */ + 3347, /* B507 (46343) */ + 3347, /* B508 (46344) */ + 3347, /* B509 (46345) */ + 3347, /* B50A (46346) */ + 3347, /* B50B (46347) */ + 3347, /* B50C (46348) */ + 3347, /* B50D (46349) */ + 3347, /* B50E (46350) */ + 3347, /* B50F (46351) */ + 3347, /* B510 (46352) */ + 3347, /* B511 (46353) */ + 3347, /* B512 (46354) */ + 3347, /* B513 (46355) */ + 3347, /* B514 (46356) */ + 3347, /* B515 (46357) */ + 3347, /* B516 (46358) */ + 3347, /* B517 (46359) */ + 3347, /* B518 (46360) */ + 3347, /* B519 (46361) */ + 3347, /* B51A (46362) */ + 3347, /* B51B (46363) */ + 3347, /* B51C (46364) */ + 3347, /* B51D (46365) */ + 3347, /* B51E (46366) */ + 3347, /* B51F (46367) */ + 3347, /* B520 (46368) */ + 3347, /* B521 (46369) */ + 3347, /* B522 (46370) */ + 3347, /* B523 (46371) */ + 3347, /* B524 (46372) */ + 3347, /* B525 (46373) */ + 3347, /* B526 (46374) */ + 3347, /* B527 (46375) */ + 3347, /* B528 (46376) */ + 3347, /* B529 (46377) */ + 3347, /* B52A (46378) */ + 3347, /* B52B (46379) */ + 3347, /* B52C (46380) */ + 3347, /* B52D (46381) */ + 3347, /* B52E (46382) */ + 3347, /* B52F (46383) */ + 3347, /* B530 (46384) */ + 3347, /* B531 (46385) */ + 3347, /* B532 (46386) */ + 3347, /* B533 (46387) */ + 3347, /* B534 (46388) */ + 3347, /* B535 (46389) */ + 3347, /* B536 (46390) */ + 3347, /* B537 (46391) */ + 3347, /* B538 (46392) */ + 3347, /* B539 (46393) */ + 3347, /* B53A (46394) */ + 3347, /* B53B (46395) */ + 3347, /* B53C (46396) */ + 3347, /* B53D (46397) */ + 3347, /* B53E (46398) */ + 3347, /* B53F (46399) */ + 3347, /* B540 (46400) */ + 3347, /* B541 (46401) */ + 3347, /* B542 (46402) */ + 3347, /* B543 (46403) */ + 3347, /* B544 (46404) */ + 3347, /* B545 (46405) */ + 3347, /* B546 (46406) */ + 3347, /* B547 (46407) */ + 3347, /* B548 (46408) */ + 3347, /* B549 (46409) */ + 3347, /* B54A (46410) */ + 3347, /* B54B (46411) */ + 3347, /* B54C (46412) */ + 3347, /* B54D (46413) */ + 3347, /* B54E (46414) */ + 3347, /* B54F (46415) */ + 3347, /* B550 (46416) */ + 3347, /* B551 (46417) */ + 3347, /* B552 (46418) */ + 3347, /* B553 (46419) */ + 3347, /* B554 (46420) */ + 3347, /* B555 (46421) */ + 3347, /* B556 (46422) */ + 3347, /* B557 (46423) */ + 3347, /* B558 (46424) */ + 3347, /* B559 (46425) */ + 3347, /* B55A (46426) */ + 3347, /* B55B (46427) */ + 3347, /* B55C (46428) */ + 3347, /* B55D (46429) */ + 3347, /* B55E (46430) */ + 3347, /* B55F (46431) */ + 3347, /* B560 (46432) */ + 3347, /* B561 (46433) */ + 3347, /* B562 (46434) */ + 3347, /* B563 (46435) */ + 3347, /* B564 (46436) */ + 3347, /* B565 (46437) */ + 3347, /* B566 (46438) */ + 3347, /* B567 (46439) */ + 3347, /* B568 (46440) */ + 3347, /* B569 (46441) */ + 3347, /* B56A (46442) */ + 3347, /* B56B (46443) */ + 3347, /* B56C (46444) */ + 3347, /* B56D (46445) */ + 3347, /* B56E (46446) */ + 3347, /* B56F (46447) */ + 3347, /* B570 (46448) */ + 3347, /* B571 (46449) */ + 3347, /* B572 (46450) */ + 3347, /* B573 (46451) */ + 3347, /* B574 (46452) */ + 3347, /* B575 (46453) */ + 3347, /* B576 (46454) */ + 3347, /* B577 (46455) */ + 3347, /* B578 (46456) */ + 3347, /* B579 (46457) */ + 3347, /* B57A (46458) */ + 3347, /* B57B (46459) */ + 3347, /* B57C (46460) */ + 3347, /* B57D (46461) */ + 3347, /* B57E (46462) */ + 3347, /* B57F (46463) */ + 3347, /* B580 (46464) */ + 3347, /* B581 (46465) */ + 3347, /* B582 (46466) */ + 3347, /* B583 (46467) */ + 3347, /* B584 (46468) */ + 3347, /* B585 (46469) */ + 3347, /* B586 (46470) */ + 3347, /* B587 (46471) */ + 3347, /* B588 (46472) */ + 3347, /* B589 (46473) */ + 3347, /* B58A (46474) */ + 3347, /* B58B (46475) */ + 3347, /* B58C (46476) */ + 3347, /* B58D (46477) */ + 3347, /* B58E (46478) */ + 3347, /* B58F (46479) */ + 3347, /* B590 (46480) */ + 3347, /* B591 (46481) */ + 3347, /* B592 (46482) */ + 3347, /* B593 (46483) */ + 3347, /* B594 (46484) */ + 3347, /* B595 (46485) */ + 3347, /* B596 (46486) */ + 3347, /* B597 (46487) */ + 3347, /* B598 (46488) */ + 3347, /* B599 (46489) */ + 3347, /* B59A (46490) */ + 3347, /* B59B (46491) */ + 3347, /* B59C (46492) */ + 3347, /* B59D (46493) */ + 3347, /* B59E (46494) */ + 3347, /* B59F (46495) */ + 3347, /* B5A0 (46496) */ + 3347, /* B5A1 (46497) */ + 3347, /* B5A2 (46498) */ + 3347, /* B5A3 (46499) */ + 3347, /* B5A4 (46500) */ + 3347, /* B5A5 (46501) */ + 3347, /* B5A6 (46502) */ + 3347, /* B5A7 (46503) */ + 3347, /* B5A8 (46504) */ + 3347, /* B5A9 (46505) */ + 3347, /* B5AA (46506) */ + 3347, /* B5AB (46507) */ + 3347, /* B5AC (46508) */ + 3347, /* B5AD (46509) */ + 3347, /* B5AE (46510) */ + 3347, /* B5AF (46511) */ + 3347, /* B5B0 (46512) */ + 3347, /* B5B1 (46513) */ + 3347, /* B5B2 (46514) */ + 3347, /* B5B3 (46515) */ + 3347, /* B5B4 (46516) */ + 3347, /* B5B5 (46517) */ + 3347, /* B5B6 (46518) */ + 3347, /* B5B7 (46519) */ + 3347, /* B5B8 (46520) */ + 3347, /* B5B9 (46521) */ + 3347, /* B5BA (46522) */ + 3347, /* B5BB (46523) */ + 3347, /* B5BC (46524) */ + 3347, /* B5BD (46525) */ + 3347, /* B5BE (46526) */ + 3347, /* B5BF (46527) */ + 3347, /* B5C0 (46528) */ + 3347, /* B5C1 (46529) */ + 3347, /* B5C2 (46530) */ + 3347, /* B5C3 (46531) */ + 3347, /* B5C4 (46532) */ + 3347, /* B5C5 (46533) */ + 3347, /* B5C6 (46534) */ + 3347, /* B5C7 (46535) */ + 3347, /* B5C8 (46536) */ + 3347, /* B5C9 (46537) */ + 3347, /* B5CA (46538) */ + 3347, /* B5CB (46539) */ + 3347, /* B5CC (46540) */ + 3347, /* B5CD (46541) */ + 3347, /* B5CE (46542) */ + 3347, /* B5CF (46543) */ + 3347, /* B5D0 (46544) */ + 3347, /* B5D1 (46545) */ + 3347, /* B5D2 (46546) */ + 3347, /* B5D3 (46547) */ + 3347, /* B5D4 (46548) */ + 3347, /* B5D5 (46549) */ + 3347, /* B5D6 (46550) */ + 3347, /* B5D7 (46551) */ + 3347, /* B5D8 (46552) */ + 3347, /* B5D9 (46553) */ + 3347, /* B5DA (46554) */ + 3347, /* B5DB (46555) */ + 3347, /* B5DC (46556) */ + 3347, /* B5DD (46557) */ + 3347, /* B5DE (46558) */ + 3347, /* B5DF (46559) */ + 3347, /* B5E0 (46560) */ + 3347, /* B5E1 (46561) */ + 3347, /* B5E2 (46562) */ + 3347, /* B5E3 (46563) */ + 3347, /* B5E4 (46564) */ + 3347, /* B5E5 (46565) */ + 3347, /* B5E6 (46566) */ + 3347, /* B5E7 (46567) */ + 3347, /* B5E8 (46568) */ + 3347, /* B5E9 (46569) */ + 3347, /* B5EA (46570) */ + 3347, /* B5EB (46571) */ + 3347, /* B5EC (46572) */ + 3347, /* B5ED (46573) */ + 3347, /* B5EE (46574) */ + 3347, /* B5EF (46575) */ + 3347, /* B5F0 (46576) */ + 3347, /* B5F1 (46577) */ + 3347, /* B5F2 (46578) */ + 3347, /* B5F3 (46579) */ + 3347, /* B5F4 (46580) */ + 3347, /* B5F5 (46581) */ + 3347, /* B5F6 (46582) */ + 3347, /* B5F7 (46583) */ + 3347, /* B5F8 (46584) */ + 3347, /* B5F9 (46585) */ + 3347, /* B5FA (46586) */ + 3347, /* B5FB (46587) */ + 3347, /* B5FC (46588) */ + 3347, /* B5FD (46589) */ + 3347, /* B5FE (46590) */ + 3347, /* B5FF (46591) */ + 3347, /* B600 (46592) */ + 3347, /* B601 (46593) */ + 3347, /* B602 (46594) */ + 3347, /* B603 (46595) */ + 3347, /* B604 (46596) */ + 3347, /* B605 (46597) */ + 3347, /* B606 (46598) */ + 3347, /* B607 (46599) */ + 3347, /* B608 (46600) */ + 3347, /* B609 (46601) */ + 3347, /* B60A (46602) */ + 3347, /* B60B (46603) */ + 3347, /* B60C (46604) */ + 3347, /* B60D (46605) */ + 3347, /* B60E (46606) */ + 3347, /* B60F (46607) */ + 3347, /* B610 (46608) */ + 3347, /* B611 (46609) */ + 3347, /* B612 (46610) */ + 3347, /* B613 (46611) */ + 3347, /* B614 (46612) */ + 3347, /* B615 (46613) */ + 3347, /* B616 (46614) */ + 3347, /* B617 (46615) */ + 3347, /* B618 (46616) */ + 3347, /* B619 (46617) */ + 3347, /* B61A (46618) */ + 3347, /* B61B (46619) */ + 3347, /* B61C (46620) */ + 3347, /* B61D (46621) */ + 3347, /* B61E (46622) */ + 3347, /* B61F (46623) */ + 3347, /* B620 (46624) */ + 3347, /* B621 (46625) */ + 3347, /* B622 (46626) */ + 3347, /* B623 (46627) */ + 3347, /* B624 (46628) */ + 3347, /* B625 (46629) */ + 3347, /* B626 (46630) */ + 3347, /* B627 (46631) */ + 3347, /* B628 (46632) */ + 3347, /* B629 (46633) */ + 3347, /* B62A (46634) */ + 3347, /* B62B (46635) */ + 3347, /* B62C (46636) */ + 3347, /* B62D (46637) */ + 3347, /* B62E (46638) */ + 3347, /* B62F (46639) */ + 3347, /* B630 (46640) */ + 3347, /* B631 (46641) */ + 3347, /* B632 (46642) */ + 3347, /* B633 (46643) */ + 3347, /* B634 (46644) */ + 3347, /* B635 (46645) */ + 3347, /* B636 (46646) */ + 3347, /* B637 (46647) */ + 3347, /* B638 (46648) */ + 3347, /* B639 (46649) */ + 3347, /* B63A (46650) */ + 3347, /* B63B (46651) */ + 3347, /* B63C (46652) */ + 3347, /* B63D (46653) */ + 3347, /* B63E (46654) */ + 3347, /* B63F (46655) */ + 3347, /* B640 (46656) */ + 3347, /* B641 (46657) */ + 3347, /* B642 (46658) */ + 3347, /* B643 (46659) */ + 3347, /* B644 (46660) */ + 3347, /* B645 (46661) */ + 3347, /* B646 (46662) */ + 3347, /* B647 (46663) */ + 3347, /* B648 (46664) */ + 3347, /* B649 (46665) */ + 3347, /* B64A (46666) */ + 3347, /* B64B (46667) */ + 3347, /* B64C (46668) */ + 3347, /* B64D (46669) */ + 3347, /* B64E (46670) */ + 3347, /* B64F (46671) */ + 3347, /* B650 (46672) */ + 3347, /* B651 (46673) */ + 3347, /* B652 (46674) */ + 3347, /* B653 (46675) */ + 3347, /* B654 (46676) */ + 3347, /* B655 (46677) */ + 3347, /* B656 (46678) */ + 3347, /* B657 (46679) */ + 3347, /* B658 (46680) */ + 3347, /* B659 (46681) */ + 3347, /* B65A (46682) */ + 3347, /* B65B (46683) */ + 3347, /* B65C (46684) */ + 3347, /* B65D (46685) */ + 3347, /* B65E (46686) */ + 3347, /* B65F (46687) */ + 3347, /* B660 (46688) */ + 3347, /* B661 (46689) */ + 3347, /* B662 (46690) */ + 3347, /* B663 (46691) */ + 3347, /* B664 (46692) */ + 3347, /* B665 (46693) */ + 3347, /* B666 (46694) */ + 3347, /* B667 (46695) */ + 3347, /* B668 (46696) */ + 3347, /* B669 (46697) */ + 3347, /* B66A (46698) */ + 3347, /* B66B (46699) */ + 3347, /* B66C (46700) */ + 3347, /* B66D (46701) */ + 3347, /* B66E (46702) */ + 3347, /* B66F (46703) */ + 3347, /* B670 (46704) */ + 3347, /* B671 (46705) */ + 3347, /* B672 (46706) */ + 3347, /* B673 (46707) */ + 3347, /* B674 (46708) */ + 3347, /* B675 (46709) */ + 3347, /* B676 (46710) */ + 3347, /* B677 (46711) */ + 3347, /* B678 (46712) */ + 3347, /* B679 (46713) */ + 3347, /* B67A (46714) */ + 3347, /* B67B (46715) */ + 3347, /* B67C (46716) */ + 3347, /* B67D (46717) */ + 3347, /* B67E (46718) */ + 3347, /* B67F (46719) */ + 3347, /* B680 (46720) */ + 3347, /* B681 (46721) */ + 3347, /* B682 (46722) */ + 3347, /* B683 (46723) */ + 3347, /* B684 (46724) */ + 3347, /* B685 (46725) */ + 3347, /* B686 (46726) */ + 3347, /* B687 (46727) */ + 3347, /* B688 (46728) */ + 3347, /* B689 (46729) */ + 3347, /* B68A (46730) */ + 3347, /* B68B (46731) */ + 3347, /* B68C (46732) */ + 3347, /* B68D (46733) */ + 3347, /* B68E (46734) */ + 3347, /* B68F (46735) */ + 3347, /* B690 (46736) */ + 3347, /* B691 (46737) */ + 3347, /* B692 (46738) */ + 3347, /* B693 (46739) */ + 3347, /* B694 (46740) */ + 3347, /* B695 (46741) */ + 3347, /* B696 (46742) */ + 3347, /* B697 (46743) */ + 3347, /* B698 (46744) */ + 3347, /* B699 (46745) */ + 3347, /* B69A (46746) */ + 3347, /* B69B (46747) */ + 3347, /* B69C (46748) */ + 3347, /* B69D (46749) */ + 3347, /* B69E (46750) */ + 3347, /* B69F (46751) */ + 3347, /* B6A0 (46752) */ + 3347, /* B6A1 (46753) */ + 3347, /* B6A2 (46754) */ + 3347, /* B6A3 (46755) */ + 3347, /* B6A4 (46756) */ + 3347, /* B6A5 (46757) */ + 3347, /* B6A6 (46758) */ + 3347, /* B6A7 (46759) */ + 3347, /* B6A8 (46760) */ + 3347, /* B6A9 (46761) */ + 3347, /* B6AA (46762) */ + 3347, /* B6AB (46763) */ + 3347, /* B6AC (46764) */ + 3347, /* B6AD (46765) */ + 3347, /* B6AE (46766) */ + 3347, /* B6AF (46767) */ + 3347, /* B6B0 (46768) */ + 3347, /* B6B1 (46769) */ + 3347, /* B6B2 (46770) */ + 3347, /* B6B3 (46771) */ + 3347, /* B6B4 (46772) */ + 3347, /* B6B5 (46773) */ + 3347, /* B6B6 (46774) */ + 3347, /* B6B7 (46775) */ + 3347, /* B6B8 (46776) */ + 3347, /* B6B9 (46777) */ + 3347, /* B6BA (46778) */ + 3347, /* B6BB (46779) */ + 3347, /* B6BC (46780) */ + 3347, /* B6BD (46781) */ + 3347, /* B6BE (46782) */ + 3347, /* B6BF (46783) */ + 3347, /* B6C0 (46784) */ + 3347, /* B6C1 (46785) */ + 3347, /* B6C2 (46786) */ + 3347, /* B6C3 (46787) */ + 3347, /* B6C4 (46788) */ + 3347, /* B6C5 (46789) */ + 3347, /* B6C6 (46790) */ + 3347, /* B6C7 (46791) */ + 3347, /* B6C8 (46792) */ + 3347, /* B6C9 (46793) */ + 3347, /* B6CA (46794) */ + 3347, /* B6CB (46795) */ + 3347, /* B6CC (46796) */ + 3347, /* B6CD (46797) */ + 3347, /* B6CE (46798) */ + 3347, /* B6CF (46799) */ + 3347, /* B6D0 (46800) */ + 3347, /* B6D1 (46801) */ + 3347, /* B6D2 (46802) */ + 3347, /* B6D3 (46803) */ + 3347, /* B6D4 (46804) */ + 3347, /* B6D5 (46805) */ + 3347, /* B6D6 (46806) */ + 3347, /* B6D7 (46807) */ + 3347, /* B6D8 (46808) */ + 3347, /* B6D9 (46809) */ + 3347, /* B6DA (46810) */ + 3347, /* B6DB (46811) */ + 3347, /* B6DC (46812) */ + 3347, /* B6DD (46813) */ + 3347, /* B6DE (46814) */ + 3347, /* B6DF (46815) */ + 3347, /* B6E0 (46816) */ + 3347, /* B6E1 (46817) */ + 3347, /* B6E2 (46818) */ + 3347, /* B6E3 (46819) */ + 3347, /* B6E4 (46820) */ + 3347, /* B6E5 (46821) */ + 3347, /* B6E6 (46822) */ + 3347, /* B6E7 (46823) */ + 3347, /* B6E8 (46824) */ + 3347, /* B6E9 (46825) */ + 3347, /* B6EA (46826) */ + 3347, /* B6EB (46827) */ + 3347, /* B6EC (46828) */ + 3347, /* B6ED (46829) */ + 3347, /* B6EE (46830) */ + 3347, /* B6EF (46831) */ + 3347, /* B6F0 (46832) */ + 3347, /* B6F1 (46833) */ + 3347, /* B6F2 (46834) */ + 3347, /* B6F3 (46835) */ + 3347, /* B6F4 (46836) */ + 3347, /* B6F5 (46837) */ + 3347, /* B6F6 (46838) */ + 3347, /* B6F7 (46839) */ + 3347, /* B6F8 (46840) */ + 3347, /* B6F9 (46841) */ + 3347, /* B6FA (46842) */ + 3347, /* B6FB (46843) */ + 3347, /* B6FC (46844) */ + 3347, /* B6FD (46845) */ + 3347, /* B6FE (46846) */ + 3347, /* B6FF (46847) */ + 3347, /* B700 (46848) */ + 3347, /* B701 (46849) */ + 3347, /* B702 (46850) */ + 3347, /* B703 (46851) */ + 3347, /* B704 (46852) */ + 3347, /* B705 (46853) */ + 3347, /* B706 (46854) */ + 3347, /* B707 (46855) */ + 3347, /* B708 (46856) */ + 3347, /* B709 (46857) */ + 3347, /* B70A (46858) */ + 3347, /* B70B (46859) */ + 3347, /* B70C (46860) */ + 3347, /* B70D (46861) */ + 3347, /* B70E (46862) */ + 3347, /* B70F (46863) */ + 3347, /* B710 (46864) */ + 3347, /* B711 (46865) */ + 3347, /* B712 (46866) */ + 3347, /* B713 (46867) */ + 3347, /* B714 (46868) */ + 3347, /* B715 (46869) */ + 3347, /* B716 (46870) */ + 3347, /* B717 (46871) */ + 3347, /* B718 (46872) */ + 3347, /* B719 (46873) */ + 3347, /* B71A (46874) */ + 3347, /* B71B (46875) */ + 3347, /* B71C (46876) */ + 3347, /* B71D (46877) */ + 3347, /* B71E (46878) */ + 3347, /* B71F (46879) */ + 3347, /* B720 (46880) */ + 3347, /* B721 (46881) */ + 3347, /* B722 (46882) */ + 3347, /* B723 (46883) */ + 3347, /* B724 (46884) */ + 3347, /* B725 (46885) */ + 3347, /* B726 (46886) */ + 3347, /* B727 (46887) */ + 3347, /* B728 (46888) */ + 3347, /* B729 (46889) */ + 3347, /* B72A (46890) */ + 3347, /* B72B (46891) */ + 3347, /* B72C (46892) */ + 3347, /* B72D (46893) */ + 3347, /* B72E (46894) */ + 3347, /* B72F (46895) */ + 3347, /* B730 (46896) */ + 3347, /* B731 (46897) */ + 3347, /* B732 (46898) */ + 3347, /* B733 (46899) */ + 3347, /* B734 (46900) */ + 3347, /* B735 (46901) */ + 3347, /* B736 (46902) */ + 3347, /* B737 (46903) */ + 3347, /* B738 (46904) */ + 3347, /* B739 (46905) */ + 3347, /* B73A (46906) */ + 3347, /* B73B (46907) */ + 3347, /* B73C (46908) */ + 3347, /* B73D (46909) */ + 3347, /* B73E (46910) */ + 3347, /* B73F (46911) */ + 3347, /* B740 (46912) */ + 3347, /* B741 (46913) */ + 3347, /* B742 (46914) */ + 3347, /* B743 (46915) */ + 3347, /* B744 (46916) */ + 3347, /* B745 (46917) */ + 3347, /* B746 (46918) */ + 3347, /* B747 (46919) */ + 3347, /* B748 (46920) */ + 3347, /* B749 (46921) */ + 3347, /* B74A (46922) */ + 3347, /* B74B (46923) */ + 3347, /* B74C (46924) */ + 3347, /* B74D (46925) */ + 3347, /* B74E (46926) */ + 3347, /* B74F (46927) */ + 3347, /* B750 (46928) */ + 3347, /* B751 (46929) */ + 3347, /* B752 (46930) */ + 3347, /* B753 (46931) */ + 3347, /* B754 (46932) */ + 3347, /* B755 (46933) */ + 3347, /* B756 (46934) */ + 3347, /* B757 (46935) */ + 3347, /* B758 (46936) */ + 3347, /* B759 (46937) */ + 3347, /* B75A (46938) */ + 3347, /* B75B (46939) */ + 3347, /* B75C (46940) */ + 3347, /* B75D (46941) */ + 3347, /* B75E (46942) */ + 3347, /* B75F (46943) */ + 3347, /* B760 (46944) */ + 3347, /* B761 (46945) */ + 3347, /* B762 (46946) */ + 3347, /* B763 (46947) */ + 3347, /* B764 (46948) */ + 3347, /* B765 (46949) */ + 3347, /* B766 (46950) */ + 3347, /* B767 (46951) */ + 3347, /* B768 (46952) */ + 3347, /* B769 (46953) */ + 3347, /* B76A (46954) */ + 3347, /* B76B (46955) */ + 3347, /* B76C (46956) */ + 3347, /* B76D (46957) */ + 3347, /* B76E (46958) */ + 3347, /* B76F (46959) */ + 3347, /* B770 (46960) */ + 3347, /* B771 (46961) */ + 3347, /* B772 (46962) */ + 3347, /* B773 (46963) */ + 3347, /* B774 (46964) */ + 3347, /* B775 (46965) */ + 3347, /* B776 (46966) */ + 3347, /* B777 (46967) */ + 3347, /* B778 (46968) */ + 3347, /* B779 (46969) */ + 3347, /* B77A (46970) */ + 3347, /* B77B (46971) */ + 3347, /* B77C (46972) */ + 3347, /* B77D (46973) */ + 3347, /* B77E (46974) */ + 3347, /* B77F (46975) */ + 3347, /* B780 (46976) */ + 3347, /* B781 (46977) */ + 3347, /* B782 (46978) */ + 3347, /* B783 (46979) */ + 3347, /* B784 (46980) */ + 3347, /* B785 (46981) */ + 3347, /* B786 (46982) */ + 3347, /* B787 (46983) */ + 3347, /* B788 (46984) */ + 3347, /* B789 (46985) */ + 3347, /* B78A (46986) */ + 3347, /* B78B (46987) */ + 3347, /* B78C (46988) */ + 3347, /* B78D (46989) */ + 3347, /* B78E (46990) */ + 3347, /* B78F (46991) */ + 3347, /* B790 (46992) */ + 3347, /* B791 (46993) */ + 3347, /* B792 (46994) */ + 3347, /* B793 (46995) */ + 3347, /* B794 (46996) */ + 3347, /* B795 (46997) */ + 3347, /* B796 (46998) */ + 3347, /* B797 (46999) */ + 3347, /* B798 (47000) */ + 3347, /* B799 (47001) */ + 3347, /* B79A (47002) */ + 3347, /* B79B (47003) */ + 3347, /* B79C (47004) */ + 3347, /* B79D (47005) */ + 3347, /* B79E (47006) */ + 3347, /* B79F (47007) */ + 3347, /* B7A0 (47008) */ + 3347, /* B7A1 (47009) */ + 3347, /* B7A2 (47010) */ + 3347, /* B7A3 (47011) */ + 3347, /* B7A4 (47012) */ + 3347, /* B7A5 (47013) */ + 3347, /* B7A6 (47014) */ + 3347, /* B7A7 (47015) */ + 3347, /* B7A8 (47016) */ + 3347, /* B7A9 (47017) */ + 3347, /* B7AA (47018) */ + 3347, /* B7AB (47019) */ + 3347, /* B7AC (47020) */ + 3347, /* B7AD (47021) */ + 3347, /* B7AE (47022) */ + 3347, /* B7AF (47023) */ + 3347, /* B7B0 (47024) */ + 3347, /* B7B1 (47025) */ + 3347, /* B7B2 (47026) */ + 3347, /* B7B3 (47027) */ + 3347, /* B7B4 (47028) */ + 3347, /* B7B5 (47029) */ + 3347, /* B7B6 (47030) */ + 3347, /* B7B7 (47031) */ + 3347, /* B7B8 (47032) */ + 3347, /* B7B9 (47033) */ + 3347, /* B7BA (47034) */ + 3347, /* B7BB (47035) */ + 3347, /* B7BC (47036) */ + 3347, /* B7BD (47037) */ + 3347, /* B7BE (47038) */ + 3347, /* B7BF (47039) */ + 3347, /* B7C0 (47040) */ + 3347, /* B7C1 (47041) */ + 3347, /* B7C2 (47042) */ + 3347, /* B7C3 (47043) */ + 3347, /* B7C4 (47044) */ + 3347, /* B7C5 (47045) */ + 3347, /* B7C6 (47046) */ + 3347, /* B7C7 (47047) */ + 3347, /* B7C8 (47048) */ + 3347, /* B7C9 (47049) */ + 3347, /* B7CA (47050) */ + 3347, /* B7CB (47051) */ + 3347, /* B7CC (47052) */ + 3347, /* B7CD (47053) */ + 3347, /* B7CE (47054) */ + 3347, /* B7CF (47055) */ + 3347, /* B7D0 (47056) */ + 3347, /* B7D1 (47057) */ + 3347, /* B7D2 (47058) */ + 3347, /* B7D3 (47059) */ + 3347, /* B7D4 (47060) */ + 3347, /* B7D5 (47061) */ + 3347, /* B7D6 (47062) */ + 3347, /* B7D7 (47063) */ + 3347, /* B7D8 (47064) */ + 3347, /* B7D9 (47065) */ + 3347, /* B7DA (47066) */ + 3347, /* B7DB (47067) */ + 3347, /* B7DC (47068) */ + 3347, /* B7DD (47069) */ + 3347, /* B7DE (47070) */ + 3347, /* B7DF (47071) */ + 3347, /* B7E0 (47072) */ + 3347, /* B7E1 (47073) */ + 3347, /* B7E2 (47074) */ + 3347, /* B7E3 (47075) */ + 3347, /* B7E4 (47076) */ + 3347, /* B7E5 (47077) */ + 3347, /* B7E6 (47078) */ + 3347, /* B7E7 (47079) */ + 3347, /* B7E8 (47080) */ + 3347, /* B7E9 (47081) */ + 3347, /* B7EA (47082) */ + 3347, /* B7EB (47083) */ + 3347, /* B7EC (47084) */ + 3347, /* B7ED (47085) */ + 3347, /* B7EE (47086) */ + 3347, /* B7EF (47087) */ + 3347, /* B7F0 (47088) */ + 3347, /* B7F1 (47089) */ + 3347, /* B7F2 (47090) */ + 3347, /* B7F3 (47091) */ + 3347, /* B7F4 (47092) */ + 3347, /* B7F5 (47093) */ + 3347, /* B7F6 (47094) */ + 3347, /* B7F7 (47095) */ + 3347, /* B7F8 (47096) */ + 3347, /* B7F9 (47097) */ + 3347, /* B7FA (47098) */ + 3347, /* B7FB (47099) */ + 3347, /* B7FC (47100) */ + 3347, /* B7FD (47101) */ + 3347, /* B7FE (47102) */ + 3347, /* B7FF (47103) */ + 3347, /* B800 (47104) */ + 3347, /* B801 (47105) */ + 3347, /* B802 (47106) */ + 3347, /* B803 (47107) */ + 3347, /* B804 (47108) */ + 3347, /* B805 (47109) */ + 3347, /* B806 (47110) */ + 3347, /* B807 (47111) */ + 3347, /* B808 (47112) */ + 3347, /* B809 (47113) */ + 3347, /* B80A (47114) */ + 3347, /* B80B (47115) */ + 3347, /* B80C (47116) */ + 3347, /* B80D (47117) */ + 3347, /* B80E (47118) */ + 3347, /* B80F (47119) */ + 3347, /* B810 (47120) */ + 3347, /* B811 (47121) */ + 3347, /* B812 (47122) */ + 3347, /* B813 (47123) */ + 3347, /* B814 (47124) */ + 3347, /* B815 (47125) */ + 3347, /* B816 (47126) */ + 3347, /* B817 (47127) */ + 3347, /* B818 (47128) */ + 3347, /* B819 (47129) */ + 3347, /* B81A (47130) */ + 3347, /* B81B (47131) */ + 3347, /* B81C (47132) */ + 3347, /* B81D (47133) */ + 3347, /* B81E (47134) */ + 3347, /* B81F (47135) */ + 3347, /* B820 (47136) */ + 3347, /* B821 (47137) */ + 3347, /* B822 (47138) */ + 3347, /* B823 (47139) */ + 3347, /* B824 (47140) */ + 3347, /* B825 (47141) */ + 3347, /* B826 (47142) */ + 3347, /* B827 (47143) */ + 3347, /* B828 (47144) */ + 3347, /* B829 (47145) */ + 3347, /* B82A (47146) */ + 3347, /* B82B (47147) */ + 3347, /* B82C (47148) */ + 3347, /* B82D (47149) */ + 3347, /* B82E (47150) */ + 3347, /* B82F (47151) */ + 3347, /* B830 (47152) */ + 3347, /* B831 (47153) */ + 3347, /* B832 (47154) */ + 3347, /* B833 (47155) */ + 3347, /* B834 (47156) */ + 3347, /* B835 (47157) */ + 3347, /* B836 (47158) */ + 3347, /* B837 (47159) */ + 3347, /* B838 (47160) */ + 3347, /* B839 (47161) */ + 3347, /* B83A (47162) */ + 3347, /* B83B (47163) */ + 3347, /* B83C (47164) */ + 3347, /* B83D (47165) */ + 3347, /* B83E (47166) */ + 3347, /* B83F (47167) */ + 3347, /* B840 (47168) */ + 3347, /* B841 (47169) */ + 3347, /* B842 (47170) */ + 3347, /* B843 (47171) */ + 3347, /* B844 (47172) */ + 3347, /* B845 (47173) */ + 3347, /* B846 (47174) */ + 3347, /* B847 (47175) */ + 3347, /* B848 (47176) */ + 3347, /* B849 (47177) */ + 3347, /* B84A (47178) */ + 3347, /* B84B (47179) */ + 3347, /* B84C (47180) */ + 3347, /* B84D (47181) */ + 3347, /* B84E (47182) */ + 3347, /* B84F (47183) */ + 3347, /* B850 (47184) */ + 3347, /* B851 (47185) */ + 3347, /* B852 (47186) */ + 3347, /* B853 (47187) */ + 3347, /* B854 (47188) */ + 3347, /* B855 (47189) */ + 3347, /* B856 (47190) */ + 3347, /* B857 (47191) */ + 3347, /* B858 (47192) */ + 3347, /* B859 (47193) */ + 3347, /* B85A (47194) */ + 3347, /* B85B (47195) */ + 3347, /* B85C (47196) */ + 3347, /* B85D (47197) */ + 3347, /* B85E (47198) */ + 3347, /* B85F (47199) */ + 3347, /* B860 (47200) */ + 3347, /* B861 (47201) */ + 3347, /* B862 (47202) */ + 3347, /* B863 (47203) */ + 3347, /* B864 (47204) */ + 3347, /* B865 (47205) */ + 3347, /* B866 (47206) */ + 3347, /* B867 (47207) */ + 3347, /* B868 (47208) */ + 3347, /* B869 (47209) */ + 3347, /* B86A (47210) */ + 3347, /* B86B (47211) */ + 3347, /* B86C (47212) */ + 3347, /* B86D (47213) */ + 3347, /* B86E (47214) */ + 3347, /* B86F (47215) */ + 3347, /* B870 (47216) */ + 3347, /* B871 (47217) */ + 3347, /* B872 (47218) */ + 3347, /* B873 (47219) */ + 3347, /* B874 (47220) */ + 3347, /* B875 (47221) */ + 3347, /* B876 (47222) */ + 3347, /* B877 (47223) */ + 3347, /* B878 (47224) */ + 3347, /* B879 (47225) */ + 3347, /* B87A (47226) */ + 3347, /* B87B (47227) */ + 3347, /* B87C (47228) */ + 3347, /* B87D (47229) */ + 3347, /* B87E (47230) */ + 3347, /* B87F (47231) */ + 3347, /* B880 (47232) */ + 3347, /* B881 (47233) */ + 3347, /* B882 (47234) */ + 3347, /* B883 (47235) */ + 3347, /* B884 (47236) */ + 3347, /* B885 (47237) */ + 3347, /* B886 (47238) */ + 3347, /* B887 (47239) */ + 3347, /* B888 (47240) */ + 3347, /* B889 (47241) */ + 3347, /* B88A (47242) */ + 3347, /* B88B (47243) */ + 3347, /* B88C (47244) */ + 3347, /* B88D (47245) */ + 3347, /* B88E (47246) */ + 3347, /* B88F (47247) */ + 3347, /* B890 (47248) */ + 3347, /* B891 (47249) */ + 3347, /* B892 (47250) */ + 3347, /* B893 (47251) */ + 3347, /* B894 (47252) */ + 3347, /* B895 (47253) */ + 3347, /* B896 (47254) */ + 3347, /* B897 (47255) */ + 3347, /* B898 (47256) */ + 3347, /* B899 (47257) */ + 3347, /* B89A (47258) */ + 3347, /* B89B (47259) */ + 3347, /* B89C (47260) */ + 3347, /* B89D (47261) */ + 3347, /* B89E (47262) */ + 3347, /* B89F (47263) */ + 3347, /* B8A0 (47264) */ + 3347, /* B8A1 (47265) */ + 3347, /* B8A2 (47266) */ + 3347, /* B8A3 (47267) */ + 3347, /* B8A4 (47268) */ + 3347, /* B8A5 (47269) */ + 3347, /* B8A6 (47270) */ + 3347, /* B8A7 (47271) */ + 3347, /* B8A8 (47272) */ + 3347, /* B8A9 (47273) */ + 3347, /* B8AA (47274) */ + 3347, /* B8AB (47275) */ + 3347, /* B8AC (47276) */ + 3347, /* B8AD (47277) */ + 3347, /* B8AE (47278) */ + 3347, /* B8AF (47279) */ + 3347, /* B8B0 (47280) */ + 3347, /* B8B1 (47281) */ + 3347, /* B8B2 (47282) */ + 3347, /* B8B3 (47283) */ + 3347, /* B8B4 (47284) */ + 3347, /* B8B5 (47285) */ + 3347, /* B8B6 (47286) */ + 3347, /* B8B7 (47287) */ + 3347, /* B8B8 (47288) */ + 3347, /* B8B9 (47289) */ + 3347, /* B8BA (47290) */ + 3347, /* B8BB (47291) */ + 3347, /* B8BC (47292) */ + 3347, /* B8BD (47293) */ + 3347, /* B8BE (47294) */ + 3347, /* B8BF (47295) */ + 3347, /* B8C0 (47296) */ + 3347, /* B8C1 (47297) */ + 3347, /* B8C2 (47298) */ + 3347, /* B8C3 (47299) */ + 3347, /* B8C4 (47300) */ + 3347, /* B8C5 (47301) */ + 3347, /* B8C6 (47302) */ + 3347, /* B8C7 (47303) */ + 3347, /* B8C8 (47304) */ + 3347, /* B8C9 (47305) */ + 3347, /* B8CA (47306) */ + 3347, /* B8CB (47307) */ + 3347, /* B8CC (47308) */ + 3347, /* B8CD (47309) */ + 3347, /* B8CE (47310) */ + 3347, /* B8CF (47311) */ + 3347, /* B8D0 (47312) */ + 3347, /* B8D1 (47313) */ + 3347, /* B8D2 (47314) */ + 3347, /* B8D3 (47315) */ + 3347, /* B8D4 (47316) */ + 3347, /* B8D5 (47317) */ + 3347, /* B8D6 (47318) */ + 3347, /* B8D7 (47319) */ + 3347, /* B8D8 (47320) */ + 3347, /* B8D9 (47321) */ + 3347, /* B8DA (47322) */ + 3347, /* B8DB (47323) */ + 3347, /* B8DC (47324) */ + 3347, /* B8DD (47325) */ + 3347, /* B8DE (47326) */ + 3347, /* B8DF (47327) */ + 3347, /* B8E0 (47328) */ + 3347, /* B8E1 (47329) */ + 3347, /* B8E2 (47330) */ + 3347, /* B8E3 (47331) */ + 3347, /* B8E4 (47332) */ + 3347, /* B8E5 (47333) */ + 3347, /* B8E6 (47334) */ + 3347, /* B8E7 (47335) */ + 3347, /* B8E8 (47336) */ + 3347, /* B8E9 (47337) */ + 3347, /* B8EA (47338) */ + 3347, /* B8EB (47339) */ + 3347, /* B8EC (47340) */ + 3347, /* B8ED (47341) */ + 3347, /* B8EE (47342) */ + 3347, /* B8EF (47343) */ + 3347, /* B8F0 (47344) */ + 3347, /* B8F1 (47345) */ + 3347, /* B8F2 (47346) */ + 3347, /* B8F3 (47347) */ + 3347, /* B8F4 (47348) */ + 3347, /* B8F5 (47349) */ + 3347, /* B8F6 (47350) */ + 3347, /* B8F7 (47351) */ + 3347, /* B8F8 (47352) */ + 3347, /* B8F9 (47353) */ + 3347, /* B8FA (47354) */ + 3347, /* B8FB (47355) */ + 3347, /* B8FC (47356) */ + 3347, /* B8FD (47357) */ + 3347, /* B8FE (47358) */ + 3347, /* B8FF (47359) */ + 3347, /* B900 (47360) */ + 3347, /* B901 (47361) */ + 3347, /* B902 (47362) */ + 3347, /* B903 (47363) */ + 3347, /* B904 (47364) */ + 3347, /* B905 (47365) */ + 3347, /* B906 (47366) */ + 3347, /* B907 (47367) */ + 3347, /* B908 (47368) */ + 3347, /* B909 (47369) */ + 3347, /* B90A (47370) */ + 3347, /* B90B (47371) */ + 3347, /* B90C (47372) */ + 3347, /* B90D (47373) */ + 3347, /* B90E (47374) */ + 3347, /* B90F (47375) */ + 3347, /* B910 (47376) */ + 3347, /* B911 (47377) */ + 3347, /* B912 (47378) */ + 3347, /* B913 (47379) */ + 3347, /* B914 (47380) */ + 3347, /* B915 (47381) */ + 3347, /* B916 (47382) */ + 3347, /* B917 (47383) */ + 3347, /* B918 (47384) */ + 3347, /* B919 (47385) */ + 3347, /* B91A (47386) */ + 3347, /* B91B (47387) */ + 3347, /* B91C (47388) */ + 3347, /* B91D (47389) */ + 3347, /* B91E (47390) */ + 3347, /* B91F (47391) */ + 3347, /* B920 (47392) */ + 3347, /* B921 (47393) */ + 3347, /* B922 (47394) */ + 3347, /* B923 (47395) */ + 3347, /* B924 (47396) */ + 3347, /* B925 (47397) */ + 3347, /* B926 (47398) */ + 3347, /* B927 (47399) */ + 3347, /* B928 (47400) */ + 3347, /* B929 (47401) */ + 3347, /* B92A (47402) */ + 3347, /* B92B (47403) */ + 3347, /* B92C (47404) */ + 3347, /* B92D (47405) */ + 3347, /* B92E (47406) */ + 3347, /* B92F (47407) */ + 3347, /* B930 (47408) */ + 3347, /* B931 (47409) */ + 3347, /* B932 (47410) */ + 3347, /* B933 (47411) */ + 3347, /* B934 (47412) */ + 3347, /* B935 (47413) */ + 3347, /* B936 (47414) */ + 3347, /* B937 (47415) */ + 3347, /* B938 (47416) */ + 3347, /* B939 (47417) */ + 3347, /* B93A (47418) */ + 3347, /* B93B (47419) */ + 3347, /* B93C (47420) */ + 3347, /* B93D (47421) */ + 3347, /* B93E (47422) */ + 3347, /* B93F (47423) */ + 3347, /* B940 (47424) */ + 3347, /* B941 (47425) */ + 3347, /* B942 (47426) */ + 3347, /* B943 (47427) */ + 3347, /* B944 (47428) */ + 3347, /* B945 (47429) */ + 3347, /* B946 (47430) */ + 3347, /* B947 (47431) */ + 3347, /* B948 (47432) */ + 3347, /* B949 (47433) */ + 3347, /* B94A (47434) */ + 3347, /* B94B (47435) */ + 3347, /* B94C (47436) */ + 3347, /* B94D (47437) */ + 3347, /* B94E (47438) */ + 3347, /* B94F (47439) */ + 3347, /* B950 (47440) */ + 3347, /* B951 (47441) */ + 3347, /* B952 (47442) */ + 3347, /* B953 (47443) */ + 3347, /* B954 (47444) */ + 3347, /* B955 (47445) */ + 3347, /* B956 (47446) */ + 3347, /* B957 (47447) */ + 3347, /* B958 (47448) */ + 3347, /* B959 (47449) */ + 3347, /* B95A (47450) */ + 3347, /* B95B (47451) */ + 3347, /* B95C (47452) */ + 3347, /* B95D (47453) */ + 3347, /* B95E (47454) */ + 3347, /* B95F (47455) */ + 3347, /* B960 (47456) */ + 3347, /* B961 (47457) */ + 3347, /* B962 (47458) */ + 3347, /* B963 (47459) */ + 3347, /* B964 (47460) */ + 3347, /* B965 (47461) */ + 3347, /* B966 (47462) */ + 3347, /* B967 (47463) */ + 3347, /* B968 (47464) */ + 3347, /* B969 (47465) */ + 3347, /* B96A (47466) */ + 3347, /* B96B (47467) */ + 3347, /* B96C (47468) */ + 3347, /* B96D (47469) */ + 3347, /* B96E (47470) */ + 3347, /* B96F (47471) */ + 3347, /* B970 (47472) */ + 3347, /* B971 (47473) */ + 3347, /* B972 (47474) */ + 3347, /* B973 (47475) */ + 3347, /* B974 (47476) */ + 3347, /* B975 (47477) */ + 3347, /* B976 (47478) */ + 3347, /* B977 (47479) */ + 3347, /* B978 (47480) */ + 3347, /* B979 (47481) */ + 3347, /* B97A (47482) */ + 3347, /* B97B (47483) */ + 3347, /* B97C (47484) */ + 3347, /* B97D (47485) */ + 3347, /* B97E (47486) */ + 3347, /* B97F (47487) */ + 3347, /* B980 (47488) */ + 3347, /* B981 (47489) */ + 3347, /* B982 (47490) */ + 3347, /* B983 (47491) */ + 3347, /* B984 (47492) */ + 3347, /* B985 (47493) */ + 3347, /* B986 (47494) */ + 3347, /* B987 (47495) */ + 3347, /* B988 (47496) */ + 3347, /* B989 (47497) */ + 3347, /* B98A (47498) */ + 3347, /* B98B (47499) */ + 3347, /* B98C (47500) */ + 3347, /* B98D (47501) */ + 3347, /* B98E (47502) */ + 3347, /* B98F (47503) */ + 3347, /* B990 (47504) */ + 3347, /* B991 (47505) */ + 3347, /* B992 (47506) */ + 3347, /* B993 (47507) */ + 3347, /* B994 (47508) */ + 3347, /* B995 (47509) */ + 3347, /* B996 (47510) */ + 3347, /* B997 (47511) */ + 3347, /* B998 (47512) */ + 3347, /* B999 (47513) */ + 3347, /* B99A (47514) */ + 3347, /* B99B (47515) */ + 3347, /* B99C (47516) */ + 3347, /* B99D (47517) */ + 3347, /* B99E (47518) */ + 3347, /* B99F (47519) */ + 3347, /* B9A0 (47520) */ + 3347, /* B9A1 (47521) */ + 3347, /* B9A2 (47522) */ + 3347, /* B9A3 (47523) */ + 3347, /* B9A4 (47524) */ + 3347, /* B9A5 (47525) */ + 3347, /* B9A6 (47526) */ + 3347, /* B9A7 (47527) */ + 3347, /* B9A8 (47528) */ + 3347, /* B9A9 (47529) */ + 3347, /* B9AA (47530) */ + 3347, /* B9AB (47531) */ + 3347, /* B9AC (47532) */ + 3347, /* B9AD (47533) */ + 3347, /* B9AE (47534) */ + 3347, /* B9AF (47535) */ + 3347, /* B9B0 (47536) */ + 3347, /* B9B1 (47537) */ + 3347, /* B9B2 (47538) */ + 3347, /* B9B3 (47539) */ + 3347, /* B9B4 (47540) */ + 3347, /* B9B5 (47541) */ + 3347, /* B9B6 (47542) */ + 3347, /* B9B7 (47543) */ + 3347, /* B9B8 (47544) */ + 3347, /* B9B9 (47545) */ + 3347, /* B9BA (47546) */ + 3347, /* B9BB (47547) */ + 3347, /* B9BC (47548) */ + 3347, /* B9BD (47549) */ + 3347, /* B9BE (47550) */ + 3347, /* B9BF (47551) */ + 3347, /* B9C0 (47552) */ + 3347, /* B9C1 (47553) */ + 3347, /* B9C2 (47554) */ + 3347, /* B9C3 (47555) */ + 3347, /* B9C4 (47556) */ + 3347, /* B9C5 (47557) */ + 3347, /* B9C6 (47558) */ + 3347, /* B9C7 (47559) */ + 3347, /* B9C8 (47560) */ + 3347, /* B9C9 (47561) */ + 3347, /* B9CA (47562) */ + 3347, /* B9CB (47563) */ + 3347, /* B9CC (47564) */ + 3347, /* B9CD (47565) */ + 3347, /* B9CE (47566) */ + 3347, /* B9CF (47567) */ + 3347, /* B9D0 (47568) */ + 3347, /* B9D1 (47569) */ + 3347, /* B9D2 (47570) */ + 3347, /* B9D3 (47571) */ + 3347, /* B9D4 (47572) */ + 3347, /* B9D5 (47573) */ + 3347, /* B9D6 (47574) */ + 3347, /* B9D7 (47575) */ + 3347, /* B9D8 (47576) */ + 3347, /* B9D9 (47577) */ + 3347, /* B9DA (47578) */ + 3347, /* B9DB (47579) */ + 3347, /* B9DC (47580) */ + 3347, /* B9DD (47581) */ + 3347, /* B9DE (47582) */ + 3347, /* B9DF (47583) */ + 3347, /* B9E0 (47584) */ + 3347, /* B9E1 (47585) */ + 3347, /* B9E2 (47586) */ + 3347, /* B9E3 (47587) */ + 3347, /* B9E4 (47588) */ + 3347, /* B9E5 (47589) */ + 3347, /* B9E6 (47590) */ + 3347, /* B9E7 (47591) */ + 3347, /* B9E8 (47592) */ + 3347, /* B9E9 (47593) */ + 3347, /* B9EA (47594) */ + 3347, /* B9EB (47595) */ + 3347, /* B9EC (47596) */ + 3347, /* B9ED (47597) */ + 3347, /* B9EE (47598) */ + 3347, /* B9EF (47599) */ + 3347, /* B9F0 (47600) */ + 3347, /* B9F1 (47601) */ + 3347, /* B9F2 (47602) */ + 3347, /* B9F3 (47603) */ + 3347, /* B9F4 (47604) */ + 3347, /* B9F5 (47605) */ + 3347, /* B9F6 (47606) */ + 3347, /* B9F7 (47607) */ + 3347, /* B9F8 (47608) */ + 3347, /* B9F9 (47609) */ + 3347, /* B9FA (47610) */ + 3347, /* B9FB (47611) */ + 3347, /* B9FC (47612) */ + 3347, /* B9FD (47613) */ + 3347, /* B9FE (47614) */ + 3347, /* B9FF (47615) */ + 3347, /* BA00 (47616) */ + 3347, /* BA01 (47617) */ + 3347, /* BA02 (47618) */ + 3347, /* BA03 (47619) */ + 3347, /* BA04 (47620) */ + 3347, /* BA05 (47621) */ + 3347, /* BA06 (47622) */ + 3347, /* BA07 (47623) */ + 3347, /* BA08 (47624) */ + 3347, /* BA09 (47625) */ + 3347, /* BA0A (47626) */ + 3347, /* BA0B (47627) */ + 3347, /* BA0C (47628) */ + 3347, /* BA0D (47629) */ + 3347, /* BA0E (47630) */ + 3347, /* BA0F (47631) */ + 3347, /* BA10 (47632) */ + 3347, /* BA11 (47633) */ + 3347, /* BA12 (47634) */ + 3347, /* BA13 (47635) */ + 3347, /* BA14 (47636) */ + 3347, /* BA15 (47637) */ + 3347, /* BA16 (47638) */ + 3347, /* BA17 (47639) */ + 3347, /* BA18 (47640) */ + 3347, /* BA19 (47641) */ + 3347, /* BA1A (47642) */ + 3347, /* BA1B (47643) */ + 3347, /* BA1C (47644) */ + 3347, /* BA1D (47645) */ + 3347, /* BA1E (47646) */ + 3347, /* BA1F (47647) */ + 3347, /* BA20 (47648) */ + 3347, /* BA21 (47649) */ + 3347, /* BA22 (47650) */ + 3347, /* BA23 (47651) */ + 3347, /* BA24 (47652) */ + 3347, /* BA25 (47653) */ + 3347, /* BA26 (47654) */ + 3347, /* BA27 (47655) */ + 3347, /* BA28 (47656) */ + 3347, /* BA29 (47657) */ + 3347, /* BA2A (47658) */ + 3347, /* BA2B (47659) */ + 3347, /* BA2C (47660) */ + 3347, /* BA2D (47661) */ + 3347, /* BA2E (47662) */ + 3347, /* BA2F (47663) */ + 3347, /* BA30 (47664) */ + 3347, /* BA31 (47665) */ + 3347, /* BA32 (47666) */ + 3347, /* BA33 (47667) */ + 3347, /* BA34 (47668) */ + 3347, /* BA35 (47669) */ + 3347, /* BA36 (47670) */ + 3347, /* BA37 (47671) */ + 3347, /* BA38 (47672) */ + 3347, /* BA39 (47673) */ + 3347, /* BA3A (47674) */ + 3347, /* BA3B (47675) */ + 3347, /* BA3C (47676) */ + 3347, /* BA3D (47677) */ + 3347, /* BA3E (47678) */ + 3347, /* BA3F (47679) */ + 3347, /* BA40 (47680) */ + 3347, /* BA41 (47681) */ + 3347, /* BA42 (47682) */ + 3347, /* BA43 (47683) */ + 3347, /* BA44 (47684) */ + 3347, /* BA45 (47685) */ + 3347, /* BA46 (47686) */ + 3347, /* BA47 (47687) */ + 3347, /* BA48 (47688) */ + 3347, /* BA49 (47689) */ + 3347, /* BA4A (47690) */ + 3347, /* BA4B (47691) */ + 3347, /* BA4C (47692) */ + 3347, /* BA4D (47693) */ + 3347, /* BA4E (47694) */ + 3347, /* BA4F (47695) */ + 3347, /* BA50 (47696) */ + 3347, /* BA51 (47697) */ + 3347, /* BA52 (47698) */ + 3347, /* BA53 (47699) */ + 3347, /* BA54 (47700) */ + 3347, /* BA55 (47701) */ + 3347, /* BA56 (47702) */ + 3347, /* BA57 (47703) */ + 3347, /* BA58 (47704) */ + 3347, /* BA59 (47705) */ + 3347, /* BA5A (47706) */ + 3347, /* BA5B (47707) */ + 3347, /* BA5C (47708) */ + 3347, /* BA5D (47709) */ + 3347, /* BA5E (47710) */ + 3347, /* BA5F (47711) */ + 3347, /* BA60 (47712) */ + 3347, /* BA61 (47713) */ + 3347, /* BA62 (47714) */ + 3347, /* BA63 (47715) */ + 3347, /* BA64 (47716) */ + 3347, /* BA65 (47717) */ + 3347, /* BA66 (47718) */ + 3347, /* BA67 (47719) */ + 3347, /* BA68 (47720) */ + 3347, /* BA69 (47721) */ + 3347, /* BA6A (47722) */ + 3347, /* BA6B (47723) */ + 3347, /* BA6C (47724) */ + 3347, /* BA6D (47725) */ + 3347, /* BA6E (47726) */ + 3347, /* BA6F (47727) */ + 3347, /* BA70 (47728) */ + 3347, /* BA71 (47729) */ + 3347, /* BA72 (47730) */ + 3347, /* BA73 (47731) */ + 3347, /* BA74 (47732) */ + 3347, /* BA75 (47733) */ + 3347, /* BA76 (47734) */ + 3347, /* BA77 (47735) */ + 3347, /* BA78 (47736) */ + 3347, /* BA79 (47737) */ + 3347, /* BA7A (47738) */ + 3347, /* BA7B (47739) */ + 3347, /* BA7C (47740) */ + 3347, /* BA7D (47741) */ + 3347, /* BA7E (47742) */ + 3347, /* BA7F (47743) */ + 3347, /* BA80 (47744) */ + 3347, /* BA81 (47745) */ + 3347, /* BA82 (47746) */ + 3347, /* BA83 (47747) */ + 3347, /* BA84 (47748) */ + 3347, /* BA85 (47749) */ + 3347, /* BA86 (47750) */ + 3347, /* BA87 (47751) */ + 3347, /* BA88 (47752) */ + 3347, /* BA89 (47753) */ + 3347, /* BA8A (47754) */ + 3347, /* BA8B (47755) */ + 3347, /* BA8C (47756) */ + 3347, /* BA8D (47757) */ + 3347, /* BA8E (47758) */ + 3347, /* BA8F (47759) */ + 3347, /* BA90 (47760) */ + 3347, /* BA91 (47761) */ + 3347, /* BA92 (47762) */ + 3347, /* BA93 (47763) */ + 3347, /* BA94 (47764) */ + 3347, /* BA95 (47765) */ + 3347, /* BA96 (47766) */ + 3347, /* BA97 (47767) */ + 3347, /* BA98 (47768) */ + 3347, /* BA99 (47769) */ + 3347, /* BA9A (47770) */ + 3347, /* BA9B (47771) */ + 3347, /* BA9C (47772) */ + 3347, /* BA9D (47773) */ + 3347, /* BA9E (47774) */ + 3347, /* BA9F (47775) */ + 3347, /* BAA0 (47776) */ + 3347, /* BAA1 (47777) */ + 3347, /* BAA2 (47778) */ + 3347, /* BAA3 (47779) */ + 3347, /* BAA4 (47780) */ + 3347, /* BAA5 (47781) */ + 3347, /* BAA6 (47782) */ + 3347, /* BAA7 (47783) */ + 3347, /* BAA8 (47784) */ + 3347, /* BAA9 (47785) */ + 3347, /* BAAA (47786) */ + 3347, /* BAAB (47787) */ + 3347, /* BAAC (47788) */ + 3347, /* BAAD (47789) */ + 3347, /* BAAE (47790) */ + 3347, /* BAAF (47791) */ + 3347, /* BAB0 (47792) */ + 3347, /* BAB1 (47793) */ + 3347, /* BAB2 (47794) */ + 3347, /* BAB3 (47795) */ + 3347, /* BAB4 (47796) */ + 3347, /* BAB5 (47797) */ + 3347, /* BAB6 (47798) */ + 3347, /* BAB7 (47799) */ + 3347, /* BAB8 (47800) */ + 3347, /* BAB9 (47801) */ + 3347, /* BABA (47802) */ + 3347, /* BABB (47803) */ + 3347, /* BABC (47804) */ + 3347, /* BABD (47805) */ + 3347, /* BABE (47806) */ + 3347, /* BABF (47807) */ + 3347, /* BAC0 (47808) */ + 3347, /* BAC1 (47809) */ + 3347, /* BAC2 (47810) */ + 3347, /* BAC3 (47811) */ + 3347, /* BAC4 (47812) */ + 3347, /* BAC5 (47813) */ + 3347, /* BAC6 (47814) */ + 3347, /* BAC7 (47815) */ + 3347, /* BAC8 (47816) */ + 3347, /* BAC9 (47817) */ + 3347, /* BACA (47818) */ + 3347, /* BACB (47819) */ + 3347, /* BACC (47820) */ + 3347, /* BACD (47821) */ + 3347, /* BACE (47822) */ + 3347, /* BACF (47823) */ + 3347, /* BAD0 (47824) */ + 3347, /* BAD1 (47825) */ + 3347, /* BAD2 (47826) */ + 3347, /* BAD3 (47827) */ + 3347, /* BAD4 (47828) */ + 3347, /* BAD5 (47829) */ + 3347, /* BAD6 (47830) */ + 3347, /* BAD7 (47831) */ + 3347, /* BAD8 (47832) */ + 3347, /* BAD9 (47833) */ + 3347, /* BADA (47834) */ + 3347, /* BADB (47835) */ + 3347, /* BADC (47836) */ + 3347, /* BADD (47837) */ + 3347, /* BADE (47838) */ + 3347, /* BADF (47839) */ + 3347, /* BAE0 (47840) */ + 3347, /* BAE1 (47841) */ + 3347, /* BAE2 (47842) */ + 3347, /* BAE3 (47843) */ + 3347, /* BAE4 (47844) */ + 3347, /* BAE5 (47845) */ + 3347, /* BAE6 (47846) */ + 3347, /* BAE7 (47847) */ + 3347, /* BAE8 (47848) */ + 3347, /* BAE9 (47849) */ + 3347, /* BAEA (47850) */ + 3347, /* BAEB (47851) */ + 3347, /* BAEC (47852) */ + 3347, /* BAED (47853) */ + 3347, /* BAEE (47854) */ + 3347, /* BAEF (47855) */ + 3347, /* BAF0 (47856) */ + 3347, /* BAF1 (47857) */ + 3347, /* BAF2 (47858) */ + 3347, /* BAF3 (47859) */ + 3347, /* BAF4 (47860) */ + 3347, /* BAF5 (47861) */ + 3347, /* BAF6 (47862) */ + 3347, /* BAF7 (47863) */ + 3347, /* BAF8 (47864) */ + 3347, /* BAF9 (47865) */ + 3347, /* BAFA (47866) */ + 3347, /* BAFB (47867) */ + 3347, /* BAFC (47868) */ + 3347, /* BAFD (47869) */ + 3347, /* BAFE (47870) */ + 3347, /* BAFF (47871) */ + 3347, /* BB00 (47872) */ + 3347, /* BB01 (47873) */ + 3347, /* BB02 (47874) */ + 3347, /* BB03 (47875) */ + 3347, /* BB04 (47876) */ + 3347, /* BB05 (47877) */ + 3347, /* BB06 (47878) */ + 3347, /* BB07 (47879) */ + 3347, /* BB08 (47880) */ + 3347, /* BB09 (47881) */ + 3347, /* BB0A (47882) */ + 3347, /* BB0B (47883) */ + 3347, /* BB0C (47884) */ + 3347, /* BB0D (47885) */ + 3347, /* BB0E (47886) */ + 3347, /* BB0F (47887) */ + 3347, /* BB10 (47888) */ + 3347, /* BB11 (47889) */ + 3347, /* BB12 (47890) */ + 3347, /* BB13 (47891) */ + 3347, /* BB14 (47892) */ + 3347, /* BB15 (47893) */ + 3347, /* BB16 (47894) */ + 3347, /* BB17 (47895) */ + 3347, /* BB18 (47896) */ + 3347, /* BB19 (47897) */ + 3347, /* BB1A (47898) */ + 3347, /* BB1B (47899) */ + 3347, /* BB1C (47900) */ + 3347, /* BB1D (47901) */ + 3347, /* BB1E (47902) */ + 3347, /* BB1F (47903) */ + 3347, /* BB20 (47904) */ + 3347, /* BB21 (47905) */ + 3347, /* BB22 (47906) */ + 3347, /* BB23 (47907) */ + 3347, /* BB24 (47908) */ + 3347, /* BB25 (47909) */ + 3347, /* BB26 (47910) */ + 3347, /* BB27 (47911) */ + 3347, /* BB28 (47912) */ + 3347, /* BB29 (47913) */ + 3347, /* BB2A (47914) */ + 3347, /* BB2B (47915) */ + 3347, /* BB2C (47916) */ + 3347, /* BB2D (47917) */ + 3347, /* BB2E (47918) */ + 3347, /* BB2F (47919) */ + 3347, /* BB30 (47920) */ + 3347, /* BB31 (47921) */ + 3347, /* BB32 (47922) */ + 3347, /* BB33 (47923) */ + 3347, /* BB34 (47924) */ + 3347, /* BB35 (47925) */ + 3347, /* BB36 (47926) */ + 3347, /* BB37 (47927) */ + 3347, /* BB38 (47928) */ + 3347, /* BB39 (47929) */ + 3347, /* BB3A (47930) */ + 3347, /* BB3B (47931) */ + 3347, /* BB3C (47932) */ + 3347, /* BB3D (47933) */ + 3347, /* BB3E (47934) */ + 3347, /* BB3F (47935) */ + 3347, /* BB40 (47936) */ + 3347, /* BB41 (47937) */ + 3347, /* BB42 (47938) */ + 3347, /* BB43 (47939) */ + 3347, /* BB44 (47940) */ + 3347, /* BB45 (47941) */ + 3347, /* BB46 (47942) */ + 3347, /* BB47 (47943) */ + 3347, /* BB48 (47944) */ + 3347, /* BB49 (47945) */ + 3347, /* BB4A (47946) */ + 3347, /* BB4B (47947) */ + 3347, /* BB4C (47948) */ + 3347, /* BB4D (47949) */ + 3347, /* BB4E (47950) */ + 3347, /* BB4F (47951) */ + 3347, /* BB50 (47952) */ + 3347, /* BB51 (47953) */ + 3347, /* BB52 (47954) */ + 3347, /* BB53 (47955) */ + 3347, /* BB54 (47956) */ + 3347, /* BB55 (47957) */ + 3347, /* BB56 (47958) */ + 3347, /* BB57 (47959) */ + 3347, /* BB58 (47960) */ + 3347, /* BB59 (47961) */ + 3347, /* BB5A (47962) */ + 3347, /* BB5B (47963) */ + 3347, /* BB5C (47964) */ + 3347, /* BB5D (47965) */ + 3347, /* BB5E (47966) */ + 3347, /* BB5F (47967) */ + 3347, /* BB60 (47968) */ + 3347, /* BB61 (47969) */ + 3347, /* BB62 (47970) */ + 3347, /* BB63 (47971) */ + 3347, /* BB64 (47972) */ + 3347, /* BB65 (47973) */ + 3347, /* BB66 (47974) */ + 3347, /* BB67 (47975) */ + 3347, /* BB68 (47976) */ + 3347, /* BB69 (47977) */ + 3347, /* BB6A (47978) */ + 3347, /* BB6B (47979) */ + 3347, /* BB6C (47980) */ + 3347, /* BB6D (47981) */ + 3347, /* BB6E (47982) */ + 3347, /* BB6F (47983) */ + 3347, /* BB70 (47984) */ + 3347, /* BB71 (47985) */ + 3347, /* BB72 (47986) */ + 3347, /* BB73 (47987) */ + 3347, /* BB74 (47988) */ + 3347, /* BB75 (47989) */ + 3347, /* BB76 (47990) */ + 3347, /* BB77 (47991) */ + 3347, /* BB78 (47992) */ + 3347, /* BB79 (47993) */ + 3347, /* BB7A (47994) */ + 3347, /* BB7B (47995) */ + 3347, /* BB7C (47996) */ + 3347, /* BB7D (47997) */ + 3347, /* BB7E (47998) */ + 3347, /* BB7F (47999) */ + 3347, /* BB80 (48000) */ + 3347, /* BB81 (48001) */ + 3347, /* BB82 (48002) */ + 3347, /* BB83 (48003) */ + 3347, /* BB84 (48004) */ + 3347, /* BB85 (48005) */ + 3347, /* BB86 (48006) */ + 3347, /* BB87 (48007) */ + 3347, /* BB88 (48008) */ + 3347, /* BB89 (48009) */ + 3347, /* BB8A (48010) */ + 3347, /* BB8B (48011) */ + 3347, /* BB8C (48012) */ + 3347, /* BB8D (48013) */ + 3347, /* BB8E (48014) */ + 3347, /* BB8F (48015) */ + 3347, /* BB90 (48016) */ + 3347, /* BB91 (48017) */ + 3347, /* BB92 (48018) */ + 3347, /* BB93 (48019) */ + 3347, /* BB94 (48020) */ + 3347, /* BB95 (48021) */ + 3347, /* BB96 (48022) */ + 3347, /* BB97 (48023) */ + 3347, /* BB98 (48024) */ + 3347, /* BB99 (48025) */ + 3347, /* BB9A (48026) */ + 3347, /* BB9B (48027) */ + 3347, /* BB9C (48028) */ + 3347, /* BB9D (48029) */ + 3347, /* BB9E (48030) */ + 3347, /* BB9F (48031) */ + 3347, /* BBA0 (48032) */ + 3347, /* BBA1 (48033) */ + 3347, /* BBA2 (48034) */ + 3347, /* BBA3 (48035) */ + 3347, /* BBA4 (48036) */ + 3347, /* BBA5 (48037) */ + 3347, /* BBA6 (48038) */ + 3347, /* BBA7 (48039) */ + 3347, /* BBA8 (48040) */ + 3347, /* BBA9 (48041) */ + 3347, /* BBAA (48042) */ + 3347, /* BBAB (48043) */ + 3347, /* BBAC (48044) */ + 3347, /* BBAD (48045) */ + 3347, /* BBAE (48046) */ + 3347, /* BBAF (48047) */ + 3347, /* BBB0 (48048) */ + 3347, /* BBB1 (48049) */ + 3347, /* BBB2 (48050) */ + 3347, /* BBB3 (48051) */ + 3347, /* BBB4 (48052) */ + 3347, /* BBB5 (48053) */ + 3347, /* BBB6 (48054) */ + 3347, /* BBB7 (48055) */ + 3347, /* BBB8 (48056) */ + 3347, /* BBB9 (48057) */ + 3347, /* BBBA (48058) */ + 3347, /* BBBB (48059) */ + 3347, /* BBBC (48060) */ + 3347, /* BBBD (48061) */ + 3347, /* BBBE (48062) */ + 3347, /* BBBF (48063) */ + 3347, /* BBC0 (48064) */ + 3347, /* BBC1 (48065) */ + 3347, /* BBC2 (48066) */ + 3347, /* BBC3 (48067) */ + 3347, /* BBC4 (48068) */ + 3347, /* BBC5 (48069) */ + 3347, /* BBC6 (48070) */ + 3347, /* BBC7 (48071) */ + 3347, /* BBC8 (48072) */ + 3347, /* BBC9 (48073) */ + 3347, /* BBCA (48074) */ + 3347, /* BBCB (48075) */ + 3347, /* BBCC (48076) */ + 3347, /* BBCD (48077) */ + 3347, /* BBCE (48078) */ + 3347, /* BBCF (48079) */ + 3347, /* BBD0 (48080) */ + 3347, /* BBD1 (48081) */ + 3347, /* BBD2 (48082) */ + 3347, /* BBD3 (48083) */ + 3347, /* BBD4 (48084) */ + 3347, /* BBD5 (48085) */ + 3347, /* BBD6 (48086) */ + 3347, /* BBD7 (48087) */ + 3347, /* BBD8 (48088) */ + 3347, /* BBD9 (48089) */ + 3347, /* BBDA (48090) */ + 3347, /* BBDB (48091) */ + 3347, /* BBDC (48092) */ + 3347, /* BBDD (48093) */ + 3347, /* BBDE (48094) */ + 3347, /* BBDF (48095) */ + 3347, /* BBE0 (48096) */ + 3347, /* BBE1 (48097) */ + 3347, /* BBE2 (48098) */ + 3347, /* BBE3 (48099) */ + 3347, /* BBE4 (48100) */ + 3347, /* BBE5 (48101) */ + 3347, /* BBE6 (48102) */ + 3347, /* BBE7 (48103) */ + 3347, /* BBE8 (48104) */ + 3347, /* BBE9 (48105) */ + 3347, /* BBEA (48106) */ + 3347, /* BBEB (48107) */ + 3347, /* BBEC (48108) */ + 3347, /* BBED (48109) */ + 3347, /* BBEE (48110) */ + 3347, /* BBEF (48111) */ + 3347, /* BBF0 (48112) */ + 3347, /* BBF1 (48113) */ + 3347, /* BBF2 (48114) */ + 3347, /* BBF3 (48115) */ + 3347, /* BBF4 (48116) */ + 3347, /* BBF5 (48117) */ + 3347, /* BBF6 (48118) */ + 3347, /* BBF7 (48119) */ + 3347, /* BBF8 (48120) */ + 3347, /* BBF9 (48121) */ + 3347, /* BBFA (48122) */ + 3347, /* BBFB (48123) */ + 3347, /* BBFC (48124) */ + 3347, /* BBFD (48125) */ + 3347, /* BBFE (48126) */ + 3347, /* BBFF (48127) */ + 3347, /* BC00 (48128) */ + 3347, /* BC01 (48129) */ + 3347, /* BC02 (48130) */ + 3347, /* BC03 (48131) */ + 3347, /* BC04 (48132) */ + 3347, /* BC05 (48133) */ + 3347, /* BC06 (48134) */ + 3347, /* BC07 (48135) */ + 3347, /* BC08 (48136) */ + 3347, /* BC09 (48137) */ + 3347, /* BC0A (48138) */ + 3347, /* BC0B (48139) */ + 3347, /* BC0C (48140) */ + 3347, /* BC0D (48141) */ + 3347, /* BC0E (48142) */ + 3347, /* BC0F (48143) */ + 3347, /* BC10 (48144) */ + 3347, /* BC11 (48145) */ + 3347, /* BC12 (48146) */ + 3347, /* BC13 (48147) */ + 3347, /* BC14 (48148) */ + 3347, /* BC15 (48149) */ + 3347, /* BC16 (48150) */ + 3347, /* BC17 (48151) */ + 3347, /* BC18 (48152) */ + 3347, /* BC19 (48153) */ + 3347, /* BC1A (48154) */ + 3347, /* BC1B (48155) */ + 3347, /* BC1C (48156) */ + 3347, /* BC1D (48157) */ + 3347, /* BC1E (48158) */ + 3347, /* BC1F (48159) */ + 3347, /* BC20 (48160) */ + 3347, /* BC21 (48161) */ + 3347, /* BC22 (48162) */ + 3347, /* BC23 (48163) */ + 3347, /* BC24 (48164) */ + 3347, /* BC25 (48165) */ + 3347, /* BC26 (48166) */ + 3347, /* BC27 (48167) */ + 3347, /* BC28 (48168) */ + 3347, /* BC29 (48169) */ + 3347, /* BC2A (48170) */ + 3347, /* BC2B (48171) */ + 3347, /* BC2C (48172) */ + 3347, /* BC2D (48173) */ + 3347, /* BC2E (48174) */ + 3347, /* BC2F (48175) */ + 3347, /* BC30 (48176) */ + 3347, /* BC31 (48177) */ + 3347, /* BC32 (48178) */ + 3347, /* BC33 (48179) */ + 3347, /* BC34 (48180) */ + 3347, /* BC35 (48181) */ + 3347, /* BC36 (48182) */ + 3347, /* BC37 (48183) */ + 3347, /* BC38 (48184) */ + 3347, /* BC39 (48185) */ + 3347, /* BC3A (48186) */ + 3347, /* BC3B (48187) */ + 3347, /* BC3C (48188) */ + 3347, /* BC3D (48189) */ + 3347, /* BC3E (48190) */ + 3347, /* BC3F (48191) */ + 3347, /* BC40 (48192) */ + 3347, /* BC41 (48193) */ + 3347, /* BC42 (48194) */ + 3347, /* BC43 (48195) */ + 3347, /* BC44 (48196) */ + 3347, /* BC45 (48197) */ + 3347, /* BC46 (48198) */ + 3347, /* BC47 (48199) */ + 3347, /* BC48 (48200) */ + 3347, /* BC49 (48201) */ + 3347, /* BC4A (48202) */ + 3347, /* BC4B (48203) */ + 3347, /* BC4C (48204) */ + 3347, /* BC4D (48205) */ + 3347, /* BC4E (48206) */ + 3347, /* BC4F (48207) */ + 3347, /* BC50 (48208) */ + 3347, /* BC51 (48209) */ + 3347, /* BC52 (48210) */ + 3347, /* BC53 (48211) */ + 3347, /* BC54 (48212) */ + 3347, /* BC55 (48213) */ + 3347, /* BC56 (48214) */ + 3347, /* BC57 (48215) */ + 3347, /* BC58 (48216) */ + 3347, /* BC59 (48217) */ + 3347, /* BC5A (48218) */ + 3347, /* BC5B (48219) */ + 3347, /* BC5C (48220) */ + 3347, /* BC5D (48221) */ + 3347, /* BC5E (48222) */ + 3347, /* BC5F (48223) */ + 3347, /* BC60 (48224) */ + 3347, /* BC61 (48225) */ + 3347, /* BC62 (48226) */ + 3347, /* BC63 (48227) */ + 3347, /* BC64 (48228) */ + 3347, /* BC65 (48229) */ + 3347, /* BC66 (48230) */ + 3347, /* BC67 (48231) */ + 3347, /* BC68 (48232) */ + 3347, /* BC69 (48233) */ + 3347, /* BC6A (48234) */ + 3347, /* BC6B (48235) */ + 3347, /* BC6C (48236) */ + 3347, /* BC6D (48237) */ + 3347, /* BC6E (48238) */ + 3347, /* BC6F (48239) */ + 3347, /* BC70 (48240) */ + 3347, /* BC71 (48241) */ + 3347, /* BC72 (48242) */ + 3347, /* BC73 (48243) */ + 3347, /* BC74 (48244) */ + 3347, /* BC75 (48245) */ + 3347, /* BC76 (48246) */ + 3347, /* BC77 (48247) */ + 3347, /* BC78 (48248) */ + 3347, /* BC79 (48249) */ + 3347, /* BC7A (48250) */ + 3347, /* BC7B (48251) */ + 3347, /* BC7C (48252) */ + 3347, /* BC7D (48253) */ + 3347, /* BC7E (48254) */ + 3347, /* BC7F (48255) */ + 3347, /* BC80 (48256) */ + 3347, /* BC81 (48257) */ + 3347, /* BC82 (48258) */ + 3347, /* BC83 (48259) */ + 3347, /* BC84 (48260) */ + 3347, /* BC85 (48261) */ + 3347, /* BC86 (48262) */ + 3347, /* BC87 (48263) */ + 3347, /* BC88 (48264) */ + 3347, /* BC89 (48265) */ + 3347, /* BC8A (48266) */ + 3347, /* BC8B (48267) */ + 3347, /* BC8C (48268) */ + 3347, /* BC8D (48269) */ + 3347, /* BC8E (48270) */ + 3347, /* BC8F (48271) */ + 3347, /* BC90 (48272) */ + 3347, /* BC91 (48273) */ + 3347, /* BC92 (48274) */ + 3347, /* BC93 (48275) */ + 3347, /* BC94 (48276) */ + 3347, /* BC95 (48277) */ + 3347, /* BC96 (48278) */ + 3347, /* BC97 (48279) */ + 3347, /* BC98 (48280) */ + 3347, /* BC99 (48281) */ + 3347, /* BC9A (48282) */ + 3347, /* BC9B (48283) */ + 3347, /* BC9C (48284) */ + 3347, /* BC9D (48285) */ + 3347, /* BC9E (48286) */ + 3347, /* BC9F (48287) */ + 3347, /* BCA0 (48288) */ + 3347, /* BCA1 (48289) */ + 3347, /* BCA2 (48290) */ + 3347, /* BCA3 (48291) */ + 3347, /* BCA4 (48292) */ + 3347, /* BCA5 (48293) */ + 3347, /* BCA6 (48294) */ + 3347, /* BCA7 (48295) */ + 3347, /* BCA8 (48296) */ + 3347, /* BCA9 (48297) */ + 3347, /* BCAA (48298) */ + 3347, /* BCAB (48299) */ + 3347, /* BCAC (48300) */ + 3347, /* BCAD (48301) */ + 3347, /* BCAE (48302) */ + 3347, /* BCAF (48303) */ + 3347, /* BCB0 (48304) */ + 3347, /* BCB1 (48305) */ + 3347, /* BCB2 (48306) */ + 3347, /* BCB3 (48307) */ + 3347, /* BCB4 (48308) */ + 3347, /* BCB5 (48309) */ + 3347, /* BCB6 (48310) */ + 3347, /* BCB7 (48311) */ + 3347, /* BCB8 (48312) */ + 3347, /* BCB9 (48313) */ + 3347, /* BCBA (48314) */ + 3347, /* BCBB (48315) */ + 3347, /* BCBC (48316) */ + 3347, /* BCBD (48317) */ + 3347, /* BCBE (48318) */ + 3347, /* BCBF (48319) */ + 3347, /* BCC0 (48320) */ + 3347, /* BCC1 (48321) */ + 3347, /* BCC2 (48322) */ + 3347, /* BCC3 (48323) */ + 3347, /* BCC4 (48324) */ + 3347, /* BCC5 (48325) */ + 3347, /* BCC6 (48326) */ + 3347, /* BCC7 (48327) */ + 3347, /* BCC8 (48328) */ + 3347, /* BCC9 (48329) */ + 3347, /* BCCA (48330) */ + 3347, /* BCCB (48331) */ + 3347, /* BCCC (48332) */ + 3347, /* BCCD (48333) */ + 3347, /* BCCE (48334) */ + 3347, /* BCCF (48335) */ + 3347, /* BCD0 (48336) */ + 3347, /* BCD1 (48337) */ + 3347, /* BCD2 (48338) */ + 3347, /* BCD3 (48339) */ + 3347, /* BCD4 (48340) */ + 3347, /* BCD5 (48341) */ + 3347, /* BCD6 (48342) */ + 3347, /* BCD7 (48343) */ + 3347, /* BCD8 (48344) */ + 3347, /* BCD9 (48345) */ + 3347, /* BCDA (48346) */ + 3347, /* BCDB (48347) */ + 3347, /* BCDC (48348) */ + 3347, /* BCDD (48349) */ + 3347, /* BCDE (48350) */ + 3347, /* BCDF (48351) */ + 3347, /* BCE0 (48352) */ + 3347, /* BCE1 (48353) */ + 3347, /* BCE2 (48354) */ + 3347, /* BCE3 (48355) */ + 3347, /* BCE4 (48356) */ + 3347, /* BCE5 (48357) */ + 3347, /* BCE6 (48358) */ + 3347, /* BCE7 (48359) */ + 3347, /* BCE8 (48360) */ + 3347, /* BCE9 (48361) */ + 3347, /* BCEA (48362) */ + 3347, /* BCEB (48363) */ + 3347, /* BCEC (48364) */ + 3347, /* BCED (48365) */ + 3347, /* BCEE (48366) */ + 3347, /* BCEF (48367) */ + 3347, /* BCF0 (48368) */ + 3347, /* BCF1 (48369) */ + 3347, /* BCF2 (48370) */ + 3347, /* BCF3 (48371) */ + 3347, /* BCF4 (48372) */ + 3347, /* BCF5 (48373) */ + 3347, /* BCF6 (48374) */ + 3347, /* BCF7 (48375) */ + 3347, /* BCF8 (48376) */ + 3347, /* BCF9 (48377) */ + 3347, /* BCFA (48378) */ + 3347, /* BCFB (48379) */ + 3347, /* BCFC (48380) */ + 3347, /* BCFD (48381) */ + 3347, /* BCFE (48382) */ + 3347, /* BCFF (48383) */ + 3347, /* BD00 (48384) */ + 3347, /* BD01 (48385) */ + 3347, /* BD02 (48386) */ + 3347, /* BD03 (48387) */ + 3347, /* BD04 (48388) */ + 3347, /* BD05 (48389) */ + 3347, /* BD06 (48390) */ + 3347, /* BD07 (48391) */ + 3347, /* BD08 (48392) */ + 3347, /* BD09 (48393) */ + 3347, /* BD0A (48394) */ + 3347, /* BD0B (48395) */ + 3347, /* BD0C (48396) */ + 3347, /* BD0D (48397) */ + 3347, /* BD0E (48398) */ + 3347, /* BD0F (48399) */ + 3347, /* BD10 (48400) */ + 3347, /* BD11 (48401) */ + 3347, /* BD12 (48402) */ + 3347, /* BD13 (48403) */ + 3347, /* BD14 (48404) */ + 3347, /* BD15 (48405) */ + 3347, /* BD16 (48406) */ + 3347, /* BD17 (48407) */ + 3347, /* BD18 (48408) */ + 3347, /* BD19 (48409) */ + 3347, /* BD1A (48410) */ + 3347, /* BD1B (48411) */ + 3347, /* BD1C (48412) */ + 3347, /* BD1D (48413) */ + 3347, /* BD1E (48414) */ + 3347, /* BD1F (48415) */ + 3347, /* BD20 (48416) */ + 3347, /* BD21 (48417) */ + 3347, /* BD22 (48418) */ + 3347, /* BD23 (48419) */ + 3347, /* BD24 (48420) */ + 3347, /* BD25 (48421) */ + 3347, /* BD26 (48422) */ + 3347, /* BD27 (48423) */ + 3347, /* BD28 (48424) */ + 3347, /* BD29 (48425) */ + 3347, /* BD2A (48426) */ + 3347, /* BD2B (48427) */ + 3347, /* BD2C (48428) */ + 3347, /* BD2D (48429) */ + 3347, /* BD2E (48430) */ + 3347, /* BD2F (48431) */ + 3347, /* BD30 (48432) */ + 3347, /* BD31 (48433) */ + 3347, /* BD32 (48434) */ + 3347, /* BD33 (48435) */ + 3347, /* BD34 (48436) */ + 3347, /* BD35 (48437) */ + 3347, /* BD36 (48438) */ + 3347, /* BD37 (48439) */ + 3347, /* BD38 (48440) */ + 3347, /* BD39 (48441) */ + 3347, /* BD3A (48442) */ + 3347, /* BD3B (48443) */ + 3347, /* BD3C (48444) */ + 3347, /* BD3D (48445) */ + 3347, /* BD3E (48446) */ + 3347, /* BD3F (48447) */ + 3347, /* BD40 (48448) */ + 3347, /* BD41 (48449) */ + 3347, /* BD42 (48450) */ + 3347, /* BD43 (48451) */ + 3347, /* BD44 (48452) */ + 3347, /* BD45 (48453) */ + 3347, /* BD46 (48454) */ + 3347, /* BD47 (48455) */ + 3347, /* BD48 (48456) */ + 3347, /* BD49 (48457) */ + 3347, /* BD4A (48458) */ + 3347, /* BD4B (48459) */ + 3347, /* BD4C (48460) */ + 3347, /* BD4D (48461) */ + 3347, /* BD4E (48462) */ + 3347, /* BD4F (48463) */ + 3347, /* BD50 (48464) */ + 3347, /* BD51 (48465) */ + 3347, /* BD52 (48466) */ + 3347, /* BD53 (48467) */ + 3347, /* BD54 (48468) */ + 3347, /* BD55 (48469) */ + 3347, /* BD56 (48470) */ + 3347, /* BD57 (48471) */ + 3347, /* BD58 (48472) */ + 3347, /* BD59 (48473) */ + 3347, /* BD5A (48474) */ + 3347, /* BD5B (48475) */ + 3347, /* BD5C (48476) */ + 3347, /* BD5D (48477) */ + 3347, /* BD5E (48478) */ + 3347, /* BD5F (48479) */ + 3347, /* BD60 (48480) */ + 3347, /* BD61 (48481) */ + 3347, /* BD62 (48482) */ + 3347, /* BD63 (48483) */ + 3347, /* BD64 (48484) */ + 3347, /* BD65 (48485) */ + 3347, /* BD66 (48486) */ + 3347, /* BD67 (48487) */ + 3347, /* BD68 (48488) */ + 3347, /* BD69 (48489) */ + 3347, /* BD6A (48490) */ + 3347, /* BD6B (48491) */ + 3347, /* BD6C (48492) */ + 3347, /* BD6D (48493) */ + 3347, /* BD6E (48494) */ + 3347, /* BD6F (48495) */ + 3347, /* BD70 (48496) */ + 3347, /* BD71 (48497) */ + 3347, /* BD72 (48498) */ + 3347, /* BD73 (48499) */ + 3347, /* BD74 (48500) */ + 3347, /* BD75 (48501) */ + 3347, /* BD76 (48502) */ + 3347, /* BD77 (48503) */ + 3347, /* BD78 (48504) */ + 3347, /* BD79 (48505) */ + 3347, /* BD7A (48506) */ + 3347, /* BD7B (48507) */ + 3347, /* BD7C (48508) */ + 3347, /* BD7D (48509) */ + 3347, /* BD7E (48510) */ + 3347, /* BD7F (48511) */ + 3347, /* BD80 (48512) */ + 3347, /* BD81 (48513) */ + 3347, /* BD82 (48514) */ + 3347, /* BD83 (48515) */ + 3347, /* BD84 (48516) */ + 3347, /* BD85 (48517) */ + 3347, /* BD86 (48518) */ + 3347, /* BD87 (48519) */ + 3347, /* BD88 (48520) */ + 3347, /* BD89 (48521) */ + 3347, /* BD8A (48522) */ + 3347, /* BD8B (48523) */ + 3347, /* BD8C (48524) */ + 3347, /* BD8D (48525) */ + 3347, /* BD8E (48526) */ + 3347, /* BD8F (48527) */ + 3347, /* BD90 (48528) */ + 3347, /* BD91 (48529) */ + 3347, /* BD92 (48530) */ + 3347, /* BD93 (48531) */ + 3347, /* BD94 (48532) */ + 3347, /* BD95 (48533) */ + 3347, /* BD96 (48534) */ + 3347, /* BD97 (48535) */ + 3347, /* BD98 (48536) */ + 3347, /* BD99 (48537) */ + 3347, /* BD9A (48538) */ + 3347, /* BD9B (48539) */ + 3347, /* BD9C (48540) */ + 3347, /* BD9D (48541) */ + 3347, /* BD9E (48542) */ + 3347, /* BD9F (48543) */ + 3347, /* BDA0 (48544) */ + 3347, /* BDA1 (48545) */ + 3347, /* BDA2 (48546) */ + 3347, /* BDA3 (48547) */ + 3347, /* BDA4 (48548) */ + 3347, /* BDA5 (48549) */ + 3347, /* BDA6 (48550) */ + 3347, /* BDA7 (48551) */ + 3347, /* BDA8 (48552) */ + 3347, /* BDA9 (48553) */ + 3347, /* BDAA (48554) */ + 3347, /* BDAB (48555) */ + 3347, /* BDAC (48556) */ + 3347, /* BDAD (48557) */ + 3347, /* BDAE (48558) */ + 3347, /* BDAF (48559) */ + 3347, /* BDB0 (48560) */ + 3347, /* BDB1 (48561) */ + 3347, /* BDB2 (48562) */ + 3347, /* BDB3 (48563) */ + 3347, /* BDB4 (48564) */ + 3347, /* BDB5 (48565) */ + 3347, /* BDB6 (48566) */ + 3347, /* BDB7 (48567) */ + 3347, /* BDB8 (48568) */ + 3347, /* BDB9 (48569) */ + 3347, /* BDBA (48570) */ + 3347, /* BDBB (48571) */ + 3347, /* BDBC (48572) */ + 3347, /* BDBD (48573) */ + 3347, /* BDBE (48574) */ + 3347, /* BDBF (48575) */ + 3347, /* BDC0 (48576) */ + 3347, /* BDC1 (48577) */ + 3347, /* BDC2 (48578) */ + 3347, /* BDC3 (48579) */ + 3347, /* BDC4 (48580) */ + 3347, /* BDC5 (48581) */ + 3347, /* BDC6 (48582) */ + 3347, /* BDC7 (48583) */ + 3347, /* BDC8 (48584) */ + 3347, /* BDC9 (48585) */ + 3347, /* BDCA (48586) */ + 3347, /* BDCB (48587) */ + 3347, /* BDCC (48588) */ + 3347, /* BDCD (48589) */ + 3347, /* BDCE (48590) */ + 3347, /* BDCF (48591) */ + 3347, /* BDD0 (48592) */ + 3347, /* BDD1 (48593) */ + 3347, /* BDD2 (48594) */ + 3347, /* BDD3 (48595) */ + 3347, /* BDD4 (48596) */ + 3347, /* BDD5 (48597) */ + 3347, /* BDD6 (48598) */ + 3347, /* BDD7 (48599) */ + 3347, /* BDD8 (48600) */ + 3347, /* BDD9 (48601) */ + 3347, /* BDDA (48602) */ + 3347, /* BDDB (48603) */ + 3347, /* BDDC (48604) */ + 3347, /* BDDD (48605) */ + 3347, /* BDDE (48606) */ + 3347, /* BDDF (48607) */ + 3347, /* BDE0 (48608) */ + 3347, /* BDE1 (48609) */ + 3347, /* BDE2 (48610) */ + 3347, /* BDE3 (48611) */ + 3347, /* BDE4 (48612) */ + 3347, /* BDE5 (48613) */ + 3347, /* BDE6 (48614) */ + 3347, /* BDE7 (48615) */ + 3347, /* BDE8 (48616) */ + 3347, /* BDE9 (48617) */ + 3347, /* BDEA (48618) */ + 3347, /* BDEB (48619) */ + 3347, /* BDEC (48620) */ + 3347, /* BDED (48621) */ + 3347, /* BDEE (48622) */ + 3347, /* BDEF (48623) */ + 3347, /* BDF0 (48624) */ + 3347, /* BDF1 (48625) */ + 3347, /* BDF2 (48626) */ + 3347, /* BDF3 (48627) */ + 3347, /* BDF4 (48628) */ + 3347, /* BDF5 (48629) */ + 3347, /* BDF6 (48630) */ + 3347, /* BDF7 (48631) */ + 3347, /* BDF8 (48632) */ + 3347, /* BDF9 (48633) */ + 3347, /* BDFA (48634) */ + 3347, /* BDFB (48635) */ + 3347, /* BDFC (48636) */ + 3347, /* BDFD (48637) */ + 3347, /* BDFE (48638) */ + 3347, /* BDFF (48639) */ + 3347, /* BE00 (48640) */ + 3347, /* BE01 (48641) */ + 3347, /* BE02 (48642) */ + 3347, /* BE03 (48643) */ + 3347, /* BE04 (48644) */ + 3347, /* BE05 (48645) */ + 3347, /* BE06 (48646) */ + 3347, /* BE07 (48647) */ + 3347, /* BE08 (48648) */ + 3347, /* BE09 (48649) */ + 3347, /* BE0A (48650) */ + 3347, /* BE0B (48651) */ + 3347, /* BE0C (48652) */ + 3347, /* BE0D (48653) */ + 3347, /* BE0E (48654) */ + 3347, /* BE0F (48655) */ + 3347, /* BE10 (48656) */ + 3347, /* BE11 (48657) */ + 3347, /* BE12 (48658) */ + 3347, /* BE13 (48659) */ + 3347, /* BE14 (48660) */ + 3347, /* BE15 (48661) */ + 3347, /* BE16 (48662) */ + 3347, /* BE17 (48663) */ + 3347, /* BE18 (48664) */ + 3347, /* BE19 (48665) */ + 3347, /* BE1A (48666) */ + 3347, /* BE1B (48667) */ + 3347, /* BE1C (48668) */ + 3347, /* BE1D (48669) */ + 3347, /* BE1E (48670) */ + 3347, /* BE1F (48671) */ + 3347, /* BE20 (48672) */ + 3347, /* BE21 (48673) */ + 3347, /* BE22 (48674) */ + 3347, /* BE23 (48675) */ + 3347, /* BE24 (48676) */ + 3347, /* BE25 (48677) */ + 3347, /* BE26 (48678) */ + 3347, /* BE27 (48679) */ + 3347, /* BE28 (48680) */ + 3347, /* BE29 (48681) */ + 3347, /* BE2A (48682) */ + 3347, /* BE2B (48683) */ + 3347, /* BE2C (48684) */ + 3347, /* BE2D (48685) */ + 3347, /* BE2E (48686) */ + 3347, /* BE2F (48687) */ + 3347, /* BE30 (48688) */ + 3347, /* BE31 (48689) */ + 3347, /* BE32 (48690) */ + 3347, /* BE33 (48691) */ + 3347, /* BE34 (48692) */ + 3347, /* BE35 (48693) */ + 3347, /* BE36 (48694) */ + 3347, /* BE37 (48695) */ + 3347, /* BE38 (48696) */ + 3347, /* BE39 (48697) */ + 3347, /* BE3A (48698) */ + 3347, /* BE3B (48699) */ + 3347, /* BE3C (48700) */ + 3347, /* BE3D (48701) */ + 3347, /* BE3E (48702) */ + 3347, /* BE3F (48703) */ + 3347, /* BE40 (48704) */ + 3347, /* BE41 (48705) */ + 3347, /* BE42 (48706) */ + 3347, /* BE43 (48707) */ + 3347, /* BE44 (48708) */ + 3347, /* BE45 (48709) */ + 3347, /* BE46 (48710) */ + 3347, /* BE47 (48711) */ + 3347, /* BE48 (48712) */ + 3347, /* BE49 (48713) */ + 3347, /* BE4A (48714) */ + 3347, /* BE4B (48715) */ + 3347, /* BE4C (48716) */ + 3347, /* BE4D (48717) */ + 3347, /* BE4E (48718) */ + 3347, /* BE4F (48719) */ + 3347, /* BE50 (48720) */ + 3347, /* BE51 (48721) */ + 3347, /* BE52 (48722) */ + 3347, /* BE53 (48723) */ + 3347, /* BE54 (48724) */ + 3347, /* BE55 (48725) */ + 3347, /* BE56 (48726) */ + 3347, /* BE57 (48727) */ + 3347, /* BE58 (48728) */ + 3347, /* BE59 (48729) */ + 3347, /* BE5A (48730) */ + 3347, /* BE5B (48731) */ + 3347, /* BE5C (48732) */ + 3347, /* BE5D (48733) */ + 3347, /* BE5E (48734) */ + 3347, /* BE5F (48735) */ + 3347, /* BE60 (48736) */ + 3347, /* BE61 (48737) */ + 3347, /* BE62 (48738) */ + 3347, /* BE63 (48739) */ + 3347, /* BE64 (48740) */ + 3347, /* BE65 (48741) */ + 3347, /* BE66 (48742) */ + 3347, /* BE67 (48743) */ + 3347, /* BE68 (48744) */ + 3347, /* BE69 (48745) */ + 3347, /* BE6A (48746) */ + 3347, /* BE6B (48747) */ + 3347, /* BE6C (48748) */ + 3347, /* BE6D (48749) */ + 3347, /* BE6E (48750) */ + 3347, /* BE6F (48751) */ + 3347, /* BE70 (48752) */ + 3347, /* BE71 (48753) */ + 3347, /* BE72 (48754) */ + 3347, /* BE73 (48755) */ + 3347, /* BE74 (48756) */ + 3347, /* BE75 (48757) */ + 3347, /* BE76 (48758) */ + 3347, /* BE77 (48759) */ + 3347, /* BE78 (48760) */ + 3347, /* BE79 (48761) */ + 3347, /* BE7A (48762) */ + 3347, /* BE7B (48763) */ + 3347, /* BE7C (48764) */ + 3347, /* BE7D (48765) */ + 3347, /* BE7E (48766) */ + 3347, /* BE7F (48767) */ + 3347, /* BE80 (48768) */ + 3347, /* BE81 (48769) */ + 3347, /* BE82 (48770) */ + 3347, /* BE83 (48771) */ + 3347, /* BE84 (48772) */ + 3347, /* BE85 (48773) */ + 3347, /* BE86 (48774) */ + 3347, /* BE87 (48775) */ + 3347, /* BE88 (48776) */ + 3347, /* BE89 (48777) */ + 3347, /* BE8A (48778) */ + 3347, /* BE8B (48779) */ + 3347, /* BE8C (48780) */ + 3347, /* BE8D (48781) */ + 3347, /* BE8E (48782) */ + 3347, /* BE8F (48783) */ + 3347, /* BE90 (48784) */ + 3347, /* BE91 (48785) */ + 3347, /* BE92 (48786) */ + 3347, /* BE93 (48787) */ + 3347, /* BE94 (48788) */ + 3347, /* BE95 (48789) */ + 3347, /* BE96 (48790) */ + 3347, /* BE97 (48791) */ + 3347, /* BE98 (48792) */ + 3347, /* BE99 (48793) */ + 3347, /* BE9A (48794) */ + 3347, /* BE9B (48795) */ + 3347, /* BE9C (48796) */ + 3347, /* BE9D (48797) */ + 3347, /* BE9E (48798) */ + 3347, /* BE9F (48799) */ + 3347, /* BEA0 (48800) */ + 3347, /* BEA1 (48801) */ + 3347, /* BEA2 (48802) */ + 3347, /* BEA3 (48803) */ + 3347, /* BEA4 (48804) */ + 3347, /* BEA5 (48805) */ + 3347, /* BEA6 (48806) */ + 3347, /* BEA7 (48807) */ + 3347, /* BEA8 (48808) */ + 3347, /* BEA9 (48809) */ + 3347, /* BEAA (48810) */ + 3347, /* BEAB (48811) */ + 3347, /* BEAC (48812) */ + 3347, /* BEAD (48813) */ + 3347, /* BEAE (48814) */ + 3347, /* BEAF (48815) */ + 3347, /* BEB0 (48816) */ + 3347, /* BEB1 (48817) */ + 3347, /* BEB2 (48818) */ + 3347, /* BEB3 (48819) */ + 3347, /* BEB4 (48820) */ + 3347, /* BEB5 (48821) */ + 3347, /* BEB6 (48822) */ + 3347, /* BEB7 (48823) */ + 3347, /* BEB8 (48824) */ + 3347, /* BEB9 (48825) */ + 3347, /* BEBA (48826) */ + 3347, /* BEBB (48827) */ + 3347, /* BEBC (48828) */ + 3347, /* BEBD (48829) */ + 3347, /* BEBE (48830) */ + 3347, /* BEBF (48831) */ + 3347, /* BEC0 (48832) */ + 3347, /* BEC1 (48833) */ + 3347, /* BEC2 (48834) */ + 3347, /* BEC3 (48835) */ + 3347, /* BEC4 (48836) */ + 3347, /* BEC5 (48837) */ + 3347, /* BEC6 (48838) */ + 3347, /* BEC7 (48839) */ + 3347, /* BEC8 (48840) */ + 3347, /* BEC9 (48841) */ + 3347, /* BECA (48842) */ + 3347, /* BECB (48843) */ + 3347, /* BECC (48844) */ + 3347, /* BECD (48845) */ + 3347, /* BECE (48846) */ + 3347, /* BECF (48847) */ + 3347, /* BED0 (48848) */ + 3347, /* BED1 (48849) */ + 3347, /* BED2 (48850) */ + 3347, /* BED3 (48851) */ + 3347, /* BED4 (48852) */ + 3347, /* BED5 (48853) */ + 3347, /* BED6 (48854) */ + 3347, /* BED7 (48855) */ + 3347, /* BED8 (48856) */ + 3347, /* BED9 (48857) */ + 3347, /* BEDA (48858) */ + 3347, /* BEDB (48859) */ + 3347, /* BEDC (48860) */ + 3347, /* BEDD (48861) */ + 3347, /* BEDE (48862) */ + 3347, /* BEDF (48863) */ + 3347, /* BEE0 (48864) */ + 3347, /* BEE1 (48865) */ + 3347, /* BEE2 (48866) */ + 3347, /* BEE3 (48867) */ + 3347, /* BEE4 (48868) */ + 3347, /* BEE5 (48869) */ + 3347, /* BEE6 (48870) */ + 3347, /* BEE7 (48871) */ + 3347, /* BEE8 (48872) */ + 3347, /* BEE9 (48873) */ + 3347, /* BEEA (48874) */ + 3347, /* BEEB (48875) */ + 3347, /* BEEC (48876) */ + 3347, /* BEED (48877) */ + 3347, /* BEEE (48878) */ + 3347, /* BEEF (48879) */ + 3347, /* BEF0 (48880) */ + 3347, /* BEF1 (48881) */ + 3347, /* BEF2 (48882) */ + 3347, /* BEF3 (48883) */ + 3347, /* BEF4 (48884) */ + 3347, /* BEF5 (48885) */ + 3347, /* BEF6 (48886) */ + 3347, /* BEF7 (48887) */ + 3347, /* BEF8 (48888) */ + 3347, /* BEF9 (48889) */ + 3347, /* BEFA (48890) */ + 3347, /* BEFB (48891) */ + 3347, /* BEFC (48892) */ + 3347, /* BEFD (48893) */ + 3347, /* BEFE (48894) */ + 3347, /* BEFF (48895) */ + 3347, /* BF00 (48896) */ + 3347, /* BF01 (48897) */ + 3347, /* BF02 (48898) */ + 3347, /* BF03 (48899) */ + 3347, /* BF04 (48900) */ + 3347, /* BF05 (48901) */ + 3347, /* BF06 (48902) */ + 3347, /* BF07 (48903) */ + 3347, /* BF08 (48904) */ + 3347, /* BF09 (48905) */ + 3347, /* BF0A (48906) */ + 3347, /* BF0B (48907) */ + 3347, /* BF0C (48908) */ + 3347, /* BF0D (48909) */ + 3347, /* BF0E (48910) */ + 3347, /* BF0F (48911) */ + 3347, /* BF10 (48912) */ + 3347, /* BF11 (48913) */ + 3347, /* BF12 (48914) */ + 3347, /* BF13 (48915) */ + 3347, /* BF14 (48916) */ + 3347, /* BF15 (48917) */ + 3347, /* BF16 (48918) */ + 3347, /* BF17 (48919) */ + 3347, /* BF18 (48920) */ + 3347, /* BF19 (48921) */ + 3347, /* BF1A (48922) */ + 3347, /* BF1B (48923) */ + 3347, /* BF1C (48924) */ + 3347, /* BF1D (48925) */ + 3347, /* BF1E (48926) */ + 3347, /* BF1F (48927) */ + 3347, /* BF20 (48928) */ + 3347, /* BF21 (48929) */ + 3347, /* BF22 (48930) */ + 3347, /* BF23 (48931) */ + 3347, /* BF24 (48932) */ + 3347, /* BF25 (48933) */ + 3347, /* BF26 (48934) */ + 3347, /* BF27 (48935) */ + 3347, /* BF28 (48936) */ + 3347, /* BF29 (48937) */ + 3347, /* BF2A (48938) */ + 3347, /* BF2B (48939) */ + 3347, /* BF2C (48940) */ + 3347, /* BF2D (48941) */ + 3347, /* BF2E (48942) */ + 3347, /* BF2F (48943) */ + 3347, /* BF30 (48944) */ + 3347, /* BF31 (48945) */ + 3347, /* BF32 (48946) */ + 3347, /* BF33 (48947) */ + 3347, /* BF34 (48948) */ + 3347, /* BF35 (48949) */ + 3347, /* BF36 (48950) */ + 3347, /* BF37 (48951) */ + 3347, /* BF38 (48952) */ + 3347, /* BF39 (48953) */ + 3347, /* BF3A (48954) */ + 3347, /* BF3B (48955) */ + 3347, /* BF3C (48956) */ + 3347, /* BF3D (48957) */ + 3347, /* BF3E (48958) */ + 3347, /* BF3F (48959) */ + 3347, /* BF40 (48960) */ + 3347, /* BF41 (48961) */ + 3347, /* BF42 (48962) */ + 3347, /* BF43 (48963) */ + 3347, /* BF44 (48964) */ + 3347, /* BF45 (48965) */ + 3347, /* BF46 (48966) */ + 3347, /* BF47 (48967) */ + 3347, /* BF48 (48968) */ + 3347, /* BF49 (48969) */ + 3347, /* BF4A (48970) */ + 3347, /* BF4B (48971) */ + 3347, /* BF4C (48972) */ + 3347, /* BF4D (48973) */ + 3347, /* BF4E (48974) */ + 3347, /* BF4F (48975) */ + 3347, /* BF50 (48976) */ + 3347, /* BF51 (48977) */ + 3347, /* BF52 (48978) */ + 3347, /* BF53 (48979) */ + 3347, /* BF54 (48980) */ + 3347, /* BF55 (48981) */ + 3347, /* BF56 (48982) */ + 3347, /* BF57 (48983) */ + 3347, /* BF58 (48984) */ + 3347, /* BF59 (48985) */ + 3347, /* BF5A (48986) */ + 3347, /* BF5B (48987) */ + 3347, /* BF5C (48988) */ + 3347, /* BF5D (48989) */ + 3347, /* BF5E (48990) */ + 3347, /* BF5F (48991) */ + 3347, /* BF60 (48992) */ + 3347, /* BF61 (48993) */ + 3347, /* BF62 (48994) */ + 3347, /* BF63 (48995) */ + 3347, /* BF64 (48996) */ + 3347, /* BF65 (48997) */ + 3347, /* BF66 (48998) */ + 3347, /* BF67 (48999) */ + 3347, /* BF68 (49000) */ + 3347, /* BF69 (49001) */ + 3347, /* BF6A (49002) */ + 3347, /* BF6B (49003) */ + 3347, /* BF6C (49004) */ + 3347, /* BF6D (49005) */ + 3347, /* BF6E (49006) */ + 3347, /* BF6F (49007) */ + 3347, /* BF70 (49008) */ + 3347, /* BF71 (49009) */ + 3347, /* BF72 (49010) */ + 3347, /* BF73 (49011) */ + 3347, /* BF74 (49012) */ + 3347, /* BF75 (49013) */ + 3347, /* BF76 (49014) */ + 3347, /* BF77 (49015) */ + 3347, /* BF78 (49016) */ + 3347, /* BF79 (49017) */ + 3347, /* BF7A (49018) */ + 3347, /* BF7B (49019) */ + 3347, /* BF7C (49020) */ + 3347, /* BF7D (49021) */ + 3347, /* BF7E (49022) */ + 3347, /* BF7F (49023) */ + 3347, /* BF80 (49024) */ + 3347, /* BF81 (49025) */ + 3347, /* BF82 (49026) */ + 3347, /* BF83 (49027) */ + 3347, /* BF84 (49028) */ + 3347, /* BF85 (49029) */ + 3347, /* BF86 (49030) */ + 3347, /* BF87 (49031) */ + 3347, /* BF88 (49032) */ + 3347, /* BF89 (49033) */ + 3347, /* BF8A (49034) */ + 3347, /* BF8B (49035) */ + 3347, /* BF8C (49036) */ + 3347, /* BF8D (49037) */ + 3347, /* BF8E (49038) */ + 3347, /* BF8F (49039) */ + 3347, /* BF90 (49040) */ + 3347, /* BF91 (49041) */ + 3347, /* BF92 (49042) */ + 3347, /* BF93 (49043) */ + 3347, /* BF94 (49044) */ + 3347, /* BF95 (49045) */ + 3347, /* BF96 (49046) */ + 3347, /* BF97 (49047) */ + 3347, /* BF98 (49048) */ + 3347, /* BF99 (49049) */ + 3347, /* BF9A (49050) */ + 3347, /* BF9B (49051) */ + 3347, /* BF9C (49052) */ + 3347, /* BF9D (49053) */ + 3347, /* BF9E (49054) */ + 3347, /* BF9F (49055) */ + 3347, /* BFA0 (49056) */ + 3347, /* BFA1 (49057) */ + 3347, /* BFA2 (49058) */ + 3347, /* BFA3 (49059) */ + 3347, /* BFA4 (49060) */ + 3347, /* BFA5 (49061) */ + 3347, /* BFA6 (49062) */ + 3347, /* BFA7 (49063) */ + 3347, /* BFA8 (49064) */ + 3347, /* BFA9 (49065) */ + 3347, /* BFAA (49066) */ + 3347, /* BFAB (49067) */ + 3347, /* BFAC (49068) */ + 3347, /* BFAD (49069) */ + 3347, /* BFAE (49070) */ + 3347, /* BFAF (49071) */ + 3347, /* BFB0 (49072) */ + 3347, /* BFB1 (49073) */ + 3347, /* BFB2 (49074) */ + 3347, /* BFB3 (49075) */ + 3347, /* BFB4 (49076) */ + 3347, /* BFB5 (49077) */ + 3347, /* BFB6 (49078) */ + 3347, /* BFB7 (49079) */ + 3347, /* BFB8 (49080) */ + 3347, /* BFB9 (49081) */ + 3347, /* BFBA (49082) */ + 3347, /* BFBB (49083) */ + 3347, /* BFBC (49084) */ + 3347, /* BFBD (49085) */ + 3347, /* BFBE (49086) */ + 3347, /* BFBF (49087) */ + 3347, /* BFC0 (49088) */ + 3347, /* BFC1 (49089) */ + 3347, /* BFC2 (49090) */ + 3347, /* BFC3 (49091) */ + 3347, /* BFC4 (49092) */ + 3347, /* BFC5 (49093) */ + 3347, /* BFC6 (49094) */ + 3347, /* BFC7 (49095) */ + 3347, /* BFC8 (49096) */ + 3347, /* BFC9 (49097) */ + 3347, /* BFCA (49098) */ + 3347, /* BFCB (49099) */ + 3347, /* BFCC (49100) */ + 3347, /* BFCD (49101) */ + 3347, /* BFCE (49102) */ + 3347, /* BFCF (49103) */ + 3347, /* BFD0 (49104) */ + 3347, /* BFD1 (49105) */ + 3347, /* BFD2 (49106) */ + 3347, /* BFD3 (49107) */ + 3347, /* BFD4 (49108) */ + 3347, /* BFD5 (49109) */ + 3347, /* BFD6 (49110) */ + 3347, /* BFD7 (49111) */ + 3347, /* BFD8 (49112) */ + 3347, /* BFD9 (49113) */ + 3347, /* BFDA (49114) */ + 3347, /* BFDB (49115) */ + 3347, /* BFDC (49116) */ + 3347, /* BFDD (49117) */ + 3347, /* BFDE (49118) */ + 3347, /* BFDF (49119) */ + 3347, /* BFE0 (49120) */ + 3347, /* BFE1 (49121) */ + 3347, /* BFE2 (49122) */ + 3347, /* BFE3 (49123) */ + 3347, /* BFE4 (49124) */ + 3347, /* BFE5 (49125) */ + 3347, /* BFE6 (49126) */ + 3347, /* BFE7 (49127) */ + 3347, /* BFE8 (49128) */ + 3347, /* BFE9 (49129) */ + 3347, /* BFEA (49130) */ + 3347, /* BFEB (49131) */ + 3347, /* BFEC (49132) */ + 3347, /* BFED (49133) */ + 3347, /* BFEE (49134) */ + 3347, /* BFEF (49135) */ + 3347, /* BFF0 (49136) */ + 3347, /* BFF1 (49137) */ + 3347, /* BFF2 (49138) */ + 3347, /* BFF3 (49139) */ + 3347, /* BFF4 (49140) */ + 3347, /* BFF5 (49141) */ + 3347, /* BFF6 (49142) */ + 3347, /* BFF7 (49143) */ + 3347, /* BFF8 (49144) */ + 3347, /* BFF9 (49145) */ + 3347, /* BFFA (49146) */ + 3347, /* BFFB (49147) */ + 3347, /* BFFC (49148) */ + 3347, /* BFFD (49149) */ + 3347, /* BFFE (49150) */ + 3347, /* BFFF (49151) */ + 3347, /* C000 (49152) */ + 3347, /* C001 (49153) */ + 3347, /* C002 (49154) */ + 3347, /* C003 (49155) */ + 3347, /* C004 (49156) */ + 3347, /* C005 (49157) */ + 3347, /* C006 (49158) */ + 3347, /* C007 (49159) */ + 3347, /* C008 (49160) */ + 3347, /* C009 (49161) */ + 3347, /* C00A (49162) */ + 3347, /* C00B (49163) */ + 3347, /* C00C (49164) */ + 3347, /* C00D (49165) */ + 3347, /* C00E (49166) */ + 3347, /* C00F (49167) */ + 3347, /* C010 (49168) */ + 3347, /* C011 (49169) */ + 3347, /* C012 (49170) */ + 3347, /* C013 (49171) */ + 3347, /* C014 (49172) */ + 3347, /* C015 (49173) */ + 3347, /* C016 (49174) */ + 3347, /* C017 (49175) */ + 3347, /* C018 (49176) */ + 3347, /* C019 (49177) */ + 3347, /* C01A (49178) */ + 3347, /* C01B (49179) */ + 3347, /* C01C (49180) */ + 3347, /* C01D (49181) */ + 3347, /* C01E (49182) */ + 3347, /* C01F (49183) */ + 3347, /* C020 (49184) */ + 3347, /* C021 (49185) */ + 3347, /* C022 (49186) */ + 3347, /* C023 (49187) */ + 3347, /* C024 (49188) */ + 3347, /* C025 (49189) */ + 3347, /* C026 (49190) */ + 3347, /* C027 (49191) */ + 3347, /* C028 (49192) */ + 3347, /* C029 (49193) */ + 3347, /* C02A (49194) */ + 3347, /* C02B (49195) */ + 3347, /* C02C (49196) */ + 3347, /* C02D (49197) */ + 3347, /* C02E (49198) */ + 3347, /* C02F (49199) */ + 3347, /* C030 (49200) */ + 3347, /* C031 (49201) */ + 3347, /* C032 (49202) */ + 3347, /* C033 (49203) */ + 3347, /* C034 (49204) */ + 3347, /* C035 (49205) */ + 3347, /* C036 (49206) */ + 3347, /* C037 (49207) */ + 3347, /* C038 (49208) */ + 3347, /* C039 (49209) */ + 3347, /* C03A (49210) */ + 3347, /* C03B (49211) */ + 3347, /* C03C (49212) */ + 3347, /* C03D (49213) */ + 3347, /* C03E (49214) */ + 3347, /* C03F (49215) */ + 3347, /* C040 (49216) */ + 3347, /* C041 (49217) */ + 3347, /* C042 (49218) */ + 3347, /* C043 (49219) */ + 3347, /* C044 (49220) */ + 3347, /* C045 (49221) */ + 3347, /* C046 (49222) */ + 3347, /* C047 (49223) */ + 3347, /* C048 (49224) */ + 3347, /* C049 (49225) */ + 3347, /* C04A (49226) */ + 3347, /* C04B (49227) */ + 3347, /* C04C (49228) */ + 3347, /* C04D (49229) */ + 3347, /* C04E (49230) */ + 3347, /* C04F (49231) */ + 3347, /* C050 (49232) */ + 3347, /* C051 (49233) */ + 3347, /* C052 (49234) */ + 3347, /* C053 (49235) */ + 3347, /* C054 (49236) */ + 3347, /* C055 (49237) */ + 3347, /* C056 (49238) */ + 3347, /* C057 (49239) */ + 3347, /* C058 (49240) */ + 3347, /* C059 (49241) */ + 3347, /* C05A (49242) */ + 3347, /* C05B (49243) */ + 3347, /* C05C (49244) */ + 3347, /* C05D (49245) */ + 3347, /* C05E (49246) */ + 3347, /* C05F (49247) */ + 3347, /* C060 (49248) */ + 3347, /* C061 (49249) */ + 3347, /* C062 (49250) */ + 3347, /* C063 (49251) */ + 3347, /* C064 (49252) */ + 3347, /* C065 (49253) */ + 3347, /* C066 (49254) */ + 3347, /* C067 (49255) */ + 3347, /* C068 (49256) */ + 3347, /* C069 (49257) */ + 3347, /* C06A (49258) */ + 3347, /* C06B (49259) */ + 3347, /* C06C (49260) */ + 3347, /* C06D (49261) */ + 3347, /* C06E (49262) */ + 3347, /* C06F (49263) */ + 3347, /* C070 (49264) */ + 3347, /* C071 (49265) */ + 3347, /* C072 (49266) */ + 3347, /* C073 (49267) */ + 3347, /* C074 (49268) */ + 3347, /* C075 (49269) */ + 3347, /* C076 (49270) */ + 3347, /* C077 (49271) */ + 3347, /* C078 (49272) */ + 3347, /* C079 (49273) */ + 3347, /* C07A (49274) */ + 3347, /* C07B (49275) */ + 3347, /* C07C (49276) */ + 3347, /* C07D (49277) */ + 3347, /* C07E (49278) */ + 3347, /* C07F (49279) */ + 3347, /* C080 (49280) */ + 3347, /* C081 (49281) */ + 3347, /* C082 (49282) */ + 3347, /* C083 (49283) */ + 3347, /* C084 (49284) */ + 3347, /* C085 (49285) */ + 3347, /* C086 (49286) */ + 3347, /* C087 (49287) */ + 3347, /* C088 (49288) */ + 3347, /* C089 (49289) */ + 3347, /* C08A (49290) */ + 3347, /* C08B (49291) */ + 3347, /* C08C (49292) */ + 3347, /* C08D (49293) */ + 3347, /* C08E (49294) */ + 3347, /* C08F (49295) */ + 3347, /* C090 (49296) */ + 3347, /* C091 (49297) */ + 3347, /* C092 (49298) */ + 3347, /* C093 (49299) */ + 3347, /* C094 (49300) */ + 3347, /* C095 (49301) */ + 3347, /* C096 (49302) */ + 3347, /* C097 (49303) */ + 3347, /* C098 (49304) */ + 3347, /* C099 (49305) */ + 3347, /* C09A (49306) */ + 3347, /* C09B (49307) */ + 3347, /* C09C (49308) */ + 3347, /* C09D (49309) */ + 3347, /* C09E (49310) */ + 3347, /* C09F (49311) */ + 3347, /* C0A0 (49312) */ + 3347, /* C0A1 (49313) */ + 3347, /* C0A2 (49314) */ + 3347, /* C0A3 (49315) */ + 3347, /* C0A4 (49316) */ + 3347, /* C0A5 (49317) */ + 3347, /* C0A6 (49318) */ + 3347, /* C0A7 (49319) */ + 3347, /* C0A8 (49320) */ + 3347, /* C0A9 (49321) */ + 3347, /* C0AA (49322) */ + 3347, /* C0AB (49323) */ + 3347, /* C0AC (49324) */ + 3347, /* C0AD (49325) */ + 3347, /* C0AE (49326) */ + 3347, /* C0AF (49327) */ + 3347, /* C0B0 (49328) */ + 3347, /* C0B1 (49329) */ + 3347, /* C0B2 (49330) */ + 3347, /* C0B3 (49331) */ + 3347, /* C0B4 (49332) */ + 3347, /* C0B5 (49333) */ + 3347, /* C0B6 (49334) */ + 3347, /* C0B7 (49335) */ + 3347, /* C0B8 (49336) */ + 3347, /* C0B9 (49337) */ + 3347, /* C0BA (49338) */ + 3347, /* C0BB (49339) */ + 3347, /* C0BC (49340) */ + 3347, /* C0BD (49341) */ + 3347, /* C0BE (49342) */ + 3347, /* C0BF (49343) */ + 3347, /* C0C0 (49344) */ + 3347, /* C0C1 (49345) */ + 3347, /* C0C2 (49346) */ + 3347, /* C0C3 (49347) */ + 3347, /* C0C4 (49348) */ + 3347, /* C0C5 (49349) */ + 3347, /* C0C6 (49350) */ + 3347, /* C0C7 (49351) */ + 3347, /* C0C8 (49352) */ + 3347, /* C0C9 (49353) */ + 3347, /* C0CA (49354) */ + 3347, /* C0CB (49355) */ + 3347, /* C0CC (49356) */ + 3347, /* C0CD (49357) */ + 3347, /* C0CE (49358) */ + 3347, /* C0CF (49359) */ + 3347, /* C0D0 (49360) */ + 3347, /* C0D1 (49361) */ + 3347, /* C0D2 (49362) */ + 3347, /* C0D3 (49363) */ + 3347, /* C0D4 (49364) */ + 3347, /* C0D5 (49365) */ + 3347, /* C0D6 (49366) */ + 3347, /* C0D7 (49367) */ + 3347, /* C0D8 (49368) */ + 3347, /* C0D9 (49369) */ + 3347, /* C0DA (49370) */ + 3347, /* C0DB (49371) */ + 3347, /* C0DC (49372) */ + 3347, /* C0DD (49373) */ + 3347, /* C0DE (49374) */ + 3347, /* C0DF (49375) */ + 3347, /* C0E0 (49376) */ + 3347, /* C0E1 (49377) */ + 3347, /* C0E2 (49378) */ + 3347, /* C0E3 (49379) */ + 3347, /* C0E4 (49380) */ + 3347, /* C0E5 (49381) */ + 3347, /* C0E6 (49382) */ + 3347, /* C0E7 (49383) */ + 3347, /* C0E8 (49384) */ + 3347, /* C0E9 (49385) */ + 3347, /* C0EA (49386) */ + 3347, /* C0EB (49387) */ + 3347, /* C0EC (49388) */ + 3347, /* C0ED (49389) */ + 3347, /* C0EE (49390) */ + 3347, /* C0EF (49391) */ + 3347, /* C0F0 (49392) */ + 3347, /* C0F1 (49393) */ + 3347, /* C0F2 (49394) */ + 3347, /* C0F3 (49395) */ + 3347, /* C0F4 (49396) */ + 3347, /* C0F5 (49397) */ + 3347, /* C0F6 (49398) */ + 3347, /* C0F7 (49399) */ + 3347, /* C0F8 (49400) */ + 3347, /* C0F9 (49401) */ + 3347, /* C0FA (49402) */ + 3347, /* C0FB (49403) */ + 3347, /* C0FC (49404) */ + 3347, /* C0FD (49405) */ + 3347, /* C0FE (49406) */ + 3347, /* C0FF (49407) */ + 3347, /* C100 (49408) */ + 3347, /* C101 (49409) */ + 3347, /* C102 (49410) */ + 3347, /* C103 (49411) */ + 3347, /* C104 (49412) */ + 3347, /* C105 (49413) */ + 3347, /* C106 (49414) */ + 3347, /* C107 (49415) */ + 3347, /* C108 (49416) */ + 3347, /* C109 (49417) */ + 3347, /* C10A (49418) */ + 3347, /* C10B (49419) */ + 3347, /* C10C (49420) */ + 3347, /* C10D (49421) */ + 3347, /* C10E (49422) */ + 3347, /* C10F (49423) */ + 3347, /* C110 (49424) */ + 3347, /* C111 (49425) */ + 3347, /* C112 (49426) */ + 3347, /* C113 (49427) */ + 3347, /* C114 (49428) */ + 3347, /* C115 (49429) */ + 3347, /* C116 (49430) */ + 3347, /* C117 (49431) */ + 3347, /* C118 (49432) */ + 3347, /* C119 (49433) */ + 3347, /* C11A (49434) */ + 3347, /* C11B (49435) */ + 3347, /* C11C (49436) */ + 3347, /* C11D (49437) */ + 3347, /* C11E (49438) */ + 3347, /* C11F (49439) */ + 3347, /* C120 (49440) */ + 3347, /* C121 (49441) */ + 3347, /* C122 (49442) */ + 3347, /* C123 (49443) */ + 3347, /* C124 (49444) */ + 3347, /* C125 (49445) */ + 3347, /* C126 (49446) */ + 3347, /* C127 (49447) */ + 3347, /* C128 (49448) */ + 3347, /* C129 (49449) */ + 3347, /* C12A (49450) */ + 3347, /* C12B (49451) */ + 3347, /* C12C (49452) */ + 3347, /* C12D (49453) */ + 3347, /* C12E (49454) */ + 3347, /* C12F (49455) */ + 3347, /* C130 (49456) */ + 3347, /* C131 (49457) */ + 3347, /* C132 (49458) */ + 3347, /* C133 (49459) */ + 3347, /* C134 (49460) */ + 3347, /* C135 (49461) */ + 3347, /* C136 (49462) */ + 3347, /* C137 (49463) */ + 3347, /* C138 (49464) */ + 3347, /* C139 (49465) */ + 3347, /* C13A (49466) */ + 3347, /* C13B (49467) */ + 3347, /* C13C (49468) */ + 3347, /* C13D (49469) */ + 3347, /* C13E (49470) */ + 3347, /* C13F (49471) */ + 3347, /* C140 (49472) */ + 3347, /* C141 (49473) */ + 3347, /* C142 (49474) */ + 3347, /* C143 (49475) */ + 3347, /* C144 (49476) */ + 3347, /* C145 (49477) */ + 3347, /* C146 (49478) */ + 3347, /* C147 (49479) */ + 3347, /* C148 (49480) */ + 3347, /* C149 (49481) */ + 3347, /* C14A (49482) */ + 3347, /* C14B (49483) */ + 3347, /* C14C (49484) */ + 3347, /* C14D (49485) */ + 3347, /* C14E (49486) */ + 3347, /* C14F (49487) */ + 3347, /* C150 (49488) */ + 3347, /* C151 (49489) */ + 3347, /* C152 (49490) */ + 3347, /* C153 (49491) */ + 3347, /* C154 (49492) */ + 3347, /* C155 (49493) */ + 3347, /* C156 (49494) */ + 3347, /* C157 (49495) */ + 3347, /* C158 (49496) */ + 3347, /* C159 (49497) */ + 3347, /* C15A (49498) */ + 3347, /* C15B (49499) */ + 3347, /* C15C (49500) */ + 3347, /* C15D (49501) */ + 3347, /* C15E (49502) */ + 3347, /* C15F (49503) */ + 3347, /* C160 (49504) */ + 3347, /* C161 (49505) */ + 3347, /* C162 (49506) */ + 3347, /* C163 (49507) */ + 3347, /* C164 (49508) */ + 3347, /* C165 (49509) */ + 3347, /* C166 (49510) */ + 3347, /* C167 (49511) */ + 3347, /* C168 (49512) */ + 3347, /* C169 (49513) */ + 3347, /* C16A (49514) */ + 3347, /* C16B (49515) */ + 3347, /* C16C (49516) */ + 3347, /* C16D (49517) */ + 3347, /* C16E (49518) */ + 3347, /* C16F (49519) */ + 3347, /* C170 (49520) */ + 3347, /* C171 (49521) */ + 3347, /* C172 (49522) */ + 3347, /* C173 (49523) */ + 3347, /* C174 (49524) */ + 3347, /* C175 (49525) */ + 3347, /* C176 (49526) */ + 3347, /* C177 (49527) */ + 3347, /* C178 (49528) */ + 3347, /* C179 (49529) */ + 3347, /* C17A (49530) */ + 3347, /* C17B (49531) */ + 3347, /* C17C (49532) */ + 3347, /* C17D (49533) */ + 3347, /* C17E (49534) */ + 3347, /* C17F (49535) */ + 3347, /* C180 (49536) */ + 3347, /* C181 (49537) */ + 3347, /* C182 (49538) */ + 3347, /* C183 (49539) */ + 3347, /* C184 (49540) */ + 3347, /* C185 (49541) */ + 3347, /* C186 (49542) */ + 3347, /* C187 (49543) */ + 3347, /* C188 (49544) */ + 3347, /* C189 (49545) */ + 3347, /* C18A (49546) */ + 3347, /* C18B (49547) */ + 3347, /* C18C (49548) */ + 3347, /* C18D (49549) */ + 3347, /* C18E (49550) */ + 3347, /* C18F (49551) */ + 3347, /* C190 (49552) */ + 3347, /* C191 (49553) */ + 3347, /* C192 (49554) */ + 3347, /* C193 (49555) */ + 3347, /* C194 (49556) */ + 3347, /* C195 (49557) */ + 3347, /* C196 (49558) */ + 3347, /* C197 (49559) */ + 3347, /* C198 (49560) */ + 3347, /* C199 (49561) */ + 3347, /* C19A (49562) */ + 3347, /* C19B (49563) */ + 3347, /* C19C (49564) */ + 3347, /* C19D (49565) */ + 3347, /* C19E (49566) */ + 3347, /* C19F (49567) */ + 3347, /* C1A0 (49568) */ + 3347, /* C1A1 (49569) */ + 3347, /* C1A2 (49570) */ + 3347, /* C1A3 (49571) */ + 3347, /* C1A4 (49572) */ + 3347, /* C1A5 (49573) */ + 3347, /* C1A6 (49574) */ + 3347, /* C1A7 (49575) */ + 3347, /* C1A8 (49576) */ + 3347, /* C1A9 (49577) */ + 3347, /* C1AA (49578) */ + 3347, /* C1AB (49579) */ + 3347, /* C1AC (49580) */ + 3347, /* C1AD (49581) */ + 3347, /* C1AE (49582) */ + 3347, /* C1AF (49583) */ + 3347, /* C1B0 (49584) */ + 3347, /* C1B1 (49585) */ + 3347, /* C1B2 (49586) */ + 3347, /* C1B3 (49587) */ + 3347, /* C1B4 (49588) */ + 3347, /* C1B5 (49589) */ + 3347, /* C1B6 (49590) */ + 3347, /* C1B7 (49591) */ + 3347, /* C1B8 (49592) */ + 3347, /* C1B9 (49593) */ + 3347, /* C1BA (49594) */ + 3347, /* C1BB (49595) */ + 3347, /* C1BC (49596) */ + 3347, /* C1BD (49597) */ + 3347, /* C1BE (49598) */ + 3347, /* C1BF (49599) */ + 3347, /* C1C0 (49600) */ + 3347, /* C1C1 (49601) */ + 3347, /* C1C2 (49602) */ + 3347, /* C1C3 (49603) */ + 3347, /* C1C4 (49604) */ + 3347, /* C1C5 (49605) */ + 3347, /* C1C6 (49606) */ + 3347, /* C1C7 (49607) */ + 3347, /* C1C8 (49608) */ + 3347, /* C1C9 (49609) */ + 3347, /* C1CA (49610) */ + 3347, /* C1CB (49611) */ + 3347, /* C1CC (49612) */ + 3347, /* C1CD (49613) */ + 3347, /* C1CE (49614) */ + 3347, /* C1CF (49615) */ + 3347, /* C1D0 (49616) */ + 3347, /* C1D1 (49617) */ + 3347, /* C1D2 (49618) */ + 3347, /* C1D3 (49619) */ + 3347, /* C1D4 (49620) */ + 3347, /* C1D5 (49621) */ + 3347, /* C1D6 (49622) */ + 3347, /* C1D7 (49623) */ + 3347, /* C1D8 (49624) */ + 3347, /* C1D9 (49625) */ + 3347, /* C1DA (49626) */ + 3347, /* C1DB (49627) */ + 3347, /* C1DC (49628) */ + 3347, /* C1DD (49629) */ + 3347, /* C1DE (49630) */ + 3347, /* C1DF (49631) */ + 3347, /* C1E0 (49632) */ + 3347, /* C1E1 (49633) */ + 3347, /* C1E2 (49634) */ + 3347, /* C1E3 (49635) */ + 3347, /* C1E4 (49636) */ + 3347, /* C1E5 (49637) */ + 3347, /* C1E6 (49638) */ + 3347, /* C1E7 (49639) */ + 3347, /* C1E8 (49640) */ + 3347, /* C1E9 (49641) */ + 3347, /* C1EA (49642) */ + 3347, /* C1EB (49643) */ + 3347, /* C1EC (49644) */ + 3347, /* C1ED (49645) */ + 3347, /* C1EE (49646) */ + 3347, /* C1EF (49647) */ + 3347, /* C1F0 (49648) */ + 3347, /* C1F1 (49649) */ + 3347, /* C1F2 (49650) */ + 3347, /* C1F3 (49651) */ + 3347, /* C1F4 (49652) */ + 3347, /* C1F5 (49653) */ + 3347, /* C1F6 (49654) */ + 3347, /* C1F7 (49655) */ + 3347, /* C1F8 (49656) */ + 3347, /* C1F9 (49657) */ + 3347, /* C1FA (49658) */ + 3347, /* C1FB (49659) */ + 3347, /* C1FC (49660) */ + 3347, /* C1FD (49661) */ + 3347, /* C1FE (49662) */ + 3347, /* C1FF (49663) */ + 3347, /* C200 (49664) */ + 3347, /* C201 (49665) */ + 3347, /* C202 (49666) */ + 3347, /* C203 (49667) */ + 3347, /* C204 (49668) */ + 3347, /* C205 (49669) */ + 3347, /* C206 (49670) */ + 3347, /* C207 (49671) */ + 3347, /* C208 (49672) */ + 3347, /* C209 (49673) */ + 3347, /* C20A (49674) */ + 3347, /* C20B (49675) */ + 3347, /* C20C (49676) */ + 3347, /* C20D (49677) */ + 3347, /* C20E (49678) */ + 3347, /* C20F (49679) */ + 3347, /* C210 (49680) */ + 3347, /* C211 (49681) */ + 3347, /* C212 (49682) */ + 3347, /* C213 (49683) */ + 3347, /* C214 (49684) */ + 3347, /* C215 (49685) */ + 3347, /* C216 (49686) */ + 3347, /* C217 (49687) */ + 3347, /* C218 (49688) */ + 3347, /* C219 (49689) */ + 3347, /* C21A (49690) */ + 3347, /* C21B (49691) */ + 3347, /* C21C (49692) */ + 3347, /* C21D (49693) */ + 3347, /* C21E (49694) */ + 3347, /* C21F (49695) */ + 3347, /* C220 (49696) */ + 3347, /* C221 (49697) */ + 3347, /* C222 (49698) */ + 3347, /* C223 (49699) */ + 3347, /* C224 (49700) */ + 3347, /* C225 (49701) */ + 3347, /* C226 (49702) */ + 3347, /* C227 (49703) */ + 3347, /* C228 (49704) */ + 3347, /* C229 (49705) */ + 3347, /* C22A (49706) */ + 3347, /* C22B (49707) */ + 3347, /* C22C (49708) */ + 3347, /* C22D (49709) */ + 3347, /* C22E (49710) */ + 3347, /* C22F (49711) */ + 3347, /* C230 (49712) */ + 3347, /* C231 (49713) */ + 3347, /* C232 (49714) */ + 3347, /* C233 (49715) */ + 3347, /* C234 (49716) */ + 3347, /* C235 (49717) */ + 3347, /* C236 (49718) */ + 3347, /* C237 (49719) */ + 3347, /* C238 (49720) */ + 3347, /* C239 (49721) */ + 3347, /* C23A (49722) */ + 3347, /* C23B (49723) */ + 3347, /* C23C (49724) */ + 3347, /* C23D (49725) */ + 3347, /* C23E (49726) */ + 3347, /* C23F (49727) */ + 3347, /* C240 (49728) */ + 3347, /* C241 (49729) */ + 3347, /* C242 (49730) */ + 3347, /* C243 (49731) */ + 3347, /* C244 (49732) */ + 3347, /* C245 (49733) */ + 3347, /* C246 (49734) */ + 3347, /* C247 (49735) */ + 3347, /* C248 (49736) */ + 3347, /* C249 (49737) */ + 3347, /* C24A (49738) */ + 3347, /* C24B (49739) */ + 3347, /* C24C (49740) */ + 3347, /* C24D (49741) */ + 3347, /* C24E (49742) */ + 3347, /* C24F (49743) */ + 3347, /* C250 (49744) */ + 3347, /* C251 (49745) */ + 3347, /* C252 (49746) */ + 3347, /* C253 (49747) */ + 3347, /* C254 (49748) */ + 3347, /* C255 (49749) */ + 3347, /* C256 (49750) */ + 3347, /* C257 (49751) */ + 3347, /* C258 (49752) */ + 3347, /* C259 (49753) */ + 3347, /* C25A (49754) */ + 3347, /* C25B (49755) */ + 3347, /* C25C (49756) */ + 3347, /* C25D (49757) */ + 3347, /* C25E (49758) */ + 3347, /* C25F (49759) */ + 3347, /* C260 (49760) */ + 3347, /* C261 (49761) */ + 3347, /* C262 (49762) */ + 3347, /* C263 (49763) */ + 3347, /* C264 (49764) */ + 3347, /* C265 (49765) */ + 3347, /* C266 (49766) */ + 3347, /* C267 (49767) */ + 3347, /* C268 (49768) */ + 3347, /* C269 (49769) */ + 3347, /* C26A (49770) */ + 3347, /* C26B (49771) */ + 3347, /* C26C (49772) */ + 3347, /* C26D (49773) */ + 3347, /* C26E (49774) */ + 3347, /* C26F (49775) */ + 3347, /* C270 (49776) */ + 3347, /* C271 (49777) */ + 3347, /* C272 (49778) */ + 3347, /* C273 (49779) */ + 3347, /* C274 (49780) */ + 3347, /* C275 (49781) */ + 3347, /* C276 (49782) */ + 3347, /* C277 (49783) */ + 3347, /* C278 (49784) */ + 3347, /* C279 (49785) */ + 3347, /* C27A (49786) */ + 3347, /* C27B (49787) */ + 3347, /* C27C (49788) */ + 3347, /* C27D (49789) */ + 3347, /* C27E (49790) */ + 3347, /* C27F (49791) */ + 3347, /* C280 (49792) */ + 3347, /* C281 (49793) */ + 3347, /* C282 (49794) */ + 3347, /* C283 (49795) */ + 3347, /* C284 (49796) */ + 3347, /* C285 (49797) */ + 3347, /* C286 (49798) */ + 3347, /* C287 (49799) */ + 3347, /* C288 (49800) */ + 3347, /* C289 (49801) */ + 3347, /* C28A (49802) */ + 3347, /* C28B (49803) */ + 3347, /* C28C (49804) */ + 3347, /* C28D (49805) */ + 3347, /* C28E (49806) */ + 3347, /* C28F (49807) */ + 3347, /* C290 (49808) */ + 3347, /* C291 (49809) */ + 3347, /* C292 (49810) */ + 3347, /* C293 (49811) */ + 3347, /* C294 (49812) */ + 3347, /* C295 (49813) */ + 3347, /* C296 (49814) */ + 3347, /* C297 (49815) */ + 3347, /* C298 (49816) */ + 3347, /* C299 (49817) */ + 3347, /* C29A (49818) */ + 3347, /* C29B (49819) */ + 3347, /* C29C (49820) */ + 3347, /* C29D (49821) */ + 3347, /* C29E (49822) */ + 3347, /* C29F (49823) */ + 3347, /* C2A0 (49824) */ + 3347, /* C2A1 (49825) */ + 3347, /* C2A2 (49826) */ + 3347, /* C2A3 (49827) */ + 3347, /* C2A4 (49828) */ + 3347, /* C2A5 (49829) */ + 3347, /* C2A6 (49830) */ + 3347, /* C2A7 (49831) */ + 3347, /* C2A8 (49832) */ + 3347, /* C2A9 (49833) */ + 3347, /* C2AA (49834) */ + 3347, /* C2AB (49835) */ + 3347, /* C2AC (49836) */ + 3347, /* C2AD (49837) */ + 3347, /* C2AE (49838) */ + 3347, /* C2AF (49839) */ + 3347, /* C2B0 (49840) */ + 3347, /* C2B1 (49841) */ + 3347, /* C2B2 (49842) */ + 3347, /* C2B3 (49843) */ + 3347, /* C2B4 (49844) */ + 3347, /* C2B5 (49845) */ + 3347, /* C2B6 (49846) */ + 3347, /* C2B7 (49847) */ + 3347, /* C2B8 (49848) */ + 3347, /* C2B9 (49849) */ + 3347, /* C2BA (49850) */ + 3347, /* C2BB (49851) */ + 3347, /* C2BC (49852) */ + 3347, /* C2BD (49853) */ + 3347, /* C2BE (49854) */ + 3347, /* C2BF (49855) */ + 3347, /* C2C0 (49856) */ + 3347, /* C2C1 (49857) */ + 3347, /* C2C2 (49858) */ + 3347, /* C2C3 (49859) */ + 3347, /* C2C4 (49860) */ + 3347, /* C2C5 (49861) */ + 3347, /* C2C6 (49862) */ + 3347, /* C2C7 (49863) */ + 3347, /* C2C8 (49864) */ + 3347, /* C2C9 (49865) */ + 3347, /* C2CA (49866) */ + 3347, /* C2CB (49867) */ + 3347, /* C2CC (49868) */ + 3347, /* C2CD (49869) */ + 3347, /* C2CE (49870) */ + 3347, /* C2CF (49871) */ + 3347, /* C2D0 (49872) */ + 3347, /* C2D1 (49873) */ + 3347, /* C2D2 (49874) */ + 3347, /* C2D3 (49875) */ + 3347, /* C2D4 (49876) */ + 3347, /* C2D5 (49877) */ + 3347, /* C2D6 (49878) */ + 3347, /* C2D7 (49879) */ + 3347, /* C2D8 (49880) */ + 3347, /* C2D9 (49881) */ + 3347, /* C2DA (49882) */ + 3347, /* C2DB (49883) */ + 3347, /* C2DC (49884) */ + 3347, /* C2DD (49885) */ + 3347, /* C2DE (49886) */ + 3347, /* C2DF (49887) */ + 3347, /* C2E0 (49888) */ + 3347, /* C2E1 (49889) */ + 3347, /* C2E2 (49890) */ + 3347, /* C2E3 (49891) */ + 3347, /* C2E4 (49892) */ + 3347, /* C2E5 (49893) */ + 3347, /* C2E6 (49894) */ + 3347, /* C2E7 (49895) */ + 3347, /* C2E8 (49896) */ + 3347, /* C2E9 (49897) */ + 3347, /* C2EA (49898) */ + 3347, /* C2EB (49899) */ + 3347, /* C2EC (49900) */ + 3347, /* C2ED (49901) */ + 3347, /* C2EE (49902) */ + 3347, /* C2EF (49903) */ + 3347, /* C2F0 (49904) */ + 3347, /* C2F1 (49905) */ + 3347, /* C2F2 (49906) */ + 3347, /* C2F3 (49907) */ + 3347, /* C2F4 (49908) */ + 3347, /* C2F5 (49909) */ + 3347, /* C2F6 (49910) */ + 3347, /* C2F7 (49911) */ + 3347, /* C2F8 (49912) */ + 3347, /* C2F9 (49913) */ + 3347, /* C2FA (49914) */ + 3347, /* C2FB (49915) */ + 3347, /* C2FC (49916) */ + 3347, /* C2FD (49917) */ + 3347, /* C2FE (49918) */ + 3347, /* C2FF (49919) */ + 3347, /* C300 (49920) */ + 3347, /* C301 (49921) */ + 3347, /* C302 (49922) */ + 3347, /* C303 (49923) */ + 3347, /* C304 (49924) */ + 3347, /* C305 (49925) */ + 3347, /* C306 (49926) */ + 3347, /* C307 (49927) */ + 3347, /* C308 (49928) */ + 3347, /* C309 (49929) */ + 3347, /* C30A (49930) */ + 3347, /* C30B (49931) */ + 3347, /* C30C (49932) */ + 3347, /* C30D (49933) */ + 3347, /* C30E (49934) */ + 3347, /* C30F (49935) */ + 3347, /* C310 (49936) */ + 3347, /* C311 (49937) */ + 3347, /* C312 (49938) */ + 3347, /* C313 (49939) */ + 3347, /* C314 (49940) */ + 3347, /* C315 (49941) */ + 3347, /* C316 (49942) */ + 3347, /* C317 (49943) */ + 3347, /* C318 (49944) */ + 3347, /* C319 (49945) */ + 3347, /* C31A (49946) */ + 3347, /* C31B (49947) */ + 3347, /* C31C (49948) */ + 3347, /* C31D (49949) */ + 3347, /* C31E (49950) */ + 3347, /* C31F (49951) */ + 3347, /* C320 (49952) */ + 3347, /* C321 (49953) */ + 3347, /* C322 (49954) */ + 3347, /* C323 (49955) */ + 3347, /* C324 (49956) */ + 3347, /* C325 (49957) */ + 3347, /* C326 (49958) */ + 3347, /* C327 (49959) */ + 3347, /* C328 (49960) */ + 3347, /* C329 (49961) */ + 3347, /* C32A (49962) */ + 3347, /* C32B (49963) */ + 3347, /* C32C (49964) */ + 3347, /* C32D (49965) */ + 3347, /* C32E (49966) */ + 3347, /* C32F (49967) */ + 3347, /* C330 (49968) */ + 3347, /* C331 (49969) */ + 3347, /* C332 (49970) */ + 3347, /* C333 (49971) */ + 3347, /* C334 (49972) */ + 3347, /* C335 (49973) */ + 3347, /* C336 (49974) */ + 3347, /* C337 (49975) */ + 3347, /* C338 (49976) */ + 3347, /* C339 (49977) */ + 3347, /* C33A (49978) */ + 3347, /* C33B (49979) */ + 3347, /* C33C (49980) */ + 3347, /* C33D (49981) */ + 3347, /* C33E (49982) */ + 3347, /* C33F (49983) */ + 3347, /* C340 (49984) */ + 3347, /* C341 (49985) */ + 3347, /* C342 (49986) */ + 3347, /* C343 (49987) */ + 3347, /* C344 (49988) */ + 3347, /* C345 (49989) */ + 3347, /* C346 (49990) */ + 3347, /* C347 (49991) */ + 3347, /* C348 (49992) */ + 3347, /* C349 (49993) */ + 3347, /* C34A (49994) */ + 3347, /* C34B (49995) */ + 3347, /* C34C (49996) */ + 3347, /* C34D (49997) */ + 3347, /* C34E (49998) */ + 3347, /* C34F (49999) */ + 3347, /* C350 (50000) */ + 3347, /* C351 (50001) */ + 3347, /* C352 (50002) */ + 3347, /* C353 (50003) */ + 3347, /* C354 (50004) */ + 3347, /* C355 (50005) */ + 3347, /* C356 (50006) */ + 3347, /* C357 (50007) */ + 3347, /* C358 (50008) */ + 3347, /* C359 (50009) */ + 3347, /* C35A (50010) */ + 3347, /* C35B (50011) */ + 3347, /* C35C (50012) */ + 3347, /* C35D (50013) */ + 3347, /* C35E (50014) */ + 3347, /* C35F (50015) */ + 3347, /* C360 (50016) */ + 3347, /* C361 (50017) */ + 3347, /* C362 (50018) */ + 3347, /* C363 (50019) */ + 3347, /* C364 (50020) */ + 3347, /* C365 (50021) */ + 3347, /* C366 (50022) */ + 3347, /* C367 (50023) */ + 3347, /* C368 (50024) */ + 3347, /* C369 (50025) */ + 3347, /* C36A (50026) */ + 3347, /* C36B (50027) */ + 3347, /* C36C (50028) */ + 3347, /* C36D (50029) */ + 3347, /* C36E (50030) */ + 3347, /* C36F (50031) */ + 3347, /* C370 (50032) */ + 3347, /* C371 (50033) */ + 3347, /* C372 (50034) */ + 3347, /* C373 (50035) */ + 3347, /* C374 (50036) */ + 3347, /* C375 (50037) */ + 3347, /* C376 (50038) */ + 3347, /* C377 (50039) */ + 3347, /* C378 (50040) */ + 3347, /* C379 (50041) */ + 3347, /* C37A (50042) */ + 3347, /* C37B (50043) */ + 3347, /* C37C (50044) */ + 3347, /* C37D (50045) */ + 3347, /* C37E (50046) */ + 3347, /* C37F (50047) */ + 3347, /* C380 (50048) */ + 3347, /* C381 (50049) */ + 3347, /* C382 (50050) */ + 3347, /* C383 (50051) */ + 3347, /* C384 (50052) */ + 3347, /* C385 (50053) */ + 3347, /* C386 (50054) */ + 3347, /* C387 (50055) */ + 3347, /* C388 (50056) */ + 3347, /* C389 (50057) */ + 3347, /* C38A (50058) */ + 3347, /* C38B (50059) */ + 3347, /* C38C (50060) */ + 3347, /* C38D (50061) */ + 3347, /* C38E (50062) */ + 3347, /* C38F (50063) */ + 3347, /* C390 (50064) */ + 3347, /* C391 (50065) */ + 3347, /* C392 (50066) */ + 3347, /* C393 (50067) */ + 3347, /* C394 (50068) */ + 3347, /* C395 (50069) */ + 3347, /* C396 (50070) */ + 3347, /* C397 (50071) */ + 3347, /* C398 (50072) */ + 3347, /* C399 (50073) */ + 3347, /* C39A (50074) */ + 3347, /* C39B (50075) */ + 3347, /* C39C (50076) */ + 3347, /* C39D (50077) */ + 3347, /* C39E (50078) */ + 3347, /* C39F (50079) */ + 3347, /* C3A0 (50080) */ + 3347, /* C3A1 (50081) */ + 3347, /* C3A2 (50082) */ + 3347, /* C3A3 (50083) */ + 3347, /* C3A4 (50084) */ + 3347, /* C3A5 (50085) */ + 3347, /* C3A6 (50086) */ + 3347, /* C3A7 (50087) */ + 3347, /* C3A8 (50088) */ + 3347, /* C3A9 (50089) */ + 3347, /* C3AA (50090) */ + 3347, /* C3AB (50091) */ + 3347, /* C3AC (50092) */ + 3347, /* C3AD (50093) */ + 3347, /* C3AE (50094) */ + 3347, /* C3AF (50095) */ + 3347, /* C3B0 (50096) */ + 3347, /* C3B1 (50097) */ + 3347, /* C3B2 (50098) */ + 3347, /* C3B3 (50099) */ + 3347, /* C3B4 (50100) */ + 3347, /* C3B5 (50101) */ + 3347, /* C3B6 (50102) */ + 3347, /* C3B7 (50103) */ + 3347, /* C3B8 (50104) */ + 3347, /* C3B9 (50105) */ + 3347, /* C3BA (50106) */ + 3347, /* C3BB (50107) */ + 3347, /* C3BC (50108) */ + 3347, /* C3BD (50109) */ + 3347, /* C3BE (50110) */ + 3347, /* C3BF (50111) */ + 3347, /* C3C0 (50112) */ + 3347, /* C3C1 (50113) */ + 3347, /* C3C2 (50114) */ + 3347, /* C3C3 (50115) */ + 3347, /* C3C4 (50116) */ + 3347, /* C3C5 (50117) */ + 3347, /* C3C6 (50118) */ + 3347, /* C3C7 (50119) */ + 3347, /* C3C8 (50120) */ + 3347, /* C3C9 (50121) */ + 3347, /* C3CA (50122) */ + 3347, /* C3CB (50123) */ + 3347, /* C3CC (50124) */ + 3347, /* C3CD (50125) */ + 3347, /* C3CE (50126) */ + 3347, /* C3CF (50127) */ + 3347, /* C3D0 (50128) */ + 3347, /* C3D1 (50129) */ + 3347, /* C3D2 (50130) */ + 3347, /* C3D3 (50131) */ + 3347, /* C3D4 (50132) */ + 3347, /* C3D5 (50133) */ + 3347, /* C3D6 (50134) */ + 3347, /* C3D7 (50135) */ + 3347, /* C3D8 (50136) */ + 3347, /* C3D9 (50137) */ + 3347, /* C3DA (50138) */ + 3347, /* C3DB (50139) */ + 3347, /* C3DC (50140) */ + 3347, /* C3DD (50141) */ + 3347, /* C3DE (50142) */ + 3347, /* C3DF (50143) */ + 3347, /* C3E0 (50144) */ + 3347, /* C3E1 (50145) */ + 3347, /* C3E2 (50146) */ + 3347, /* C3E3 (50147) */ + 3347, /* C3E4 (50148) */ + 3347, /* C3E5 (50149) */ + 3347, /* C3E6 (50150) */ + 3347, /* C3E7 (50151) */ + 3347, /* C3E8 (50152) */ + 3347, /* C3E9 (50153) */ + 3347, /* C3EA (50154) */ + 3347, /* C3EB (50155) */ + 3347, /* C3EC (50156) */ + 3347, /* C3ED (50157) */ + 3347, /* C3EE (50158) */ + 3347, /* C3EF (50159) */ + 3347, /* C3F0 (50160) */ + 3347, /* C3F1 (50161) */ + 3347, /* C3F2 (50162) */ + 3347, /* C3F3 (50163) */ + 3347, /* C3F4 (50164) */ + 3347, /* C3F5 (50165) */ + 3347, /* C3F6 (50166) */ + 3347, /* C3F7 (50167) */ + 3347, /* C3F8 (50168) */ + 3347, /* C3F9 (50169) */ + 3347, /* C3FA (50170) */ + 3347, /* C3FB (50171) */ + 3347, /* C3FC (50172) */ + 3347, /* C3FD (50173) */ + 3347, /* C3FE (50174) */ + 3347, /* C3FF (50175) */ + 3347, /* C400 (50176) */ + 3347, /* C401 (50177) */ + 3347, /* C402 (50178) */ + 3347, /* C403 (50179) */ + 3347, /* C404 (50180) */ + 3347, /* C405 (50181) */ + 3347, /* C406 (50182) */ + 3347, /* C407 (50183) */ + 3347, /* C408 (50184) */ + 3347, /* C409 (50185) */ + 3347, /* C40A (50186) */ + 3347, /* C40B (50187) */ + 3347, /* C40C (50188) */ + 3347, /* C40D (50189) */ + 3347, /* C40E (50190) */ + 3347, /* C40F (50191) */ + 3347, /* C410 (50192) */ + 3347, /* C411 (50193) */ + 3347, /* C412 (50194) */ + 3347, /* C413 (50195) */ + 3347, /* C414 (50196) */ + 3347, /* C415 (50197) */ + 3347, /* C416 (50198) */ + 3347, /* C417 (50199) */ + 3347, /* C418 (50200) */ + 3347, /* C419 (50201) */ + 3347, /* C41A (50202) */ + 3347, /* C41B (50203) */ + 3347, /* C41C (50204) */ + 3347, /* C41D (50205) */ + 3347, /* C41E (50206) */ + 3347, /* C41F (50207) */ + 3347, /* C420 (50208) */ + 3347, /* C421 (50209) */ + 3347, /* C422 (50210) */ + 3347, /* C423 (50211) */ + 3347, /* C424 (50212) */ + 3347, /* C425 (50213) */ + 3347, /* C426 (50214) */ + 3347, /* C427 (50215) */ + 3347, /* C428 (50216) */ + 3347, /* C429 (50217) */ + 3347, /* C42A (50218) */ + 3347, /* C42B (50219) */ + 3347, /* C42C (50220) */ + 3347, /* C42D (50221) */ + 3347, /* C42E (50222) */ + 3347, /* C42F (50223) */ + 3347, /* C430 (50224) */ + 3347, /* C431 (50225) */ + 3347, /* C432 (50226) */ + 3347, /* C433 (50227) */ + 3347, /* C434 (50228) */ + 3347, /* C435 (50229) */ + 3347, /* C436 (50230) */ + 3347, /* C437 (50231) */ + 3347, /* C438 (50232) */ + 3347, /* C439 (50233) */ + 3347, /* C43A (50234) */ + 3347, /* C43B (50235) */ + 3347, /* C43C (50236) */ + 3347, /* C43D (50237) */ + 3347, /* C43E (50238) */ + 3347, /* C43F (50239) */ + 3347, /* C440 (50240) */ + 3347, /* C441 (50241) */ + 3347, /* C442 (50242) */ + 3347, /* C443 (50243) */ + 3347, /* C444 (50244) */ + 3347, /* C445 (50245) */ + 3347, /* C446 (50246) */ + 3347, /* C447 (50247) */ + 3347, /* C448 (50248) */ + 3347, /* C449 (50249) */ + 3347, /* C44A (50250) */ + 3347, /* C44B (50251) */ + 3347, /* C44C (50252) */ + 3347, /* C44D (50253) */ + 3347, /* C44E (50254) */ + 3347, /* C44F (50255) */ + 3347, /* C450 (50256) */ + 3347, /* C451 (50257) */ + 3347, /* C452 (50258) */ + 3347, /* C453 (50259) */ + 3347, /* C454 (50260) */ + 3347, /* C455 (50261) */ + 3347, /* C456 (50262) */ + 3347, /* C457 (50263) */ + 3347, /* C458 (50264) */ + 3347, /* C459 (50265) */ + 3347, /* C45A (50266) */ + 3347, /* C45B (50267) */ + 3347, /* C45C (50268) */ + 3347, /* C45D (50269) */ + 3347, /* C45E (50270) */ + 3347, /* C45F (50271) */ + 3347, /* C460 (50272) */ + 3347, /* C461 (50273) */ + 3347, /* C462 (50274) */ + 3347, /* C463 (50275) */ + 3347, /* C464 (50276) */ + 3347, /* C465 (50277) */ + 3347, /* C466 (50278) */ + 3347, /* C467 (50279) */ + 3347, /* C468 (50280) */ + 3347, /* C469 (50281) */ + 3347, /* C46A (50282) */ + 3347, /* C46B (50283) */ + 3347, /* C46C (50284) */ + 3347, /* C46D (50285) */ + 3347, /* C46E (50286) */ + 3347, /* C46F (50287) */ + 3347, /* C470 (50288) */ + 3347, /* C471 (50289) */ + 3347, /* C472 (50290) */ + 3347, /* C473 (50291) */ + 3347, /* C474 (50292) */ + 3347, /* C475 (50293) */ + 3347, /* C476 (50294) */ + 3347, /* C477 (50295) */ + 3347, /* C478 (50296) */ + 3347, /* C479 (50297) */ + 3347, /* C47A (50298) */ + 3347, /* C47B (50299) */ + 3347, /* C47C (50300) */ + 3347, /* C47D (50301) */ + 3347, /* C47E (50302) */ + 3347, /* C47F (50303) */ + 3347, /* C480 (50304) */ + 3347, /* C481 (50305) */ + 3347, /* C482 (50306) */ + 3347, /* C483 (50307) */ + 3347, /* C484 (50308) */ + 3347, /* C485 (50309) */ + 3347, /* C486 (50310) */ + 3347, /* C487 (50311) */ + 3347, /* C488 (50312) */ + 3347, /* C489 (50313) */ + 3347, /* C48A (50314) */ + 3347, /* C48B (50315) */ + 3347, /* C48C (50316) */ + 3347, /* C48D (50317) */ + 3347, /* C48E (50318) */ + 3347, /* C48F (50319) */ + 3347, /* C490 (50320) */ + 3347, /* C491 (50321) */ + 3347, /* C492 (50322) */ + 3347, /* C493 (50323) */ + 3347, /* C494 (50324) */ + 3347, /* C495 (50325) */ + 3347, /* C496 (50326) */ + 3347, /* C497 (50327) */ + 3347, /* C498 (50328) */ + 3347, /* C499 (50329) */ + 3347, /* C49A (50330) */ + 3347, /* C49B (50331) */ + 3347, /* C49C (50332) */ + 3347, /* C49D (50333) */ + 3347, /* C49E (50334) */ + 3347, /* C49F (50335) */ + 3347, /* C4A0 (50336) */ + 3347, /* C4A1 (50337) */ + 3347, /* C4A2 (50338) */ + 3347, /* C4A3 (50339) */ + 3347, /* C4A4 (50340) */ + 3347, /* C4A5 (50341) */ + 3347, /* C4A6 (50342) */ + 3347, /* C4A7 (50343) */ + 3347, /* C4A8 (50344) */ + 3347, /* C4A9 (50345) */ + 3347, /* C4AA (50346) */ + 3347, /* C4AB (50347) */ + 3347, /* C4AC (50348) */ + 3347, /* C4AD (50349) */ + 3347, /* C4AE (50350) */ + 3347, /* C4AF (50351) */ + 3347, /* C4B0 (50352) */ + 3347, /* C4B1 (50353) */ + 3347, /* C4B2 (50354) */ + 3347, /* C4B3 (50355) */ + 3347, /* C4B4 (50356) */ + 3347, /* C4B5 (50357) */ + 3347, /* C4B6 (50358) */ + 3347, /* C4B7 (50359) */ + 3347, /* C4B8 (50360) */ + 3347, /* C4B9 (50361) */ + 3347, /* C4BA (50362) */ + 3347, /* C4BB (50363) */ + 3347, /* C4BC (50364) */ + 3347, /* C4BD (50365) */ + 3347, /* C4BE (50366) */ + 3347, /* C4BF (50367) */ + 3347, /* C4C0 (50368) */ + 3347, /* C4C1 (50369) */ + 3347, /* C4C2 (50370) */ + 3347, /* C4C3 (50371) */ + 3347, /* C4C4 (50372) */ + 3347, /* C4C5 (50373) */ + 3347, /* C4C6 (50374) */ + 3347, /* C4C7 (50375) */ + 3347, /* C4C8 (50376) */ + 3347, /* C4C9 (50377) */ + 3347, /* C4CA (50378) */ + 3347, /* C4CB (50379) */ + 3347, /* C4CC (50380) */ + 3347, /* C4CD (50381) */ + 3347, /* C4CE (50382) */ + 3347, /* C4CF (50383) */ + 3347, /* C4D0 (50384) */ + 3347, /* C4D1 (50385) */ + 3347, /* C4D2 (50386) */ + 3347, /* C4D3 (50387) */ + 3347, /* C4D4 (50388) */ + 3347, /* C4D5 (50389) */ + 3347, /* C4D6 (50390) */ + 3347, /* C4D7 (50391) */ + 3347, /* C4D8 (50392) */ + 3347, /* C4D9 (50393) */ + 3347, /* C4DA (50394) */ + 3347, /* C4DB (50395) */ + 3347, /* C4DC (50396) */ + 3347, /* C4DD (50397) */ + 3347, /* C4DE (50398) */ + 3347, /* C4DF (50399) */ + 3347, /* C4E0 (50400) */ + 3347, /* C4E1 (50401) */ + 3347, /* C4E2 (50402) */ + 3347, /* C4E3 (50403) */ + 3347, /* C4E4 (50404) */ + 3347, /* C4E5 (50405) */ + 3347, /* C4E6 (50406) */ + 3347, /* C4E7 (50407) */ + 3347, /* C4E8 (50408) */ + 3347, /* C4E9 (50409) */ + 3347, /* C4EA (50410) */ + 3347, /* C4EB (50411) */ + 3347, /* C4EC (50412) */ + 3347, /* C4ED (50413) */ + 3347, /* C4EE (50414) */ + 3347, /* C4EF (50415) */ + 3347, /* C4F0 (50416) */ + 3347, /* C4F1 (50417) */ + 3347, /* C4F2 (50418) */ + 3347, /* C4F3 (50419) */ + 3347, /* C4F4 (50420) */ + 3347, /* C4F5 (50421) */ + 3347, /* C4F6 (50422) */ + 3347, /* C4F7 (50423) */ + 3347, /* C4F8 (50424) */ + 3347, /* C4F9 (50425) */ + 3347, /* C4FA (50426) */ + 3347, /* C4FB (50427) */ + 3347, /* C4FC (50428) */ + 3347, /* C4FD (50429) */ + 3347, /* C4FE (50430) */ + 3347, /* C4FF (50431) */ + 3347, /* C500 (50432) */ + 3347, /* C501 (50433) */ + 3347, /* C502 (50434) */ + 3347, /* C503 (50435) */ + 3347, /* C504 (50436) */ + 3347, /* C505 (50437) */ + 3347, /* C506 (50438) */ + 3347, /* C507 (50439) */ + 3347, /* C508 (50440) */ + 3347, /* C509 (50441) */ + 3347, /* C50A (50442) */ + 3347, /* C50B (50443) */ + 3347, /* C50C (50444) */ + 3347, /* C50D (50445) */ + 3347, /* C50E (50446) */ + 3347, /* C50F (50447) */ + 3347, /* C510 (50448) */ + 3347, /* C511 (50449) */ + 3347, /* C512 (50450) */ + 3347, /* C513 (50451) */ + 3347, /* C514 (50452) */ + 3347, /* C515 (50453) */ + 3347, /* C516 (50454) */ + 3347, /* C517 (50455) */ + 3347, /* C518 (50456) */ + 3347, /* C519 (50457) */ + 3347, /* C51A (50458) */ + 3347, /* C51B (50459) */ + 3347, /* C51C (50460) */ + 3347, /* C51D (50461) */ + 3347, /* C51E (50462) */ + 3347, /* C51F (50463) */ + 3347, /* C520 (50464) */ + 3347, /* C521 (50465) */ + 3347, /* C522 (50466) */ + 3347, /* C523 (50467) */ + 3347, /* C524 (50468) */ + 3347, /* C525 (50469) */ + 3347, /* C526 (50470) */ + 3347, /* C527 (50471) */ + 3347, /* C528 (50472) */ + 3347, /* C529 (50473) */ + 3347, /* C52A (50474) */ + 3347, /* C52B (50475) */ + 3347, /* C52C (50476) */ + 3347, /* C52D (50477) */ + 3347, /* C52E (50478) */ + 3347, /* C52F (50479) */ + 3347, /* C530 (50480) */ + 3347, /* C531 (50481) */ + 3347, /* C532 (50482) */ + 3347, /* C533 (50483) */ + 3347, /* C534 (50484) */ + 3347, /* C535 (50485) */ + 3347, /* C536 (50486) */ + 3347, /* C537 (50487) */ + 3347, /* C538 (50488) */ + 3347, /* C539 (50489) */ + 3347, /* C53A (50490) */ + 3347, /* C53B (50491) */ + 3347, /* C53C (50492) */ + 3347, /* C53D (50493) */ + 3347, /* C53E (50494) */ + 3347, /* C53F (50495) */ + 3347, /* C540 (50496) */ + 3347, /* C541 (50497) */ + 3347, /* C542 (50498) */ + 3347, /* C543 (50499) */ + 3347, /* C544 (50500) */ + 3347, /* C545 (50501) */ + 3347, /* C546 (50502) */ + 3347, /* C547 (50503) */ + 3347, /* C548 (50504) */ + 3347, /* C549 (50505) */ + 3347, /* C54A (50506) */ + 3347, /* C54B (50507) */ + 3347, /* C54C (50508) */ + 3347, /* C54D (50509) */ + 3347, /* C54E (50510) */ + 3347, /* C54F (50511) */ + 3347, /* C550 (50512) */ + 3347, /* C551 (50513) */ + 3347, /* C552 (50514) */ + 3347, /* C553 (50515) */ + 3347, /* C554 (50516) */ + 3347, /* C555 (50517) */ + 3347, /* C556 (50518) */ + 3347, /* C557 (50519) */ + 3347, /* C558 (50520) */ + 3347, /* C559 (50521) */ + 3347, /* C55A (50522) */ + 3347, /* C55B (50523) */ + 3347, /* C55C (50524) */ + 3347, /* C55D (50525) */ + 3347, /* C55E (50526) */ + 3347, /* C55F (50527) */ + 3347, /* C560 (50528) */ + 3347, /* C561 (50529) */ + 3347, /* C562 (50530) */ + 3347, /* C563 (50531) */ + 3347, /* C564 (50532) */ + 3347, /* C565 (50533) */ + 3347, /* C566 (50534) */ + 3347, /* C567 (50535) */ + 3347, /* C568 (50536) */ + 3347, /* C569 (50537) */ + 3347, /* C56A (50538) */ + 3347, /* C56B (50539) */ + 3347, /* C56C (50540) */ + 3347, /* C56D (50541) */ + 3347, /* C56E (50542) */ + 3347, /* C56F (50543) */ + 3347, /* C570 (50544) */ + 3347, /* C571 (50545) */ + 3347, /* C572 (50546) */ + 3347, /* C573 (50547) */ + 3347, /* C574 (50548) */ + 3347, /* C575 (50549) */ + 3347, /* C576 (50550) */ + 3347, /* C577 (50551) */ + 3347, /* C578 (50552) */ + 3347, /* C579 (50553) */ + 3347, /* C57A (50554) */ + 3347, /* C57B (50555) */ + 3347, /* C57C (50556) */ + 3347, /* C57D (50557) */ + 3347, /* C57E (50558) */ + 3347, /* C57F (50559) */ + 3347, /* C580 (50560) */ + 3347, /* C581 (50561) */ + 3347, /* C582 (50562) */ + 3347, /* C583 (50563) */ + 3347, /* C584 (50564) */ + 3347, /* C585 (50565) */ + 3347, /* C586 (50566) */ + 3347, /* C587 (50567) */ + 3347, /* C588 (50568) */ + 3347, /* C589 (50569) */ + 3347, /* C58A (50570) */ + 3347, /* C58B (50571) */ + 3347, /* C58C (50572) */ + 3347, /* C58D (50573) */ + 3347, /* C58E (50574) */ + 3347, /* C58F (50575) */ + 3347, /* C590 (50576) */ + 3347, /* C591 (50577) */ + 3347, /* C592 (50578) */ + 3347, /* C593 (50579) */ + 3347, /* C594 (50580) */ + 3347, /* C595 (50581) */ + 3347, /* C596 (50582) */ + 3347, /* C597 (50583) */ + 3347, /* C598 (50584) */ + 3347, /* C599 (50585) */ + 3347, /* C59A (50586) */ + 3347, /* C59B (50587) */ + 3347, /* C59C (50588) */ + 3347, /* C59D (50589) */ + 3347, /* C59E (50590) */ + 3347, /* C59F (50591) */ + 3347, /* C5A0 (50592) */ + 3347, /* C5A1 (50593) */ + 3347, /* C5A2 (50594) */ + 3347, /* C5A3 (50595) */ + 3347, /* C5A4 (50596) */ + 3347, /* C5A5 (50597) */ + 3347, /* C5A6 (50598) */ + 3347, /* C5A7 (50599) */ + 3347, /* C5A8 (50600) */ + 3347, /* C5A9 (50601) */ + 3347, /* C5AA (50602) */ + 3347, /* C5AB (50603) */ + 3347, /* C5AC (50604) */ + 3347, /* C5AD (50605) */ + 3347, /* C5AE (50606) */ + 3347, /* C5AF (50607) */ + 3347, /* C5B0 (50608) */ + 3347, /* C5B1 (50609) */ + 3347, /* C5B2 (50610) */ + 3347, /* C5B3 (50611) */ + 3347, /* C5B4 (50612) */ + 3347, /* C5B5 (50613) */ + 3347, /* C5B6 (50614) */ + 3347, /* C5B7 (50615) */ + 3347, /* C5B8 (50616) */ + 3347, /* C5B9 (50617) */ + 3347, /* C5BA (50618) */ + 3347, /* C5BB (50619) */ + 3347, /* C5BC (50620) */ + 3347, /* C5BD (50621) */ + 3347, /* C5BE (50622) */ + 3347, /* C5BF (50623) */ + 3347, /* C5C0 (50624) */ + 3347, /* C5C1 (50625) */ + 3347, /* C5C2 (50626) */ + 3347, /* C5C3 (50627) */ + 3347, /* C5C4 (50628) */ + 3347, /* C5C5 (50629) */ + 3347, /* C5C6 (50630) */ + 3347, /* C5C7 (50631) */ + 3347, /* C5C8 (50632) */ + 3347, /* C5C9 (50633) */ + 3347, /* C5CA (50634) */ + 3347, /* C5CB (50635) */ + 3347, /* C5CC (50636) */ + 3347, /* C5CD (50637) */ + 3347, /* C5CE (50638) */ + 3347, /* C5CF (50639) */ + 3347, /* C5D0 (50640) */ + 3347, /* C5D1 (50641) */ + 3347, /* C5D2 (50642) */ + 3347, /* C5D3 (50643) */ + 3347, /* C5D4 (50644) */ + 3347, /* C5D5 (50645) */ + 3347, /* C5D6 (50646) */ + 3347, /* C5D7 (50647) */ + 3347, /* C5D8 (50648) */ + 3347, /* C5D9 (50649) */ + 3347, /* C5DA (50650) */ + 3347, /* C5DB (50651) */ + 3347, /* C5DC (50652) */ + 3347, /* C5DD (50653) */ + 3347, /* C5DE (50654) */ + 3347, /* C5DF (50655) */ + 3347, /* C5E0 (50656) */ + 3347, /* C5E1 (50657) */ + 3347, /* C5E2 (50658) */ + 3347, /* C5E3 (50659) */ + 3347, /* C5E4 (50660) */ + 3347, /* C5E5 (50661) */ + 3347, /* C5E6 (50662) */ + 3347, /* C5E7 (50663) */ + 3347, /* C5E8 (50664) */ + 3347, /* C5E9 (50665) */ + 3347, /* C5EA (50666) */ + 3347, /* C5EB (50667) */ + 3347, /* C5EC (50668) */ + 3347, /* C5ED (50669) */ + 3347, /* C5EE (50670) */ + 3347, /* C5EF (50671) */ + 3347, /* C5F0 (50672) */ + 3347, /* C5F1 (50673) */ + 3347, /* C5F2 (50674) */ + 3347, /* C5F3 (50675) */ + 3347, /* C5F4 (50676) */ + 3347, /* C5F5 (50677) */ + 3347, /* C5F6 (50678) */ + 3347, /* C5F7 (50679) */ + 3347, /* C5F8 (50680) */ + 3347, /* C5F9 (50681) */ + 3347, /* C5FA (50682) */ + 3347, /* C5FB (50683) */ + 3347, /* C5FC (50684) */ + 3347, /* C5FD (50685) */ + 3347, /* C5FE (50686) */ + 3347, /* C5FF (50687) */ + 3347, /* C600 (50688) */ + 3347, /* C601 (50689) */ + 3347, /* C602 (50690) */ + 3347, /* C603 (50691) */ + 3347, /* C604 (50692) */ + 3347, /* C605 (50693) */ + 3347, /* C606 (50694) */ + 3347, /* C607 (50695) */ + 3347, /* C608 (50696) */ + 3347, /* C609 (50697) */ + 3347, /* C60A (50698) */ + 3347, /* C60B (50699) */ + 3347, /* C60C (50700) */ + 3347, /* C60D (50701) */ + 3347, /* C60E (50702) */ + 3347, /* C60F (50703) */ + 3347, /* C610 (50704) */ + 3347, /* C611 (50705) */ + 3347, /* C612 (50706) */ + 3347, /* C613 (50707) */ + 3347, /* C614 (50708) */ + 3347, /* C615 (50709) */ + 3347, /* C616 (50710) */ + 3347, /* C617 (50711) */ + 3347, /* C618 (50712) */ + 3347, /* C619 (50713) */ + 3347, /* C61A (50714) */ + 3347, /* C61B (50715) */ + 3347, /* C61C (50716) */ + 3347, /* C61D (50717) */ + 3347, /* C61E (50718) */ + 3347, /* C61F (50719) */ + 3347, /* C620 (50720) */ + 3347, /* C621 (50721) */ + 3347, /* C622 (50722) */ + 3347, /* C623 (50723) */ + 3347, /* C624 (50724) */ + 3347, /* C625 (50725) */ + 3347, /* C626 (50726) */ + 3347, /* C627 (50727) */ + 3347, /* C628 (50728) */ + 3347, /* C629 (50729) */ + 3347, /* C62A (50730) */ + 3347, /* C62B (50731) */ + 3347, /* C62C (50732) */ + 3347, /* C62D (50733) */ + 3347, /* C62E (50734) */ + 3347, /* C62F (50735) */ + 3347, /* C630 (50736) */ + 3347, /* C631 (50737) */ + 3347, /* C632 (50738) */ + 3347, /* C633 (50739) */ + 3347, /* C634 (50740) */ + 3347, /* C635 (50741) */ + 3347, /* C636 (50742) */ + 3347, /* C637 (50743) */ + 3347, /* C638 (50744) */ + 3347, /* C639 (50745) */ + 3347, /* C63A (50746) */ + 3347, /* C63B (50747) */ + 3347, /* C63C (50748) */ + 3347, /* C63D (50749) */ + 3347, /* C63E (50750) */ + 3347, /* C63F (50751) */ + 3347, /* C640 (50752) */ + 3347, /* C641 (50753) */ + 3347, /* C642 (50754) */ + 3347, /* C643 (50755) */ + 3347, /* C644 (50756) */ + 3347, /* C645 (50757) */ + 3347, /* C646 (50758) */ + 3347, /* C647 (50759) */ + 3347, /* C648 (50760) */ + 3347, /* C649 (50761) */ + 3347, /* C64A (50762) */ + 3347, /* C64B (50763) */ + 3347, /* C64C (50764) */ + 3347, /* C64D (50765) */ + 3347, /* C64E (50766) */ + 3347, /* C64F (50767) */ + 3347, /* C650 (50768) */ + 3347, /* C651 (50769) */ + 3347, /* C652 (50770) */ + 3347, /* C653 (50771) */ + 3347, /* C654 (50772) */ + 3347, /* C655 (50773) */ + 3347, /* C656 (50774) */ + 3347, /* C657 (50775) */ + 3347, /* C658 (50776) */ + 3347, /* C659 (50777) */ + 3347, /* C65A (50778) */ + 3347, /* C65B (50779) */ + 3347, /* C65C (50780) */ + 3347, /* C65D (50781) */ + 3347, /* C65E (50782) */ + 3347, /* C65F (50783) */ + 3347, /* C660 (50784) */ + 3347, /* C661 (50785) */ + 3347, /* C662 (50786) */ + 3347, /* C663 (50787) */ + 3347, /* C664 (50788) */ + 3347, /* C665 (50789) */ + 3347, /* C666 (50790) */ + 3347, /* C667 (50791) */ + 3347, /* C668 (50792) */ + 3347, /* C669 (50793) */ + 3347, /* C66A (50794) */ + 3347, /* C66B (50795) */ + 3347, /* C66C (50796) */ + 3347, /* C66D (50797) */ + 3347, /* C66E (50798) */ + 3347, /* C66F (50799) */ + 3347, /* C670 (50800) */ + 3347, /* C671 (50801) */ + 3347, /* C672 (50802) */ + 3347, /* C673 (50803) */ + 3347, /* C674 (50804) */ + 3347, /* C675 (50805) */ + 3347, /* C676 (50806) */ + 3347, /* C677 (50807) */ + 3347, /* C678 (50808) */ + 3347, /* C679 (50809) */ + 3347, /* C67A (50810) */ + 3347, /* C67B (50811) */ + 3347, /* C67C (50812) */ + 3347, /* C67D (50813) */ + 3347, /* C67E (50814) */ + 3347, /* C67F (50815) */ + 3347, /* C680 (50816) */ + 3347, /* C681 (50817) */ + 3347, /* C682 (50818) */ + 3347, /* C683 (50819) */ + 3347, /* C684 (50820) */ + 3347, /* C685 (50821) */ + 3347, /* C686 (50822) */ + 3347, /* C687 (50823) */ + 3347, /* C688 (50824) */ + 3347, /* C689 (50825) */ + 3347, /* C68A (50826) */ + 3347, /* C68B (50827) */ + 3347, /* C68C (50828) */ + 3347, /* C68D (50829) */ + 3347, /* C68E (50830) */ + 3347, /* C68F (50831) */ + 3347, /* C690 (50832) */ + 3347, /* C691 (50833) */ + 3347, /* C692 (50834) */ + 3347, /* C693 (50835) */ + 3347, /* C694 (50836) */ + 3347, /* C695 (50837) */ + 3347, /* C696 (50838) */ + 3347, /* C697 (50839) */ + 3347, /* C698 (50840) */ + 3347, /* C699 (50841) */ + 3347, /* C69A (50842) */ + 3347, /* C69B (50843) */ + 3347, /* C69C (50844) */ + 3347, /* C69D (50845) */ + 3347, /* C69E (50846) */ + 3347, /* C69F (50847) */ + 3347, /* C6A0 (50848) */ + 3347, /* C6A1 (50849) */ + 3347, /* C6A2 (50850) */ + 3347, /* C6A3 (50851) */ + 3347, /* C6A4 (50852) */ + 3347, /* C6A5 (50853) */ + 3347, /* C6A6 (50854) */ + 3347, /* C6A7 (50855) */ + 3347, /* C6A8 (50856) */ + 3347, /* C6A9 (50857) */ + 3347, /* C6AA (50858) */ + 3347, /* C6AB (50859) */ + 3347, /* C6AC (50860) */ + 3347, /* C6AD (50861) */ + 3347, /* C6AE (50862) */ + 3347, /* C6AF (50863) */ + 3347, /* C6B0 (50864) */ + 3347, /* C6B1 (50865) */ + 3347, /* C6B2 (50866) */ + 3347, /* C6B3 (50867) */ + 3347, /* C6B4 (50868) */ + 3347, /* C6B5 (50869) */ + 3347, /* C6B6 (50870) */ + 3347, /* C6B7 (50871) */ + 3347, /* C6B8 (50872) */ + 3347, /* C6B9 (50873) */ + 3347, /* C6BA (50874) */ + 3347, /* C6BB (50875) */ + 3347, /* C6BC (50876) */ + 3347, /* C6BD (50877) */ + 3347, /* C6BE (50878) */ + 3347, /* C6BF (50879) */ + 3347, /* C6C0 (50880) */ + 3347, /* C6C1 (50881) */ + 3347, /* C6C2 (50882) */ + 3347, /* C6C3 (50883) */ + 3347, /* C6C4 (50884) */ + 3347, /* C6C5 (50885) */ + 3347, /* C6C6 (50886) */ + 3347, /* C6C7 (50887) */ + 3347, /* C6C8 (50888) */ + 3347, /* C6C9 (50889) */ + 3347, /* C6CA (50890) */ + 3347, /* C6CB (50891) */ + 3347, /* C6CC (50892) */ + 3347, /* C6CD (50893) */ + 3347, /* C6CE (50894) */ + 3347, /* C6CF (50895) */ + 3347, /* C6D0 (50896) */ + 3347, /* C6D1 (50897) */ + 3347, /* C6D2 (50898) */ + 3347, /* C6D3 (50899) */ + 3347, /* C6D4 (50900) */ + 3347, /* C6D5 (50901) */ + 3347, /* C6D6 (50902) */ + 3347, /* C6D7 (50903) */ + 3347, /* C6D8 (50904) */ + 3347, /* C6D9 (50905) */ + 3347, /* C6DA (50906) */ + 3347, /* C6DB (50907) */ + 3347, /* C6DC (50908) */ + 3347, /* C6DD (50909) */ + 3347, /* C6DE (50910) */ + 3347, /* C6DF (50911) */ + 3347, /* C6E0 (50912) */ + 3347, /* C6E1 (50913) */ + 3347, /* C6E2 (50914) */ + 3347, /* C6E3 (50915) */ + 3347, /* C6E4 (50916) */ + 3347, /* C6E5 (50917) */ + 3347, /* C6E6 (50918) */ + 3347, /* C6E7 (50919) */ + 3347, /* C6E8 (50920) */ + 3347, /* C6E9 (50921) */ + 3347, /* C6EA (50922) */ + 3347, /* C6EB (50923) */ + 3347, /* C6EC (50924) */ + 3347, /* C6ED (50925) */ + 3347, /* C6EE (50926) */ + 3347, /* C6EF (50927) */ + 3347, /* C6F0 (50928) */ + 3347, /* C6F1 (50929) */ + 3347, /* C6F2 (50930) */ + 3347, /* C6F3 (50931) */ + 3347, /* C6F4 (50932) */ + 3347, /* C6F5 (50933) */ + 3347, /* C6F6 (50934) */ + 3347, /* C6F7 (50935) */ + 3347, /* C6F8 (50936) */ + 3347, /* C6F9 (50937) */ + 3347, /* C6FA (50938) */ + 3347, /* C6FB (50939) */ + 3347, /* C6FC (50940) */ + 3347, /* C6FD (50941) */ + 3347, /* C6FE (50942) */ + 3347, /* C6FF (50943) */ + 3347, /* C700 (50944) */ + 3347, /* C701 (50945) */ + 3347, /* C702 (50946) */ + 3347, /* C703 (50947) */ + 3347, /* C704 (50948) */ + 3347, /* C705 (50949) */ + 3347, /* C706 (50950) */ + 3347, /* C707 (50951) */ + 3347, /* C708 (50952) */ + 3347, /* C709 (50953) */ + 3347, /* C70A (50954) */ + 3347, /* C70B (50955) */ + 3347, /* C70C (50956) */ + 3347, /* C70D (50957) */ + 3347, /* C70E (50958) */ + 3347, /* C70F (50959) */ + 3347, /* C710 (50960) */ + 3347, /* C711 (50961) */ + 3347, /* C712 (50962) */ + 3347, /* C713 (50963) */ + 3347, /* C714 (50964) */ + 3347, /* C715 (50965) */ + 3347, /* C716 (50966) */ + 3347, /* C717 (50967) */ + 3347, /* C718 (50968) */ + 3347, /* C719 (50969) */ + 3347, /* C71A (50970) */ + 3347, /* C71B (50971) */ + 3347, /* C71C (50972) */ + 3347, /* C71D (50973) */ + 3347, /* C71E (50974) */ + 3347, /* C71F (50975) */ + 3347, /* C720 (50976) */ + 3347, /* C721 (50977) */ + 3347, /* C722 (50978) */ + 3347, /* C723 (50979) */ + 3347, /* C724 (50980) */ + 3347, /* C725 (50981) */ + 3347, /* C726 (50982) */ + 3347, /* C727 (50983) */ + 3347, /* C728 (50984) */ + 3347, /* C729 (50985) */ + 3347, /* C72A (50986) */ + 3347, /* C72B (50987) */ + 3347, /* C72C (50988) */ + 3347, /* C72D (50989) */ + 3347, /* C72E (50990) */ + 3347, /* C72F (50991) */ + 3347, /* C730 (50992) */ + 3347, /* C731 (50993) */ + 3347, /* C732 (50994) */ + 3347, /* C733 (50995) */ + 3347, /* C734 (50996) */ + 3347, /* C735 (50997) */ + 3347, /* C736 (50998) */ + 3347, /* C737 (50999) */ + 3347, /* C738 (51000) */ + 3347, /* C739 (51001) */ + 3347, /* C73A (51002) */ + 3347, /* C73B (51003) */ + 3347, /* C73C (51004) */ + 3347, /* C73D (51005) */ + 3347, /* C73E (51006) */ + 3347, /* C73F (51007) */ + 3347, /* C740 (51008) */ + 3347, /* C741 (51009) */ + 3347, /* C742 (51010) */ + 3347, /* C743 (51011) */ + 3347, /* C744 (51012) */ + 3347, /* C745 (51013) */ + 3347, /* C746 (51014) */ + 3347, /* C747 (51015) */ + 3347, /* C748 (51016) */ + 3347, /* C749 (51017) */ + 3347, /* C74A (51018) */ + 3347, /* C74B (51019) */ + 3347, /* C74C (51020) */ + 3347, /* C74D (51021) */ + 3347, /* C74E (51022) */ + 3347, /* C74F (51023) */ + 3347, /* C750 (51024) */ + 3347, /* C751 (51025) */ + 3347, /* C752 (51026) */ + 3347, /* C753 (51027) */ + 3347, /* C754 (51028) */ + 3347, /* C755 (51029) */ + 3347, /* C756 (51030) */ + 3347, /* C757 (51031) */ + 3347, /* C758 (51032) */ + 3347, /* C759 (51033) */ + 3347, /* C75A (51034) */ + 3347, /* C75B (51035) */ + 3347, /* C75C (51036) */ + 3347, /* C75D (51037) */ + 3347, /* C75E (51038) */ + 3347, /* C75F (51039) */ + 3347, /* C760 (51040) */ + 3347, /* C761 (51041) */ + 3347, /* C762 (51042) */ + 3347, /* C763 (51043) */ + 3347, /* C764 (51044) */ + 3347, /* C765 (51045) */ + 3347, /* C766 (51046) */ + 3347, /* C767 (51047) */ + 3347, /* C768 (51048) */ + 3347, /* C769 (51049) */ + 3347, /* C76A (51050) */ + 3347, /* C76B (51051) */ + 3347, /* C76C (51052) */ + 3347, /* C76D (51053) */ + 3347, /* C76E (51054) */ + 3347, /* C76F (51055) */ + 3347, /* C770 (51056) */ + 3347, /* C771 (51057) */ + 3347, /* C772 (51058) */ + 3347, /* C773 (51059) */ + 3347, /* C774 (51060) */ + 3347, /* C775 (51061) */ + 3347, /* C776 (51062) */ + 3347, /* C777 (51063) */ + 3347, /* C778 (51064) */ + 3347, /* C779 (51065) */ + 3347, /* C77A (51066) */ + 3347, /* C77B (51067) */ + 3347, /* C77C (51068) */ + 3347, /* C77D (51069) */ + 3347, /* C77E (51070) */ + 3347, /* C77F (51071) */ + 3347, /* C780 (51072) */ + 3347, /* C781 (51073) */ + 3347, /* C782 (51074) */ + 3347, /* C783 (51075) */ + 3347, /* C784 (51076) */ + 3347, /* C785 (51077) */ + 3347, /* C786 (51078) */ + 3347, /* C787 (51079) */ + 3347, /* C788 (51080) */ + 3347, /* C789 (51081) */ + 3347, /* C78A (51082) */ + 3347, /* C78B (51083) */ + 3347, /* C78C (51084) */ + 3347, /* C78D (51085) */ + 3347, /* C78E (51086) */ + 3347, /* C78F (51087) */ + 3347, /* C790 (51088) */ + 3347, /* C791 (51089) */ + 3347, /* C792 (51090) */ + 3347, /* C793 (51091) */ + 3347, /* C794 (51092) */ + 3347, /* C795 (51093) */ + 3347, /* C796 (51094) */ + 3347, /* C797 (51095) */ + 3347, /* C798 (51096) */ + 3347, /* C799 (51097) */ + 3347, /* C79A (51098) */ + 3347, /* C79B (51099) */ + 3347, /* C79C (51100) */ + 3347, /* C79D (51101) */ + 3347, /* C79E (51102) */ + 3347, /* C79F (51103) */ + 3347, /* C7A0 (51104) */ + 3347, /* C7A1 (51105) */ + 3347, /* C7A2 (51106) */ + 3347, /* C7A3 (51107) */ + 3347, /* C7A4 (51108) */ + 3347, /* C7A5 (51109) */ + 3347, /* C7A6 (51110) */ + 3347, /* C7A7 (51111) */ + 3347, /* C7A8 (51112) */ + 3347, /* C7A9 (51113) */ + 3347, /* C7AA (51114) */ + 3347, /* C7AB (51115) */ + 3347, /* C7AC (51116) */ + 3347, /* C7AD (51117) */ + 3347, /* C7AE (51118) */ + 3347, /* C7AF (51119) */ + 3347, /* C7B0 (51120) */ + 3347, /* C7B1 (51121) */ + 3347, /* C7B2 (51122) */ + 3347, /* C7B3 (51123) */ + 3347, /* C7B4 (51124) */ + 3347, /* C7B5 (51125) */ + 3347, /* C7B6 (51126) */ + 3347, /* C7B7 (51127) */ + 3347, /* C7B8 (51128) */ + 3347, /* C7B9 (51129) */ + 3347, /* C7BA (51130) */ + 3347, /* C7BB (51131) */ + 3347, /* C7BC (51132) */ + 3347, /* C7BD (51133) */ + 3347, /* C7BE (51134) */ + 3347, /* C7BF (51135) */ + 3347, /* C7C0 (51136) */ + 3347, /* C7C1 (51137) */ + 3347, /* C7C2 (51138) */ + 3347, /* C7C3 (51139) */ + 3347, /* C7C4 (51140) */ + 3347, /* C7C5 (51141) */ + 3347, /* C7C6 (51142) */ + 3347, /* C7C7 (51143) */ + 3347, /* C7C8 (51144) */ + 3347, /* C7C9 (51145) */ + 3347, /* C7CA (51146) */ + 3347, /* C7CB (51147) */ + 3347, /* C7CC (51148) */ + 3347, /* C7CD (51149) */ + 3347, /* C7CE (51150) */ + 3347, /* C7CF (51151) */ + 3347, /* C7D0 (51152) */ + 3347, /* C7D1 (51153) */ + 3347, /* C7D2 (51154) */ + 3347, /* C7D3 (51155) */ + 3347, /* C7D4 (51156) */ + 3347, /* C7D5 (51157) */ + 3347, /* C7D6 (51158) */ + 3347, /* C7D7 (51159) */ + 3347, /* C7D8 (51160) */ + 3347, /* C7D9 (51161) */ + 3347, /* C7DA (51162) */ + 3347, /* C7DB (51163) */ + 3347, /* C7DC (51164) */ + 3347, /* C7DD (51165) */ + 3347, /* C7DE (51166) */ + 3347, /* C7DF (51167) */ + 3347, /* C7E0 (51168) */ + 3347, /* C7E1 (51169) */ + 3347, /* C7E2 (51170) */ + 3347, /* C7E3 (51171) */ + 3347, /* C7E4 (51172) */ + 3347, /* C7E5 (51173) */ + 3347, /* C7E6 (51174) */ + 3347, /* C7E7 (51175) */ + 3347, /* C7E8 (51176) */ + 3347, /* C7E9 (51177) */ + 3347, /* C7EA (51178) */ + 3347, /* C7EB (51179) */ + 3347, /* C7EC (51180) */ + 3347, /* C7ED (51181) */ + 3347, /* C7EE (51182) */ + 3347, /* C7EF (51183) */ + 3347, /* C7F0 (51184) */ + 3347, /* C7F1 (51185) */ + 3347, /* C7F2 (51186) */ + 3347, /* C7F3 (51187) */ + 3347, /* C7F4 (51188) */ + 3347, /* C7F5 (51189) */ + 3347, /* C7F6 (51190) */ + 3347, /* C7F7 (51191) */ + 3347, /* C7F8 (51192) */ + 3347, /* C7F9 (51193) */ + 3347, /* C7FA (51194) */ + 3347, /* C7FB (51195) */ + 3347, /* C7FC (51196) */ + 3347, /* C7FD (51197) */ + 3347, /* C7FE (51198) */ + 3347, /* C7FF (51199) */ + 3347, /* C800 (51200) */ + 3347, /* C801 (51201) */ + 3347, /* C802 (51202) */ + 3347, /* C803 (51203) */ + 3347, /* C804 (51204) */ + 3347, /* C805 (51205) */ + 3347, /* C806 (51206) */ + 3347, /* C807 (51207) */ + 3347, /* C808 (51208) */ + 3347, /* C809 (51209) */ + 3347, /* C80A (51210) */ + 3347, /* C80B (51211) */ + 3347, /* C80C (51212) */ + 3347, /* C80D (51213) */ + 3347, /* C80E (51214) */ + 3347, /* C80F (51215) */ + 3347, /* C810 (51216) */ + 3347, /* C811 (51217) */ + 3347, /* C812 (51218) */ + 3347, /* C813 (51219) */ + 3347, /* C814 (51220) */ + 3347, /* C815 (51221) */ + 3347, /* C816 (51222) */ + 3347, /* C817 (51223) */ + 3347, /* C818 (51224) */ + 3347, /* C819 (51225) */ + 3347, /* C81A (51226) */ + 3347, /* C81B (51227) */ + 3347, /* C81C (51228) */ + 3347, /* C81D (51229) */ + 3347, /* C81E (51230) */ + 3347, /* C81F (51231) */ + 3347, /* C820 (51232) */ + 3347, /* C821 (51233) */ + 3347, /* C822 (51234) */ + 3347, /* C823 (51235) */ + 3347, /* C824 (51236) */ + 3347, /* C825 (51237) */ + 3347, /* C826 (51238) */ + 3347, /* C827 (51239) */ + 3347, /* C828 (51240) */ + 3347, /* C829 (51241) */ + 3347, /* C82A (51242) */ + 3347, /* C82B (51243) */ + 3347, /* C82C (51244) */ + 3347, /* C82D (51245) */ + 3347, /* C82E (51246) */ + 3347, /* C82F (51247) */ + 3347, /* C830 (51248) */ + 3347, /* C831 (51249) */ + 3347, /* C832 (51250) */ + 3347, /* C833 (51251) */ + 3347, /* C834 (51252) */ + 3347, /* C835 (51253) */ + 3347, /* C836 (51254) */ + 3347, /* C837 (51255) */ + 3347, /* C838 (51256) */ + 3347, /* C839 (51257) */ + 3347, /* C83A (51258) */ + 3347, /* C83B (51259) */ + 3347, /* C83C (51260) */ + 3347, /* C83D (51261) */ + 3347, /* C83E (51262) */ + 3347, /* C83F (51263) */ + 3347, /* C840 (51264) */ + 3347, /* C841 (51265) */ + 3347, /* C842 (51266) */ + 3347, /* C843 (51267) */ + 3347, /* C844 (51268) */ + 3347, /* C845 (51269) */ + 3347, /* C846 (51270) */ + 3347, /* C847 (51271) */ + 3347, /* C848 (51272) */ + 3347, /* C849 (51273) */ + 3347, /* C84A (51274) */ + 3347, /* C84B (51275) */ + 3347, /* C84C (51276) */ + 3347, /* C84D (51277) */ + 3347, /* C84E (51278) */ + 3347, /* C84F (51279) */ + 3347, /* C850 (51280) */ + 3347, /* C851 (51281) */ + 3347, /* C852 (51282) */ + 3347, /* C853 (51283) */ + 3347, /* C854 (51284) */ + 3347, /* C855 (51285) */ + 3347, /* C856 (51286) */ + 3347, /* C857 (51287) */ + 3347, /* C858 (51288) */ + 3347, /* C859 (51289) */ + 3347, /* C85A (51290) */ + 3347, /* C85B (51291) */ + 3347, /* C85C (51292) */ + 3347, /* C85D (51293) */ + 3347, /* C85E (51294) */ + 3347, /* C85F (51295) */ + 3347, /* C860 (51296) */ + 3347, /* C861 (51297) */ + 3347, /* C862 (51298) */ + 3347, /* C863 (51299) */ + 3347, /* C864 (51300) */ + 3347, /* C865 (51301) */ + 3347, /* C866 (51302) */ + 3347, /* C867 (51303) */ + 3347, /* C868 (51304) */ + 3347, /* C869 (51305) */ + 3347, /* C86A (51306) */ + 3347, /* C86B (51307) */ + 3347, /* C86C (51308) */ + 3347, /* C86D (51309) */ + 3347, /* C86E (51310) */ + 3347, /* C86F (51311) */ + 3347, /* C870 (51312) */ + 3347, /* C871 (51313) */ + 3347, /* C872 (51314) */ + 3347, /* C873 (51315) */ + 3347, /* C874 (51316) */ + 3347, /* C875 (51317) */ + 3347, /* C876 (51318) */ + 3347, /* C877 (51319) */ + 3347, /* C878 (51320) */ + 3347, /* C879 (51321) */ + 3347, /* C87A (51322) */ + 3347, /* C87B (51323) */ + 3347, /* C87C (51324) */ + 3347, /* C87D (51325) */ + 3347, /* C87E (51326) */ + 3347, /* C87F (51327) */ + 3347, /* C880 (51328) */ + 3347, /* C881 (51329) */ + 3347, /* C882 (51330) */ + 3347, /* C883 (51331) */ + 3347, /* C884 (51332) */ + 3347, /* C885 (51333) */ + 3347, /* C886 (51334) */ + 3347, /* C887 (51335) */ + 3347, /* C888 (51336) */ + 3347, /* C889 (51337) */ + 3347, /* C88A (51338) */ + 3347, /* C88B (51339) */ + 3347, /* C88C (51340) */ + 3347, /* C88D (51341) */ + 3347, /* C88E (51342) */ + 3347, /* C88F (51343) */ + 3347, /* C890 (51344) */ + 3347, /* C891 (51345) */ + 3347, /* C892 (51346) */ + 3347, /* C893 (51347) */ + 3347, /* C894 (51348) */ + 3347, /* C895 (51349) */ + 3347, /* C896 (51350) */ + 3347, /* C897 (51351) */ + 3347, /* C898 (51352) */ + 3347, /* C899 (51353) */ + 3347, /* C89A (51354) */ + 3347, /* C89B (51355) */ + 3347, /* C89C (51356) */ + 3347, /* C89D (51357) */ + 3347, /* C89E (51358) */ + 3347, /* C89F (51359) */ + 3347, /* C8A0 (51360) */ + 3347, /* C8A1 (51361) */ + 3347, /* C8A2 (51362) */ + 3347, /* C8A3 (51363) */ + 3347, /* C8A4 (51364) */ + 3347, /* C8A5 (51365) */ + 3347, /* C8A6 (51366) */ + 3347, /* C8A7 (51367) */ + 3347, /* C8A8 (51368) */ + 3347, /* C8A9 (51369) */ + 3347, /* C8AA (51370) */ + 3347, /* C8AB (51371) */ + 3347, /* C8AC (51372) */ + 3347, /* C8AD (51373) */ + 3347, /* C8AE (51374) */ + 3347, /* C8AF (51375) */ + 3347, /* C8B0 (51376) */ + 3347, /* C8B1 (51377) */ + 3347, /* C8B2 (51378) */ + 3347, /* C8B3 (51379) */ + 3347, /* C8B4 (51380) */ + 3347, /* C8B5 (51381) */ + 3347, /* C8B6 (51382) */ + 3347, /* C8B7 (51383) */ + 3347, /* C8B8 (51384) */ + 3347, /* C8B9 (51385) */ + 3347, /* C8BA (51386) */ + 3347, /* C8BB (51387) */ + 3347, /* C8BC (51388) */ + 3347, /* C8BD (51389) */ + 3347, /* C8BE (51390) */ + 3347, /* C8BF (51391) */ + 3347, /* C8C0 (51392) */ + 3347, /* C8C1 (51393) */ + 3347, /* C8C2 (51394) */ + 3347, /* C8C3 (51395) */ + 3347, /* C8C4 (51396) */ + 3347, /* C8C5 (51397) */ + 3347, /* C8C6 (51398) */ + 3347, /* C8C7 (51399) */ + 3347, /* C8C8 (51400) */ + 3347, /* C8C9 (51401) */ + 3347, /* C8CA (51402) */ + 3347, /* C8CB (51403) */ + 3347, /* C8CC (51404) */ + 3347, /* C8CD (51405) */ + 3347, /* C8CE (51406) */ + 3347, /* C8CF (51407) */ + 3347, /* C8D0 (51408) */ + 3347, /* C8D1 (51409) */ + 3347, /* C8D2 (51410) */ + 3347, /* C8D3 (51411) */ + 3347, /* C8D4 (51412) */ + 3347, /* C8D5 (51413) */ + 3347, /* C8D6 (51414) */ + 3347, /* C8D7 (51415) */ + 3347, /* C8D8 (51416) */ + 3347, /* C8D9 (51417) */ + 3347, /* C8DA (51418) */ + 3347, /* C8DB (51419) */ + 3347, /* C8DC (51420) */ + 3347, /* C8DD (51421) */ + 3347, /* C8DE (51422) */ + 3347, /* C8DF (51423) */ + 3347, /* C8E0 (51424) */ + 3347, /* C8E1 (51425) */ + 3347, /* C8E2 (51426) */ + 3347, /* C8E3 (51427) */ + 3347, /* C8E4 (51428) */ + 3347, /* C8E5 (51429) */ + 3347, /* C8E6 (51430) */ + 3347, /* C8E7 (51431) */ + 3347, /* C8E8 (51432) */ + 3347, /* C8E9 (51433) */ + 3347, /* C8EA (51434) */ + 3347, /* C8EB (51435) */ + 3347, /* C8EC (51436) */ + 3347, /* C8ED (51437) */ + 3347, /* C8EE (51438) */ + 3347, /* C8EF (51439) */ + 3347, /* C8F0 (51440) */ + 3347, /* C8F1 (51441) */ + 3347, /* C8F2 (51442) */ + 3347, /* C8F3 (51443) */ + 3347, /* C8F4 (51444) */ + 3347, /* C8F5 (51445) */ + 3347, /* C8F6 (51446) */ + 3347, /* C8F7 (51447) */ + 3347, /* C8F8 (51448) */ + 3347, /* C8F9 (51449) */ + 3347, /* C8FA (51450) */ + 3347, /* C8FB (51451) */ + 3347, /* C8FC (51452) */ + 3347, /* C8FD (51453) */ + 3347, /* C8FE (51454) */ + 3347, /* C8FF (51455) */ + 3347, /* C900 (51456) */ + 3347, /* C901 (51457) */ + 3347, /* C902 (51458) */ + 3347, /* C903 (51459) */ + 3347, /* C904 (51460) */ + 3347, /* C905 (51461) */ + 3347, /* C906 (51462) */ + 3347, /* C907 (51463) */ + 3347, /* C908 (51464) */ + 3347, /* C909 (51465) */ + 3347, /* C90A (51466) */ + 3347, /* C90B (51467) */ + 3347, /* C90C (51468) */ + 3347, /* C90D (51469) */ + 3347, /* C90E (51470) */ + 3347, /* C90F (51471) */ + 3347, /* C910 (51472) */ + 3347, /* C911 (51473) */ + 3347, /* C912 (51474) */ + 3347, /* C913 (51475) */ + 3347, /* C914 (51476) */ + 3347, /* C915 (51477) */ + 3347, /* C916 (51478) */ + 3347, /* C917 (51479) */ + 3347, /* C918 (51480) */ + 3347, /* C919 (51481) */ + 3347, /* C91A (51482) */ + 3347, /* C91B (51483) */ + 3347, /* C91C (51484) */ + 3347, /* C91D (51485) */ + 3347, /* C91E (51486) */ + 3347, /* C91F (51487) */ + 3347, /* C920 (51488) */ + 3347, /* C921 (51489) */ + 3347, /* C922 (51490) */ + 3347, /* C923 (51491) */ + 3347, /* C924 (51492) */ + 3347, /* C925 (51493) */ + 3347, /* C926 (51494) */ + 3347, /* C927 (51495) */ + 3347, /* C928 (51496) */ + 3347, /* C929 (51497) */ + 3347, /* C92A (51498) */ + 3347, /* C92B (51499) */ + 3347, /* C92C (51500) */ + 3347, /* C92D (51501) */ + 3347, /* C92E (51502) */ + 3347, /* C92F (51503) */ + 3347, /* C930 (51504) */ + 3347, /* C931 (51505) */ + 3347, /* C932 (51506) */ + 3347, /* C933 (51507) */ + 3347, /* C934 (51508) */ + 3347, /* C935 (51509) */ + 3347, /* C936 (51510) */ + 3347, /* C937 (51511) */ + 3347, /* C938 (51512) */ + 3347, /* C939 (51513) */ + 3347, /* C93A (51514) */ + 3347, /* C93B (51515) */ + 3347, /* C93C (51516) */ + 3347, /* C93D (51517) */ + 3347, /* C93E (51518) */ + 3347, /* C93F (51519) */ + 3347, /* C940 (51520) */ + 3347, /* C941 (51521) */ + 3347, /* C942 (51522) */ + 3347, /* C943 (51523) */ + 3347, /* C944 (51524) */ + 3347, /* C945 (51525) */ + 3347, /* C946 (51526) */ + 3347, /* C947 (51527) */ + 3347, /* C948 (51528) */ + 3347, /* C949 (51529) */ + 3347, /* C94A (51530) */ + 3347, /* C94B (51531) */ + 3347, /* C94C (51532) */ + 3347, /* C94D (51533) */ + 3347, /* C94E (51534) */ + 3347, /* C94F (51535) */ + 3347, /* C950 (51536) */ + 3347, /* C951 (51537) */ + 3347, /* C952 (51538) */ + 3347, /* C953 (51539) */ + 3347, /* C954 (51540) */ + 3347, /* C955 (51541) */ + 3347, /* C956 (51542) */ + 3347, /* C957 (51543) */ + 3347, /* C958 (51544) */ + 3347, /* C959 (51545) */ + 3347, /* C95A (51546) */ + 3347, /* C95B (51547) */ + 3347, /* C95C (51548) */ + 3347, /* C95D (51549) */ + 3347, /* C95E (51550) */ + 3347, /* C95F (51551) */ + 3347, /* C960 (51552) */ + 3347, /* C961 (51553) */ + 3347, /* C962 (51554) */ + 3347, /* C963 (51555) */ + 3347, /* C964 (51556) */ + 3347, /* C965 (51557) */ + 3347, /* C966 (51558) */ + 3347, /* C967 (51559) */ + 3347, /* C968 (51560) */ + 3347, /* C969 (51561) */ + 3347, /* C96A (51562) */ + 3347, /* C96B (51563) */ + 3347, /* C96C (51564) */ + 3347, /* C96D (51565) */ + 3347, /* C96E (51566) */ + 3347, /* C96F (51567) */ + 3347, /* C970 (51568) */ + 3347, /* C971 (51569) */ + 3347, /* C972 (51570) */ + 3347, /* C973 (51571) */ + 3347, /* C974 (51572) */ + 3347, /* C975 (51573) */ + 3347, /* C976 (51574) */ + 3347, /* C977 (51575) */ + 3347, /* C978 (51576) */ + 3347, /* C979 (51577) */ + 3347, /* C97A (51578) */ + 3347, /* C97B (51579) */ + 3347, /* C97C (51580) */ + 3347, /* C97D (51581) */ + 3347, /* C97E (51582) */ + 3347, /* C97F (51583) */ + 3347, /* C980 (51584) */ + 3347, /* C981 (51585) */ + 3347, /* C982 (51586) */ + 3347, /* C983 (51587) */ + 3347, /* C984 (51588) */ + 3347, /* C985 (51589) */ + 3347, /* C986 (51590) */ + 3347, /* C987 (51591) */ + 3347, /* C988 (51592) */ + 3347, /* C989 (51593) */ + 3347, /* C98A (51594) */ + 3347, /* C98B (51595) */ + 3347, /* C98C (51596) */ + 3347, /* C98D (51597) */ + 3347, /* C98E (51598) */ + 3347, /* C98F (51599) */ + 3347, /* C990 (51600) */ + 3347, /* C991 (51601) */ + 3347, /* C992 (51602) */ + 3347, /* C993 (51603) */ + 3347, /* C994 (51604) */ + 3347, /* C995 (51605) */ + 3347, /* C996 (51606) */ + 3347, /* C997 (51607) */ + 3347, /* C998 (51608) */ + 3347, /* C999 (51609) */ + 3347, /* C99A (51610) */ + 3347, /* C99B (51611) */ + 3347, /* C99C (51612) */ + 3347, /* C99D (51613) */ + 3347, /* C99E (51614) */ + 3347, /* C99F (51615) */ + 3347, /* C9A0 (51616) */ + 3347, /* C9A1 (51617) */ + 3347, /* C9A2 (51618) */ + 3347, /* C9A3 (51619) */ + 3347, /* C9A4 (51620) */ + 3347, /* C9A5 (51621) */ + 3347, /* C9A6 (51622) */ + 3347, /* C9A7 (51623) */ + 3347, /* C9A8 (51624) */ + 3347, /* C9A9 (51625) */ + 3347, /* C9AA (51626) */ + 3347, /* C9AB (51627) */ + 3347, /* C9AC (51628) */ + 3347, /* C9AD (51629) */ + 3347, /* C9AE (51630) */ + 3347, /* C9AF (51631) */ + 3347, /* C9B0 (51632) */ + 3347, /* C9B1 (51633) */ + 3347, /* C9B2 (51634) */ + 3347, /* C9B3 (51635) */ + 3347, /* C9B4 (51636) */ + 3347, /* C9B5 (51637) */ + 3347, /* C9B6 (51638) */ + 3347, /* C9B7 (51639) */ + 3347, /* C9B8 (51640) */ + 3347, /* C9B9 (51641) */ + 3347, /* C9BA (51642) */ + 3347, /* C9BB (51643) */ + 3347, /* C9BC (51644) */ + 3347, /* C9BD (51645) */ + 3347, /* C9BE (51646) */ + 3347, /* C9BF (51647) */ + 3347, /* C9C0 (51648) */ + 3347, /* C9C1 (51649) */ + 3347, /* C9C2 (51650) */ + 3347, /* C9C3 (51651) */ + 3347, /* C9C4 (51652) */ + 3347, /* C9C5 (51653) */ + 3347, /* C9C6 (51654) */ + 3347, /* C9C7 (51655) */ + 3347, /* C9C8 (51656) */ + 3347, /* C9C9 (51657) */ + 3347, /* C9CA (51658) */ + 3347, /* C9CB (51659) */ + 3347, /* C9CC (51660) */ + 3347, /* C9CD (51661) */ + 3347, /* C9CE (51662) */ + 3347, /* C9CF (51663) */ + 3347, /* C9D0 (51664) */ + 3347, /* C9D1 (51665) */ + 3347, /* C9D2 (51666) */ + 3347, /* C9D3 (51667) */ + 3347, /* C9D4 (51668) */ + 3347, /* C9D5 (51669) */ + 3347, /* C9D6 (51670) */ + 3347, /* C9D7 (51671) */ + 3347, /* C9D8 (51672) */ + 3347, /* C9D9 (51673) */ + 3347, /* C9DA (51674) */ + 3347, /* C9DB (51675) */ + 3347, /* C9DC (51676) */ + 3347, /* C9DD (51677) */ + 3347, /* C9DE (51678) */ + 3347, /* C9DF (51679) */ + 3347, /* C9E0 (51680) */ + 3347, /* C9E1 (51681) */ + 3347, /* C9E2 (51682) */ + 3347, /* C9E3 (51683) */ + 3347, /* C9E4 (51684) */ + 3347, /* C9E5 (51685) */ + 3347, /* C9E6 (51686) */ + 3347, /* C9E7 (51687) */ + 3347, /* C9E8 (51688) */ + 3347, /* C9E9 (51689) */ + 3347, /* C9EA (51690) */ + 3347, /* C9EB (51691) */ + 3347, /* C9EC (51692) */ + 3347, /* C9ED (51693) */ + 3347, /* C9EE (51694) */ + 3347, /* C9EF (51695) */ + 3347, /* C9F0 (51696) */ + 3347, /* C9F1 (51697) */ + 3347, /* C9F2 (51698) */ + 3347, /* C9F3 (51699) */ + 3347, /* C9F4 (51700) */ + 3347, /* C9F5 (51701) */ + 3347, /* C9F6 (51702) */ + 3347, /* C9F7 (51703) */ + 3347, /* C9F8 (51704) */ + 3347, /* C9F9 (51705) */ + 3347, /* C9FA (51706) */ + 3347, /* C9FB (51707) */ + 3347, /* C9FC (51708) */ + 3347, /* C9FD (51709) */ + 3347, /* C9FE (51710) */ + 3347, /* C9FF (51711) */ + 3347, /* CA00 (51712) */ + 3347, /* CA01 (51713) */ + 3347, /* CA02 (51714) */ + 3347, /* CA03 (51715) */ + 3347, /* CA04 (51716) */ + 3347, /* CA05 (51717) */ + 3347, /* CA06 (51718) */ + 3347, /* CA07 (51719) */ + 3347, /* CA08 (51720) */ + 3347, /* CA09 (51721) */ + 3347, /* CA0A (51722) */ + 3347, /* CA0B (51723) */ + 3347, /* CA0C (51724) */ + 3347, /* CA0D (51725) */ + 3347, /* CA0E (51726) */ + 3347, /* CA0F (51727) */ + 3347, /* CA10 (51728) */ + 3347, /* CA11 (51729) */ + 3347, /* CA12 (51730) */ + 3347, /* CA13 (51731) */ + 3347, /* CA14 (51732) */ + 3347, /* CA15 (51733) */ + 3347, /* CA16 (51734) */ + 3347, /* CA17 (51735) */ + 3347, /* CA18 (51736) */ + 3347, /* CA19 (51737) */ + 3347, /* CA1A (51738) */ + 3347, /* CA1B (51739) */ + 3347, /* CA1C (51740) */ + 3347, /* CA1D (51741) */ + 3347, /* CA1E (51742) */ + 3347, /* CA1F (51743) */ + 3347, /* CA20 (51744) */ + 3347, /* CA21 (51745) */ + 3347, /* CA22 (51746) */ + 3347, /* CA23 (51747) */ + 3347, /* CA24 (51748) */ + 3347, /* CA25 (51749) */ + 3347, /* CA26 (51750) */ + 3347, /* CA27 (51751) */ + 3347, /* CA28 (51752) */ + 3347, /* CA29 (51753) */ + 3347, /* CA2A (51754) */ + 3347, /* CA2B (51755) */ + 3347, /* CA2C (51756) */ + 3347, /* CA2D (51757) */ + 3347, /* CA2E (51758) */ + 3347, /* CA2F (51759) */ + 3347, /* CA30 (51760) */ + 3347, /* CA31 (51761) */ + 3347, /* CA32 (51762) */ + 3347, /* CA33 (51763) */ + 3347, /* CA34 (51764) */ + 3347, /* CA35 (51765) */ + 3347, /* CA36 (51766) */ + 3347, /* CA37 (51767) */ + 3347, /* CA38 (51768) */ + 3347, /* CA39 (51769) */ + 3347, /* CA3A (51770) */ + 3347, /* CA3B (51771) */ + 3347, /* CA3C (51772) */ + 3347, /* CA3D (51773) */ + 3347, /* CA3E (51774) */ + 3347, /* CA3F (51775) */ + 3347, /* CA40 (51776) */ + 3347, /* CA41 (51777) */ + 3347, /* CA42 (51778) */ + 3347, /* CA43 (51779) */ + 3347, /* CA44 (51780) */ + 3347, /* CA45 (51781) */ + 3347, /* CA46 (51782) */ + 3347, /* CA47 (51783) */ + 3347, /* CA48 (51784) */ + 3347, /* CA49 (51785) */ + 3347, /* CA4A (51786) */ + 3347, /* CA4B (51787) */ + 3347, /* CA4C (51788) */ + 3347, /* CA4D (51789) */ + 3347, /* CA4E (51790) */ + 3347, /* CA4F (51791) */ + 3347, /* CA50 (51792) */ + 3347, /* CA51 (51793) */ + 3347, /* CA52 (51794) */ + 3347, /* CA53 (51795) */ + 3347, /* CA54 (51796) */ + 3347, /* CA55 (51797) */ + 3347, /* CA56 (51798) */ + 3347, /* CA57 (51799) */ + 3347, /* CA58 (51800) */ + 3347, /* CA59 (51801) */ + 3347, /* CA5A (51802) */ + 3347, /* CA5B (51803) */ + 3347, /* CA5C (51804) */ + 3347, /* CA5D (51805) */ + 3347, /* CA5E (51806) */ + 3347, /* CA5F (51807) */ + 3347, /* CA60 (51808) */ + 3347, /* CA61 (51809) */ + 3347, /* CA62 (51810) */ + 3347, /* CA63 (51811) */ + 3347, /* CA64 (51812) */ + 3347, /* CA65 (51813) */ + 3347, /* CA66 (51814) */ + 3347, /* CA67 (51815) */ + 3347, /* CA68 (51816) */ + 3347, /* CA69 (51817) */ + 3347, /* CA6A (51818) */ + 3347, /* CA6B (51819) */ + 3347, /* CA6C (51820) */ + 3347, /* CA6D (51821) */ + 3347, /* CA6E (51822) */ + 3347, /* CA6F (51823) */ + 3347, /* CA70 (51824) */ + 3347, /* CA71 (51825) */ + 3347, /* CA72 (51826) */ + 3347, /* CA73 (51827) */ + 3347, /* CA74 (51828) */ + 3347, /* CA75 (51829) */ + 3347, /* CA76 (51830) */ + 3347, /* CA77 (51831) */ + 3347, /* CA78 (51832) */ + 3347, /* CA79 (51833) */ + 3347, /* CA7A (51834) */ + 3347, /* CA7B (51835) */ + 3347, /* CA7C (51836) */ + 3347, /* CA7D (51837) */ + 3347, /* CA7E (51838) */ + 3347, /* CA7F (51839) */ + 3347, /* CA80 (51840) */ + 3347, /* CA81 (51841) */ + 3347, /* CA82 (51842) */ + 3347, /* CA83 (51843) */ + 3347, /* CA84 (51844) */ + 3347, /* CA85 (51845) */ + 3347, /* CA86 (51846) */ + 3347, /* CA87 (51847) */ + 3347, /* CA88 (51848) */ + 3347, /* CA89 (51849) */ + 3347, /* CA8A (51850) */ + 3347, /* CA8B (51851) */ + 3347, /* CA8C (51852) */ + 3347, /* CA8D (51853) */ + 3347, /* CA8E (51854) */ + 3347, /* CA8F (51855) */ + 3347, /* CA90 (51856) */ + 3347, /* CA91 (51857) */ + 3347, /* CA92 (51858) */ + 3347, /* CA93 (51859) */ + 3347, /* CA94 (51860) */ + 3347, /* CA95 (51861) */ + 3347, /* CA96 (51862) */ + 3347, /* CA97 (51863) */ + 3347, /* CA98 (51864) */ + 3347, /* CA99 (51865) */ + 3347, /* CA9A (51866) */ + 3347, /* CA9B (51867) */ + 3347, /* CA9C (51868) */ + 3347, /* CA9D (51869) */ + 3347, /* CA9E (51870) */ + 3347, /* CA9F (51871) */ + 3347, /* CAA0 (51872) */ + 3347, /* CAA1 (51873) */ + 3347, /* CAA2 (51874) */ + 3347, /* CAA3 (51875) */ + 3347, /* CAA4 (51876) */ + 3347, /* CAA5 (51877) */ + 3347, /* CAA6 (51878) */ + 3347, /* CAA7 (51879) */ + 3347, /* CAA8 (51880) */ + 3347, /* CAA9 (51881) */ + 3347, /* CAAA (51882) */ + 3347, /* CAAB (51883) */ + 3347, /* CAAC (51884) */ + 3347, /* CAAD (51885) */ + 3347, /* CAAE (51886) */ + 3347, /* CAAF (51887) */ + 3347, /* CAB0 (51888) */ + 3347, /* CAB1 (51889) */ + 3347, /* CAB2 (51890) */ + 3347, /* CAB3 (51891) */ + 3347, /* CAB4 (51892) */ + 3347, /* CAB5 (51893) */ + 3347, /* CAB6 (51894) */ + 3347, /* CAB7 (51895) */ + 3347, /* CAB8 (51896) */ + 3347, /* CAB9 (51897) */ + 3347, /* CABA (51898) */ + 3347, /* CABB (51899) */ + 3347, /* CABC (51900) */ + 3347, /* CABD (51901) */ + 3347, /* CABE (51902) */ + 3347, /* CABF (51903) */ + 3347, /* CAC0 (51904) */ + 3347, /* CAC1 (51905) */ + 3347, /* CAC2 (51906) */ + 3347, /* CAC3 (51907) */ + 3347, /* CAC4 (51908) */ + 3347, /* CAC5 (51909) */ + 3347, /* CAC6 (51910) */ + 3347, /* CAC7 (51911) */ + 3347, /* CAC8 (51912) */ + 3347, /* CAC9 (51913) */ + 3347, /* CACA (51914) */ + 3347, /* CACB (51915) */ + 3347, /* CACC (51916) */ + 3347, /* CACD (51917) */ + 3347, /* CACE (51918) */ + 3347, /* CACF (51919) */ + 3347, /* CAD0 (51920) */ + 3347, /* CAD1 (51921) */ + 3347, /* CAD2 (51922) */ + 3347, /* CAD3 (51923) */ + 3347, /* CAD4 (51924) */ + 3347, /* CAD5 (51925) */ + 3347, /* CAD6 (51926) */ + 3347, /* CAD7 (51927) */ + 3347, /* CAD8 (51928) */ + 3347, /* CAD9 (51929) */ + 3347, /* CADA (51930) */ + 3347, /* CADB (51931) */ + 3347, /* CADC (51932) */ + 3347, /* CADD (51933) */ + 3347, /* CADE (51934) */ + 3347, /* CADF (51935) */ + 3347, /* CAE0 (51936) */ + 3347, /* CAE1 (51937) */ + 3347, /* CAE2 (51938) */ + 3347, /* CAE3 (51939) */ + 3347, /* CAE4 (51940) */ + 3347, /* CAE5 (51941) */ + 3347, /* CAE6 (51942) */ + 3347, /* CAE7 (51943) */ + 3347, /* CAE8 (51944) */ + 3347, /* CAE9 (51945) */ + 3347, /* CAEA (51946) */ + 3347, /* CAEB (51947) */ + 3347, /* CAEC (51948) */ + 3347, /* CAED (51949) */ + 3347, /* CAEE (51950) */ + 3347, /* CAEF (51951) */ + 3347, /* CAF0 (51952) */ + 3347, /* CAF1 (51953) */ + 3347, /* CAF2 (51954) */ + 3347, /* CAF3 (51955) */ + 3347, /* CAF4 (51956) */ + 3347, /* CAF5 (51957) */ + 3347, /* CAF6 (51958) */ + 3347, /* CAF7 (51959) */ + 3347, /* CAF8 (51960) */ + 3347, /* CAF9 (51961) */ + 3347, /* CAFA (51962) */ + 3347, /* CAFB (51963) */ + 3347, /* CAFC (51964) */ + 3347, /* CAFD (51965) */ + 3347, /* CAFE (51966) */ + 3347, /* CAFF (51967) */ + 3347, /* CB00 (51968) */ + 3347, /* CB01 (51969) */ + 3347, /* CB02 (51970) */ + 3347, /* CB03 (51971) */ + 3347, /* CB04 (51972) */ + 3347, /* CB05 (51973) */ + 3347, /* CB06 (51974) */ + 3347, /* CB07 (51975) */ + 3347, /* CB08 (51976) */ + 3347, /* CB09 (51977) */ + 3347, /* CB0A (51978) */ + 3347, /* CB0B (51979) */ + 3347, /* CB0C (51980) */ + 3347, /* CB0D (51981) */ + 3347, /* CB0E (51982) */ + 3347, /* CB0F (51983) */ + 3347, /* CB10 (51984) */ + 3347, /* CB11 (51985) */ + 3347, /* CB12 (51986) */ + 3347, /* CB13 (51987) */ + 3347, /* CB14 (51988) */ + 3347, /* CB15 (51989) */ + 3347, /* CB16 (51990) */ + 3347, /* CB17 (51991) */ + 3347, /* CB18 (51992) */ + 3347, /* CB19 (51993) */ + 3347, /* CB1A (51994) */ + 3347, /* CB1B (51995) */ + 3347, /* CB1C (51996) */ + 3347, /* CB1D (51997) */ + 3347, /* CB1E (51998) */ + 3347, /* CB1F (51999) */ + 3347, /* CB20 (52000) */ + 3347, /* CB21 (52001) */ + 3347, /* CB22 (52002) */ + 3347, /* CB23 (52003) */ + 3347, /* CB24 (52004) */ + 3347, /* CB25 (52005) */ + 3347, /* CB26 (52006) */ + 3347, /* CB27 (52007) */ + 3347, /* CB28 (52008) */ + 3347, /* CB29 (52009) */ + 3347, /* CB2A (52010) */ + 3347, /* CB2B (52011) */ + 3347, /* CB2C (52012) */ + 3347, /* CB2D (52013) */ + 3347, /* CB2E (52014) */ + 3347, /* CB2F (52015) */ + 3347, /* CB30 (52016) */ + 3347, /* CB31 (52017) */ + 3347, /* CB32 (52018) */ + 3347, /* CB33 (52019) */ + 3347, /* CB34 (52020) */ + 3347, /* CB35 (52021) */ + 3347, /* CB36 (52022) */ + 3347, /* CB37 (52023) */ + 3347, /* CB38 (52024) */ + 3347, /* CB39 (52025) */ + 3347, /* CB3A (52026) */ + 3347, /* CB3B (52027) */ + 3347, /* CB3C (52028) */ + 3347, /* CB3D (52029) */ + 3347, /* CB3E (52030) */ + 3347, /* CB3F (52031) */ + 3347, /* CB40 (52032) */ + 3347, /* CB41 (52033) */ + 3347, /* CB42 (52034) */ + 3347, /* CB43 (52035) */ + 3347, /* CB44 (52036) */ + 3347, /* CB45 (52037) */ + 3347, /* CB46 (52038) */ + 3347, /* CB47 (52039) */ + 3347, /* CB48 (52040) */ + 3347, /* CB49 (52041) */ + 3347, /* CB4A (52042) */ + 3347, /* CB4B (52043) */ + 3347, /* CB4C (52044) */ + 3347, /* CB4D (52045) */ + 3347, /* CB4E (52046) */ + 3347, /* CB4F (52047) */ + 3347, /* CB50 (52048) */ + 3347, /* CB51 (52049) */ + 3347, /* CB52 (52050) */ + 3347, /* CB53 (52051) */ + 3347, /* CB54 (52052) */ + 3347, /* CB55 (52053) */ + 3347, /* CB56 (52054) */ + 3347, /* CB57 (52055) */ + 3347, /* CB58 (52056) */ + 3347, /* CB59 (52057) */ + 3347, /* CB5A (52058) */ + 3347, /* CB5B (52059) */ + 3347, /* CB5C (52060) */ + 3347, /* CB5D (52061) */ + 3347, /* CB5E (52062) */ + 3347, /* CB5F (52063) */ + 3347, /* CB60 (52064) */ + 3347, /* CB61 (52065) */ + 3347, /* CB62 (52066) */ + 3347, /* CB63 (52067) */ + 3347, /* CB64 (52068) */ + 3347, /* CB65 (52069) */ + 3347, /* CB66 (52070) */ + 3347, /* CB67 (52071) */ + 3347, /* CB68 (52072) */ + 3347, /* CB69 (52073) */ + 3347, /* CB6A (52074) */ + 3347, /* CB6B (52075) */ + 3347, /* CB6C (52076) */ + 3347, /* CB6D (52077) */ + 3347, /* CB6E (52078) */ + 3347, /* CB6F (52079) */ + 3347, /* CB70 (52080) */ + 3347, /* CB71 (52081) */ + 3347, /* CB72 (52082) */ + 3347, /* CB73 (52083) */ + 3347, /* CB74 (52084) */ + 3347, /* CB75 (52085) */ + 3347, /* CB76 (52086) */ + 3347, /* CB77 (52087) */ + 3347, /* CB78 (52088) */ + 3347, /* CB79 (52089) */ + 3347, /* CB7A (52090) */ + 3347, /* CB7B (52091) */ + 3347, /* CB7C (52092) */ + 3347, /* CB7D (52093) */ + 3347, /* CB7E (52094) */ + 3347, /* CB7F (52095) */ + 3347, /* CB80 (52096) */ + 3347, /* CB81 (52097) */ + 3347, /* CB82 (52098) */ + 3347, /* CB83 (52099) */ + 3347, /* CB84 (52100) */ + 3347, /* CB85 (52101) */ + 3347, /* CB86 (52102) */ + 3347, /* CB87 (52103) */ + 3347, /* CB88 (52104) */ + 3347, /* CB89 (52105) */ + 3347, /* CB8A (52106) */ + 3347, /* CB8B (52107) */ + 3347, /* CB8C (52108) */ + 3347, /* CB8D (52109) */ + 3347, /* CB8E (52110) */ + 3347, /* CB8F (52111) */ + 3347, /* CB90 (52112) */ + 3347, /* CB91 (52113) */ + 3347, /* CB92 (52114) */ + 3347, /* CB93 (52115) */ + 3347, /* CB94 (52116) */ + 3347, /* CB95 (52117) */ + 3347, /* CB96 (52118) */ + 3347, /* CB97 (52119) */ + 3347, /* CB98 (52120) */ + 3347, /* CB99 (52121) */ + 3347, /* CB9A (52122) */ + 3347, /* CB9B (52123) */ + 3347, /* CB9C (52124) */ + 3347, /* CB9D (52125) */ + 3347, /* CB9E (52126) */ + 3347, /* CB9F (52127) */ + 3347, /* CBA0 (52128) */ + 3347, /* CBA1 (52129) */ + 3347, /* CBA2 (52130) */ + 3347, /* CBA3 (52131) */ + 3347, /* CBA4 (52132) */ + 3347, /* CBA5 (52133) */ + 3347, /* CBA6 (52134) */ + 3347, /* CBA7 (52135) */ + 3347, /* CBA8 (52136) */ + 3347, /* CBA9 (52137) */ + 3347, /* CBAA (52138) */ + 3347, /* CBAB (52139) */ + 3347, /* CBAC (52140) */ + 3347, /* CBAD (52141) */ + 3347, /* CBAE (52142) */ + 3347, /* CBAF (52143) */ + 3347, /* CBB0 (52144) */ + 3347, /* CBB1 (52145) */ + 3347, /* CBB2 (52146) */ + 3347, /* CBB3 (52147) */ + 3347, /* CBB4 (52148) */ + 3347, /* CBB5 (52149) */ + 3347, /* CBB6 (52150) */ + 3347, /* CBB7 (52151) */ + 3347, /* CBB8 (52152) */ + 3347, /* CBB9 (52153) */ + 3347, /* CBBA (52154) */ + 3347, /* CBBB (52155) */ + 3347, /* CBBC (52156) */ + 3347, /* CBBD (52157) */ + 3347, /* CBBE (52158) */ + 3347, /* CBBF (52159) */ + 3347, /* CBC0 (52160) */ + 3347, /* CBC1 (52161) */ + 3347, /* CBC2 (52162) */ + 3347, /* CBC3 (52163) */ + 3347, /* CBC4 (52164) */ + 3347, /* CBC5 (52165) */ + 3347, /* CBC6 (52166) */ + 3347, /* CBC7 (52167) */ + 3347, /* CBC8 (52168) */ + 3347, /* CBC9 (52169) */ + 3347, /* CBCA (52170) */ + 3347, /* CBCB (52171) */ + 3347, /* CBCC (52172) */ + 3347, /* CBCD (52173) */ + 3347, /* CBCE (52174) */ + 3347, /* CBCF (52175) */ + 3347, /* CBD0 (52176) */ + 3347, /* CBD1 (52177) */ + 3347, /* CBD2 (52178) */ + 3347, /* CBD3 (52179) */ + 3347, /* CBD4 (52180) */ + 3347, /* CBD5 (52181) */ + 3347, /* CBD6 (52182) */ + 3347, /* CBD7 (52183) */ + 3347, /* CBD8 (52184) */ + 3347, /* CBD9 (52185) */ + 3347, /* CBDA (52186) */ + 3347, /* CBDB (52187) */ + 3347, /* CBDC (52188) */ + 3347, /* CBDD (52189) */ + 3347, /* CBDE (52190) */ + 3347, /* CBDF (52191) */ + 3347, /* CBE0 (52192) */ + 3347, /* CBE1 (52193) */ + 3347, /* CBE2 (52194) */ + 3347, /* CBE3 (52195) */ + 3347, /* CBE4 (52196) */ + 3347, /* CBE5 (52197) */ + 3347, /* CBE6 (52198) */ + 3347, /* CBE7 (52199) */ + 3347, /* CBE8 (52200) */ + 3347, /* CBE9 (52201) */ + 3347, /* CBEA (52202) */ + 3347, /* CBEB (52203) */ + 3347, /* CBEC (52204) */ + 3347, /* CBED (52205) */ + 3347, /* CBEE (52206) */ + 3347, /* CBEF (52207) */ + 3347, /* CBF0 (52208) */ + 3347, /* CBF1 (52209) */ + 3347, /* CBF2 (52210) */ + 3347, /* CBF3 (52211) */ + 3347, /* CBF4 (52212) */ + 3347, /* CBF5 (52213) */ + 3347, /* CBF6 (52214) */ + 3347, /* CBF7 (52215) */ + 3347, /* CBF8 (52216) */ + 3347, /* CBF9 (52217) */ + 3347, /* CBFA (52218) */ + 3347, /* CBFB (52219) */ + 3347, /* CBFC (52220) */ + 3347, /* CBFD (52221) */ + 3347, /* CBFE (52222) */ + 3347, /* CBFF (52223) */ + 3347, /* CC00 (52224) */ + 3347, /* CC01 (52225) */ + 3347, /* CC02 (52226) */ + 3347, /* CC03 (52227) */ + 3347, /* CC04 (52228) */ + 3347, /* CC05 (52229) */ + 3347, /* CC06 (52230) */ + 3347, /* CC07 (52231) */ + 3347, /* CC08 (52232) */ + 3347, /* CC09 (52233) */ + 3347, /* CC0A (52234) */ + 3347, /* CC0B (52235) */ + 3347, /* CC0C (52236) */ + 3347, /* CC0D (52237) */ + 3347, /* CC0E (52238) */ + 3347, /* CC0F (52239) */ + 3347, /* CC10 (52240) */ + 3347, /* CC11 (52241) */ + 3347, /* CC12 (52242) */ + 3347, /* CC13 (52243) */ + 3347, /* CC14 (52244) */ + 3347, /* CC15 (52245) */ + 3347, /* CC16 (52246) */ + 3347, /* CC17 (52247) */ + 3347, /* CC18 (52248) */ + 3347, /* CC19 (52249) */ + 3347, /* CC1A (52250) */ + 3347, /* CC1B (52251) */ + 3347, /* CC1C (52252) */ + 3347, /* CC1D (52253) */ + 3347, /* CC1E (52254) */ + 3347, /* CC1F (52255) */ + 3347, /* CC20 (52256) */ + 3347, /* CC21 (52257) */ + 3347, /* CC22 (52258) */ + 3347, /* CC23 (52259) */ + 3347, /* CC24 (52260) */ + 3347, /* CC25 (52261) */ + 3347, /* CC26 (52262) */ + 3347, /* CC27 (52263) */ + 3347, /* CC28 (52264) */ + 3347, /* CC29 (52265) */ + 3347, /* CC2A (52266) */ + 3347, /* CC2B (52267) */ + 3347, /* CC2C (52268) */ + 3347, /* CC2D (52269) */ + 3347, /* CC2E (52270) */ + 3347, /* CC2F (52271) */ + 3347, /* CC30 (52272) */ + 3347, /* CC31 (52273) */ + 3347, /* CC32 (52274) */ + 3347, /* CC33 (52275) */ + 3347, /* CC34 (52276) */ + 3347, /* CC35 (52277) */ + 3347, /* CC36 (52278) */ + 3347, /* CC37 (52279) */ + 3347, /* CC38 (52280) */ + 3347, /* CC39 (52281) */ + 3347, /* CC3A (52282) */ + 3347, /* CC3B (52283) */ + 3347, /* CC3C (52284) */ + 3347, /* CC3D (52285) */ + 3347, /* CC3E (52286) */ + 3347, /* CC3F (52287) */ + 3347, /* CC40 (52288) */ + 3347, /* CC41 (52289) */ + 3347, /* CC42 (52290) */ + 3347, /* CC43 (52291) */ + 3347, /* CC44 (52292) */ + 3347, /* CC45 (52293) */ + 3347, /* CC46 (52294) */ + 3347, /* CC47 (52295) */ + 3347, /* CC48 (52296) */ + 3347, /* CC49 (52297) */ + 3347, /* CC4A (52298) */ + 3347, /* CC4B (52299) */ + 3347, /* CC4C (52300) */ + 3347, /* CC4D (52301) */ + 3347, /* CC4E (52302) */ + 3347, /* CC4F (52303) */ + 3347, /* CC50 (52304) */ + 3347, /* CC51 (52305) */ + 3347, /* CC52 (52306) */ + 3347, /* CC53 (52307) */ + 3347, /* CC54 (52308) */ + 3347, /* CC55 (52309) */ + 3347, /* CC56 (52310) */ + 3347, /* CC57 (52311) */ + 3347, /* CC58 (52312) */ + 3347, /* CC59 (52313) */ + 3347, /* CC5A (52314) */ + 3347, /* CC5B (52315) */ + 3347, /* CC5C (52316) */ + 3347, /* CC5D (52317) */ + 3347, /* CC5E (52318) */ + 3347, /* CC5F (52319) */ + 3347, /* CC60 (52320) */ + 3347, /* CC61 (52321) */ + 3347, /* CC62 (52322) */ + 3347, /* CC63 (52323) */ + 3347, /* CC64 (52324) */ + 3347, /* CC65 (52325) */ + 3347, /* CC66 (52326) */ + 3347, /* CC67 (52327) */ + 3347, /* CC68 (52328) */ + 3347, /* CC69 (52329) */ + 3347, /* CC6A (52330) */ + 3347, /* CC6B (52331) */ + 3347, /* CC6C (52332) */ + 3347, /* CC6D (52333) */ + 3347, /* CC6E (52334) */ + 3347, /* CC6F (52335) */ + 3347, /* CC70 (52336) */ + 3347, /* CC71 (52337) */ + 3347, /* CC72 (52338) */ + 3347, /* CC73 (52339) */ + 3347, /* CC74 (52340) */ + 3347, /* CC75 (52341) */ + 3347, /* CC76 (52342) */ + 3347, /* CC77 (52343) */ + 3347, /* CC78 (52344) */ + 3347, /* CC79 (52345) */ + 3347, /* CC7A (52346) */ + 3347, /* CC7B (52347) */ + 3347, /* CC7C (52348) */ + 3347, /* CC7D (52349) */ + 3347, /* CC7E (52350) */ + 3347, /* CC7F (52351) */ + 3347, /* CC80 (52352) */ + 3347, /* CC81 (52353) */ + 3347, /* CC82 (52354) */ + 3347, /* CC83 (52355) */ + 3347, /* CC84 (52356) */ + 3347, /* CC85 (52357) */ + 3347, /* CC86 (52358) */ + 3347, /* CC87 (52359) */ + 3347, /* CC88 (52360) */ + 3347, /* CC89 (52361) */ + 3347, /* CC8A (52362) */ + 3347, /* CC8B (52363) */ + 3347, /* CC8C (52364) */ + 3347, /* CC8D (52365) */ + 3347, /* CC8E (52366) */ + 3347, /* CC8F (52367) */ + 3347, /* CC90 (52368) */ + 3347, /* CC91 (52369) */ + 3347, /* CC92 (52370) */ + 3347, /* CC93 (52371) */ + 3347, /* CC94 (52372) */ + 3347, /* CC95 (52373) */ + 3347, /* CC96 (52374) */ + 3347, /* CC97 (52375) */ + 3347, /* CC98 (52376) */ + 3347, /* CC99 (52377) */ + 3347, /* CC9A (52378) */ + 3347, /* CC9B (52379) */ + 3347, /* CC9C (52380) */ + 3347, /* CC9D (52381) */ + 3347, /* CC9E (52382) */ + 3347, /* CC9F (52383) */ + 3347, /* CCA0 (52384) */ + 3347, /* CCA1 (52385) */ + 3347, /* CCA2 (52386) */ + 3347, /* CCA3 (52387) */ + 3347, /* CCA4 (52388) */ + 3347, /* CCA5 (52389) */ + 3347, /* CCA6 (52390) */ + 3347, /* CCA7 (52391) */ + 3347, /* CCA8 (52392) */ + 3347, /* CCA9 (52393) */ + 3347, /* CCAA (52394) */ + 3347, /* CCAB (52395) */ + 3347, /* CCAC (52396) */ + 3347, /* CCAD (52397) */ + 3347, /* CCAE (52398) */ + 3347, /* CCAF (52399) */ + 3347, /* CCB0 (52400) */ + 3347, /* CCB1 (52401) */ + 3347, /* CCB2 (52402) */ + 3347, /* CCB3 (52403) */ + 3347, /* CCB4 (52404) */ + 3347, /* CCB5 (52405) */ + 3347, /* CCB6 (52406) */ + 3347, /* CCB7 (52407) */ + 3347, /* CCB8 (52408) */ + 3347, /* CCB9 (52409) */ + 3347, /* CCBA (52410) */ + 3347, /* CCBB (52411) */ + 3347, /* CCBC (52412) */ + 3347, /* CCBD (52413) */ + 3347, /* CCBE (52414) */ + 3347, /* CCBF (52415) */ + 3347, /* CCC0 (52416) */ + 3347, /* CCC1 (52417) */ + 3347, /* CCC2 (52418) */ + 3347, /* CCC3 (52419) */ + 3347, /* CCC4 (52420) */ + 3347, /* CCC5 (52421) */ + 3347, /* CCC6 (52422) */ + 3347, /* CCC7 (52423) */ + 3347, /* CCC8 (52424) */ + 3347, /* CCC9 (52425) */ + 3347, /* CCCA (52426) */ + 3347, /* CCCB (52427) */ + 3347, /* CCCC (52428) */ + 3347, /* CCCD (52429) */ + 3347, /* CCCE (52430) */ + 3347, /* CCCF (52431) */ + 3347, /* CCD0 (52432) */ + 3347, /* CCD1 (52433) */ + 3347, /* CCD2 (52434) */ + 3347, /* CCD3 (52435) */ + 3347, /* CCD4 (52436) */ + 3347, /* CCD5 (52437) */ + 3347, /* CCD6 (52438) */ + 3347, /* CCD7 (52439) */ + 3347, /* CCD8 (52440) */ + 3347, /* CCD9 (52441) */ + 3347, /* CCDA (52442) */ + 3347, /* CCDB (52443) */ + 3347, /* CCDC (52444) */ + 3347, /* CCDD (52445) */ + 3347, /* CCDE (52446) */ + 3347, /* CCDF (52447) */ + 3347, /* CCE0 (52448) */ + 3347, /* CCE1 (52449) */ + 3347, /* CCE2 (52450) */ + 3347, /* CCE3 (52451) */ + 3347, /* CCE4 (52452) */ + 3347, /* CCE5 (52453) */ + 3347, /* CCE6 (52454) */ + 3347, /* CCE7 (52455) */ + 3347, /* CCE8 (52456) */ + 3347, /* CCE9 (52457) */ + 3347, /* CCEA (52458) */ + 3347, /* CCEB (52459) */ + 3347, /* CCEC (52460) */ + 3347, /* CCED (52461) */ + 3347, /* CCEE (52462) */ + 3347, /* CCEF (52463) */ + 3347, /* CCF0 (52464) */ + 3347, /* CCF1 (52465) */ + 3347, /* CCF2 (52466) */ + 3347, /* CCF3 (52467) */ + 3347, /* CCF4 (52468) */ + 3347, /* CCF5 (52469) */ + 3347, /* CCF6 (52470) */ + 3347, /* CCF7 (52471) */ + 3347, /* CCF8 (52472) */ + 3347, /* CCF9 (52473) */ + 3347, /* CCFA (52474) */ + 3347, /* CCFB (52475) */ + 3347, /* CCFC (52476) */ + 3347, /* CCFD (52477) */ + 3347, /* CCFE (52478) */ + 3347, /* CCFF (52479) */ + 3347, /* CD00 (52480) */ + 3347, /* CD01 (52481) */ + 3347, /* CD02 (52482) */ + 3347, /* CD03 (52483) */ + 3347, /* CD04 (52484) */ + 3347, /* CD05 (52485) */ + 3347, /* CD06 (52486) */ + 3347, /* CD07 (52487) */ + 3347, /* CD08 (52488) */ + 3347, /* CD09 (52489) */ + 3347, /* CD0A (52490) */ + 3347, /* CD0B (52491) */ + 3347, /* CD0C (52492) */ + 3347, /* CD0D (52493) */ + 3347, /* CD0E (52494) */ + 3347, /* CD0F (52495) */ + 3347, /* CD10 (52496) */ + 3347, /* CD11 (52497) */ + 3347, /* CD12 (52498) */ + 3347, /* CD13 (52499) */ + 3347, /* CD14 (52500) */ + 3347, /* CD15 (52501) */ + 3347, /* CD16 (52502) */ + 3347, /* CD17 (52503) */ + 3347, /* CD18 (52504) */ + 3347, /* CD19 (52505) */ + 3347, /* CD1A (52506) */ + 3347, /* CD1B (52507) */ + 3347, /* CD1C (52508) */ + 3347, /* CD1D (52509) */ + 3347, /* CD1E (52510) */ + 3347, /* CD1F (52511) */ + 3347, /* CD20 (52512) */ + 3347, /* CD21 (52513) */ + 3347, /* CD22 (52514) */ + 3347, /* CD23 (52515) */ + 3347, /* CD24 (52516) */ + 3347, /* CD25 (52517) */ + 3347, /* CD26 (52518) */ + 3347, /* CD27 (52519) */ + 3347, /* CD28 (52520) */ + 3347, /* CD29 (52521) */ + 3347, /* CD2A (52522) */ + 3347, /* CD2B (52523) */ + 3347, /* CD2C (52524) */ + 3347, /* CD2D (52525) */ + 3347, /* CD2E (52526) */ + 3347, /* CD2F (52527) */ + 3347, /* CD30 (52528) */ + 3347, /* CD31 (52529) */ + 3347, /* CD32 (52530) */ + 3347, /* CD33 (52531) */ + 3347, /* CD34 (52532) */ + 3347, /* CD35 (52533) */ + 3347, /* CD36 (52534) */ + 3347, /* CD37 (52535) */ + 3347, /* CD38 (52536) */ + 3347, /* CD39 (52537) */ + 3347, /* CD3A (52538) */ + 3347, /* CD3B (52539) */ + 3347, /* CD3C (52540) */ + 3347, /* CD3D (52541) */ + 3347, /* CD3E (52542) */ + 3347, /* CD3F (52543) */ + 3347, /* CD40 (52544) */ + 3347, /* CD41 (52545) */ + 3347, /* CD42 (52546) */ + 3347, /* CD43 (52547) */ + 3347, /* CD44 (52548) */ + 3347, /* CD45 (52549) */ + 3347, /* CD46 (52550) */ + 3347, /* CD47 (52551) */ + 3347, /* CD48 (52552) */ + 3347, /* CD49 (52553) */ + 3347, /* CD4A (52554) */ + 3347, /* CD4B (52555) */ + 3347, /* CD4C (52556) */ + 3347, /* CD4D (52557) */ + 3347, /* CD4E (52558) */ + 3347, /* CD4F (52559) */ + 3347, /* CD50 (52560) */ + 3347, /* CD51 (52561) */ + 3347, /* CD52 (52562) */ + 3347, /* CD53 (52563) */ + 3347, /* CD54 (52564) */ + 3347, /* CD55 (52565) */ + 3347, /* CD56 (52566) */ + 3347, /* CD57 (52567) */ + 3347, /* CD58 (52568) */ + 3347, /* CD59 (52569) */ + 3347, /* CD5A (52570) */ + 3347, /* CD5B (52571) */ + 3347, /* CD5C (52572) */ + 3347, /* CD5D (52573) */ + 3347, /* CD5E (52574) */ + 3347, /* CD5F (52575) */ + 3347, /* CD60 (52576) */ + 3347, /* CD61 (52577) */ + 3347, /* CD62 (52578) */ + 3347, /* CD63 (52579) */ + 3347, /* CD64 (52580) */ + 3347, /* CD65 (52581) */ + 3347, /* CD66 (52582) */ + 3347, /* CD67 (52583) */ + 3347, /* CD68 (52584) */ + 3347, /* CD69 (52585) */ + 3347, /* CD6A (52586) */ + 3347, /* CD6B (52587) */ + 3347, /* CD6C (52588) */ + 3347, /* CD6D (52589) */ + 3347, /* CD6E (52590) */ + 3347, /* CD6F (52591) */ + 3347, /* CD70 (52592) */ + 3347, /* CD71 (52593) */ + 3347, /* CD72 (52594) */ + 3347, /* CD73 (52595) */ + 3347, /* CD74 (52596) */ + 3347, /* CD75 (52597) */ + 3347, /* CD76 (52598) */ + 3347, /* CD77 (52599) */ + 3347, /* CD78 (52600) */ + 3347, /* CD79 (52601) */ + 3347, /* CD7A (52602) */ + 3347, /* CD7B (52603) */ + 3347, /* CD7C (52604) */ + 3347, /* CD7D (52605) */ + 3347, /* CD7E (52606) */ + 3347, /* CD7F (52607) */ + 3347, /* CD80 (52608) */ + 3347, /* CD81 (52609) */ + 3347, /* CD82 (52610) */ + 3347, /* CD83 (52611) */ + 3347, /* CD84 (52612) */ + 3347, /* CD85 (52613) */ + 3347, /* CD86 (52614) */ + 3347, /* CD87 (52615) */ + 3347, /* CD88 (52616) */ + 3347, /* CD89 (52617) */ + 3347, /* CD8A (52618) */ + 3347, /* CD8B (52619) */ + 3347, /* CD8C (52620) */ + 3347, /* CD8D (52621) */ + 3347, /* CD8E (52622) */ + 3347, /* CD8F (52623) */ + 3347, /* CD90 (52624) */ + 3347, /* CD91 (52625) */ + 3347, /* CD92 (52626) */ + 3347, /* CD93 (52627) */ + 3347, /* CD94 (52628) */ + 3347, /* CD95 (52629) */ + 3347, /* CD96 (52630) */ + 3347, /* CD97 (52631) */ + 3347, /* CD98 (52632) */ + 3347, /* CD99 (52633) */ + 3347, /* CD9A (52634) */ + 3347, /* CD9B (52635) */ + 3347, /* CD9C (52636) */ + 3347, /* CD9D (52637) */ + 3347, /* CD9E (52638) */ + 3347, /* CD9F (52639) */ + 3347, /* CDA0 (52640) */ + 3347, /* CDA1 (52641) */ + 3347, /* CDA2 (52642) */ + 3347, /* CDA3 (52643) */ + 3347, /* CDA4 (52644) */ + 3347, /* CDA5 (52645) */ + 3347, /* CDA6 (52646) */ + 3347, /* CDA7 (52647) */ + 3347, /* CDA8 (52648) */ + 3347, /* CDA9 (52649) */ + 3347, /* CDAA (52650) */ + 3347, /* CDAB (52651) */ + 3347, /* CDAC (52652) */ + 3347, /* CDAD (52653) */ + 3347, /* CDAE (52654) */ + 3347, /* CDAF (52655) */ + 3347, /* CDB0 (52656) */ + 3347, /* CDB1 (52657) */ + 3347, /* CDB2 (52658) */ + 3347, /* CDB3 (52659) */ + 3347, /* CDB4 (52660) */ + 3347, /* CDB5 (52661) */ + 3347, /* CDB6 (52662) */ + 3347, /* CDB7 (52663) */ + 3347, /* CDB8 (52664) */ + 3347, /* CDB9 (52665) */ + 3347, /* CDBA (52666) */ + 3347, /* CDBB (52667) */ + 3347, /* CDBC (52668) */ + 3347, /* CDBD (52669) */ + 3347, /* CDBE (52670) */ + 3347, /* CDBF (52671) */ + 3347, /* CDC0 (52672) */ + 3347, /* CDC1 (52673) */ + 3347, /* CDC2 (52674) */ + 3347, /* CDC3 (52675) */ + 3347, /* CDC4 (52676) */ + 3347, /* CDC5 (52677) */ + 3347, /* CDC6 (52678) */ + 3347, /* CDC7 (52679) */ + 3347, /* CDC8 (52680) */ + 3347, /* CDC9 (52681) */ + 3347, /* CDCA (52682) */ + 3347, /* CDCB (52683) */ + 3347, /* CDCC (52684) */ + 3347, /* CDCD (52685) */ + 3347, /* CDCE (52686) */ + 3347, /* CDCF (52687) */ + 3347, /* CDD0 (52688) */ + 3347, /* CDD1 (52689) */ + 3347, /* CDD2 (52690) */ + 3347, /* CDD3 (52691) */ + 3347, /* CDD4 (52692) */ + 3347, /* CDD5 (52693) */ + 3347, /* CDD6 (52694) */ + 3347, /* CDD7 (52695) */ + 3347, /* CDD8 (52696) */ + 3347, /* CDD9 (52697) */ + 3347, /* CDDA (52698) */ + 3347, /* CDDB (52699) */ + 3347, /* CDDC (52700) */ + 3347, /* CDDD (52701) */ + 3347, /* CDDE (52702) */ + 3347, /* CDDF (52703) */ + 3347, /* CDE0 (52704) */ + 3347, /* CDE1 (52705) */ + 3347, /* CDE2 (52706) */ + 3347, /* CDE3 (52707) */ + 3347, /* CDE4 (52708) */ + 3347, /* CDE5 (52709) */ + 3347, /* CDE6 (52710) */ + 3347, /* CDE7 (52711) */ + 3347, /* CDE8 (52712) */ + 3347, /* CDE9 (52713) */ + 3347, /* CDEA (52714) */ + 3347, /* CDEB (52715) */ + 3347, /* CDEC (52716) */ + 3347, /* CDED (52717) */ + 3347, /* CDEE (52718) */ + 3347, /* CDEF (52719) */ + 3347, /* CDF0 (52720) */ + 3347, /* CDF1 (52721) */ + 3347, /* CDF2 (52722) */ + 3347, /* CDF3 (52723) */ + 3347, /* CDF4 (52724) */ + 3347, /* CDF5 (52725) */ + 3347, /* CDF6 (52726) */ + 3347, /* CDF7 (52727) */ + 3347, /* CDF8 (52728) */ + 3347, /* CDF9 (52729) */ + 3347, /* CDFA (52730) */ + 3347, /* CDFB (52731) */ + 3347, /* CDFC (52732) */ + 3347, /* CDFD (52733) */ + 3347, /* CDFE (52734) */ + 3347, /* CDFF (52735) */ + 3347, /* CE00 (52736) */ + 3347, /* CE01 (52737) */ + 3347, /* CE02 (52738) */ + 3347, /* CE03 (52739) */ + 3347, /* CE04 (52740) */ + 3347, /* CE05 (52741) */ + 3347, /* CE06 (52742) */ + 3347, /* CE07 (52743) */ + 3347, /* CE08 (52744) */ + 3347, /* CE09 (52745) */ + 3347, /* CE0A (52746) */ + 3347, /* CE0B (52747) */ + 3347, /* CE0C (52748) */ + 3347, /* CE0D (52749) */ + 3347, /* CE0E (52750) */ + 3347, /* CE0F (52751) */ + 3347, /* CE10 (52752) */ + 3347, /* CE11 (52753) */ + 3347, /* CE12 (52754) */ + 3347, /* CE13 (52755) */ + 3347, /* CE14 (52756) */ + 3347, /* CE15 (52757) */ + 3347, /* CE16 (52758) */ + 3347, /* CE17 (52759) */ + 3347, /* CE18 (52760) */ + 3347, /* CE19 (52761) */ + 3347, /* CE1A (52762) */ + 3347, /* CE1B (52763) */ + 3347, /* CE1C (52764) */ + 3347, /* CE1D (52765) */ + 3347, /* CE1E (52766) */ + 3347, /* CE1F (52767) */ + 3347, /* CE20 (52768) */ + 3347, /* CE21 (52769) */ + 3347, /* CE22 (52770) */ + 3347, /* CE23 (52771) */ + 3347, /* CE24 (52772) */ + 3347, /* CE25 (52773) */ + 3347, /* CE26 (52774) */ + 3347, /* CE27 (52775) */ + 3347, /* CE28 (52776) */ + 3347, /* CE29 (52777) */ + 3347, /* CE2A (52778) */ + 3347, /* CE2B (52779) */ + 3347, /* CE2C (52780) */ + 3347, /* CE2D (52781) */ + 3347, /* CE2E (52782) */ + 3347, /* CE2F (52783) */ + 3347, /* CE30 (52784) */ + 3347, /* CE31 (52785) */ + 3347, /* CE32 (52786) */ + 3347, /* CE33 (52787) */ + 3347, /* CE34 (52788) */ + 3347, /* CE35 (52789) */ + 3347, /* CE36 (52790) */ + 3347, /* CE37 (52791) */ + 3347, /* CE38 (52792) */ + 3347, /* CE39 (52793) */ + 3347, /* CE3A (52794) */ + 3347, /* CE3B (52795) */ + 3347, /* CE3C (52796) */ + 3347, /* CE3D (52797) */ + 3347, /* CE3E (52798) */ + 3347, /* CE3F (52799) */ + 3347, /* CE40 (52800) */ + 3347, /* CE41 (52801) */ + 3347, /* CE42 (52802) */ + 3347, /* CE43 (52803) */ + 3347, /* CE44 (52804) */ + 3347, /* CE45 (52805) */ + 3347, /* CE46 (52806) */ + 3347, /* CE47 (52807) */ + 3347, /* CE48 (52808) */ + 3347, /* CE49 (52809) */ + 3347, /* CE4A (52810) */ + 3347, /* CE4B (52811) */ + 3347, /* CE4C (52812) */ + 3347, /* CE4D (52813) */ + 3347, /* CE4E (52814) */ + 3347, /* CE4F (52815) */ + 3347, /* CE50 (52816) */ + 3347, /* CE51 (52817) */ + 3347, /* CE52 (52818) */ + 3347, /* CE53 (52819) */ + 3347, /* CE54 (52820) */ + 3347, /* CE55 (52821) */ + 3347, /* CE56 (52822) */ + 3347, /* CE57 (52823) */ + 3347, /* CE58 (52824) */ + 3347, /* CE59 (52825) */ + 3347, /* CE5A (52826) */ + 3347, /* CE5B (52827) */ + 3347, /* CE5C (52828) */ + 3347, /* CE5D (52829) */ + 3347, /* CE5E (52830) */ + 3347, /* CE5F (52831) */ + 3347, /* CE60 (52832) */ + 3347, /* CE61 (52833) */ + 3347, /* CE62 (52834) */ + 3347, /* CE63 (52835) */ + 3347, /* CE64 (52836) */ + 3347, /* CE65 (52837) */ + 3347, /* CE66 (52838) */ + 3347, /* CE67 (52839) */ + 3347, /* CE68 (52840) */ + 3347, /* CE69 (52841) */ + 3347, /* CE6A (52842) */ + 3347, /* CE6B (52843) */ + 3347, /* CE6C (52844) */ + 3347, /* CE6D (52845) */ + 3347, /* CE6E (52846) */ + 3347, /* CE6F (52847) */ + 3347, /* CE70 (52848) */ + 3347, /* CE71 (52849) */ + 3347, /* CE72 (52850) */ + 3347, /* CE73 (52851) */ + 3347, /* CE74 (52852) */ + 3347, /* CE75 (52853) */ + 3347, /* CE76 (52854) */ + 3347, /* CE77 (52855) */ + 3347, /* CE78 (52856) */ + 3347, /* CE79 (52857) */ + 3347, /* CE7A (52858) */ + 3347, /* CE7B (52859) */ + 3347, /* CE7C (52860) */ + 3347, /* CE7D (52861) */ + 3347, /* CE7E (52862) */ + 3347, /* CE7F (52863) */ + 3347, /* CE80 (52864) */ + 3347, /* CE81 (52865) */ + 3347, /* CE82 (52866) */ + 3347, /* CE83 (52867) */ + 3347, /* CE84 (52868) */ + 3347, /* CE85 (52869) */ + 3347, /* CE86 (52870) */ + 3347, /* CE87 (52871) */ + 3347, /* CE88 (52872) */ + 3347, /* CE89 (52873) */ + 3347, /* CE8A (52874) */ + 3347, /* CE8B (52875) */ + 3347, /* CE8C (52876) */ + 3347, /* CE8D (52877) */ + 3347, /* CE8E (52878) */ + 3347, /* CE8F (52879) */ + 3347, /* CE90 (52880) */ + 3347, /* CE91 (52881) */ + 3347, /* CE92 (52882) */ + 3347, /* CE93 (52883) */ + 3347, /* CE94 (52884) */ + 3347, /* CE95 (52885) */ + 3347, /* CE96 (52886) */ + 3347, /* CE97 (52887) */ + 3347, /* CE98 (52888) */ + 3347, /* CE99 (52889) */ + 3347, /* CE9A (52890) */ + 3347, /* CE9B (52891) */ + 3347, /* CE9C (52892) */ + 3347, /* CE9D (52893) */ + 3347, /* CE9E (52894) */ + 3347, /* CE9F (52895) */ + 3347, /* CEA0 (52896) */ + 3347, /* CEA1 (52897) */ + 3347, /* CEA2 (52898) */ + 3347, /* CEA3 (52899) */ + 3347, /* CEA4 (52900) */ + 3347, /* CEA5 (52901) */ + 3347, /* CEA6 (52902) */ + 3347, /* CEA7 (52903) */ + 3347, /* CEA8 (52904) */ + 3347, /* CEA9 (52905) */ + 3347, /* CEAA (52906) */ + 3347, /* CEAB (52907) */ + 3347, /* CEAC (52908) */ + 3347, /* CEAD (52909) */ + 3347, /* CEAE (52910) */ + 3347, /* CEAF (52911) */ + 3347, /* CEB0 (52912) */ + 3347, /* CEB1 (52913) */ + 3347, /* CEB2 (52914) */ + 3347, /* CEB3 (52915) */ + 3347, /* CEB4 (52916) */ + 3347, /* CEB5 (52917) */ + 3347, /* CEB6 (52918) */ + 3347, /* CEB7 (52919) */ + 3347, /* CEB8 (52920) */ + 3347, /* CEB9 (52921) */ + 3347, /* CEBA (52922) */ + 3347, /* CEBB (52923) */ + 3347, /* CEBC (52924) */ + 3347, /* CEBD (52925) */ + 3347, /* CEBE (52926) */ + 3347, /* CEBF (52927) */ + 3347, /* CEC0 (52928) */ + 3347, /* CEC1 (52929) */ + 3347, /* CEC2 (52930) */ + 3347, /* CEC3 (52931) */ + 3347, /* CEC4 (52932) */ + 3347, /* CEC5 (52933) */ + 3347, /* CEC6 (52934) */ + 3347, /* CEC7 (52935) */ + 3347, /* CEC8 (52936) */ + 3347, /* CEC9 (52937) */ + 3347, /* CECA (52938) */ + 3347, /* CECB (52939) */ + 3347, /* CECC (52940) */ + 3347, /* CECD (52941) */ + 3347, /* CECE (52942) */ + 3347, /* CECF (52943) */ + 3347, /* CED0 (52944) */ + 3347, /* CED1 (52945) */ + 3347, /* CED2 (52946) */ + 3347, /* CED3 (52947) */ + 3347, /* CED4 (52948) */ + 3347, /* CED5 (52949) */ + 3347, /* CED6 (52950) */ + 3347, /* CED7 (52951) */ + 3347, /* CED8 (52952) */ + 3347, /* CED9 (52953) */ + 3347, /* CEDA (52954) */ + 3347, /* CEDB (52955) */ + 3347, /* CEDC (52956) */ + 3347, /* CEDD (52957) */ + 3347, /* CEDE (52958) */ + 3347, /* CEDF (52959) */ + 3347, /* CEE0 (52960) */ + 3347, /* CEE1 (52961) */ + 3347, /* CEE2 (52962) */ + 3347, /* CEE3 (52963) */ + 3347, /* CEE4 (52964) */ + 3347, /* CEE5 (52965) */ + 3347, /* CEE6 (52966) */ + 3347, /* CEE7 (52967) */ + 3347, /* CEE8 (52968) */ + 3347, /* CEE9 (52969) */ + 3347, /* CEEA (52970) */ + 3347, /* CEEB (52971) */ + 3347, /* CEEC (52972) */ + 3347, /* CEED (52973) */ + 3347, /* CEEE (52974) */ + 3347, /* CEEF (52975) */ + 3347, /* CEF0 (52976) */ + 3347, /* CEF1 (52977) */ + 3347, /* CEF2 (52978) */ + 3347, /* CEF3 (52979) */ + 3347, /* CEF4 (52980) */ + 3347, /* CEF5 (52981) */ + 3347, /* CEF6 (52982) */ + 3347, /* CEF7 (52983) */ + 3347, /* CEF8 (52984) */ + 3347, /* CEF9 (52985) */ + 3347, /* CEFA (52986) */ + 3347, /* CEFB (52987) */ + 3347, /* CEFC (52988) */ + 3347, /* CEFD (52989) */ + 3347, /* CEFE (52990) */ + 3347, /* CEFF (52991) */ + 3347, /* CF00 (52992) */ + 3347, /* CF01 (52993) */ + 3347, /* CF02 (52994) */ + 3347, /* CF03 (52995) */ + 3347, /* CF04 (52996) */ + 3347, /* CF05 (52997) */ + 3347, /* CF06 (52998) */ + 3347, /* CF07 (52999) */ + 3347, /* CF08 (53000) */ + 3347, /* CF09 (53001) */ + 3347, /* CF0A (53002) */ + 3347, /* CF0B (53003) */ + 3347, /* CF0C (53004) */ + 3347, /* CF0D (53005) */ + 3347, /* CF0E (53006) */ + 3347, /* CF0F (53007) */ + 3347, /* CF10 (53008) */ + 3347, /* CF11 (53009) */ + 3347, /* CF12 (53010) */ + 3347, /* CF13 (53011) */ + 3347, /* CF14 (53012) */ + 3347, /* CF15 (53013) */ + 3347, /* CF16 (53014) */ + 3347, /* CF17 (53015) */ + 3347, /* CF18 (53016) */ + 3347, /* CF19 (53017) */ + 3347, /* CF1A (53018) */ + 3347, /* CF1B (53019) */ + 3347, /* CF1C (53020) */ + 3347, /* CF1D (53021) */ + 3347, /* CF1E (53022) */ + 3347, /* CF1F (53023) */ + 3347, /* CF20 (53024) */ + 3347, /* CF21 (53025) */ + 3347, /* CF22 (53026) */ + 3347, /* CF23 (53027) */ + 3347, /* CF24 (53028) */ + 3347, /* CF25 (53029) */ + 3347, /* CF26 (53030) */ + 3347, /* CF27 (53031) */ + 3347, /* CF28 (53032) */ + 3347, /* CF29 (53033) */ + 3347, /* CF2A (53034) */ + 3347, /* CF2B (53035) */ + 3347, /* CF2C (53036) */ + 3347, /* CF2D (53037) */ + 3347, /* CF2E (53038) */ + 3347, /* CF2F (53039) */ + 3347, /* CF30 (53040) */ + 3347, /* CF31 (53041) */ + 3347, /* CF32 (53042) */ + 3347, /* CF33 (53043) */ + 3347, /* CF34 (53044) */ + 3347, /* CF35 (53045) */ + 3347, /* CF36 (53046) */ + 3347, /* CF37 (53047) */ + 3347, /* CF38 (53048) */ + 3347, /* CF39 (53049) */ + 3347, /* CF3A (53050) */ + 3347, /* CF3B (53051) */ + 3347, /* CF3C (53052) */ + 3347, /* CF3D (53053) */ + 3347, /* CF3E (53054) */ + 3347, /* CF3F (53055) */ + 3347, /* CF40 (53056) */ + 3347, /* CF41 (53057) */ + 3347, /* CF42 (53058) */ + 3347, /* CF43 (53059) */ + 3347, /* CF44 (53060) */ + 3347, /* CF45 (53061) */ + 3347, /* CF46 (53062) */ + 3347, /* CF47 (53063) */ + 3347, /* CF48 (53064) */ + 3347, /* CF49 (53065) */ + 3347, /* CF4A (53066) */ + 3347, /* CF4B (53067) */ + 3347, /* CF4C (53068) */ + 3347, /* CF4D (53069) */ + 3347, /* CF4E (53070) */ + 3347, /* CF4F (53071) */ + 3347, /* CF50 (53072) */ + 3347, /* CF51 (53073) */ + 3347, /* CF52 (53074) */ + 3347, /* CF53 (53075) */ + 3347, /* CF54 (53076) */ + 3347, /* CF55 (53077) */ + 3347, /* CF56 (53078) */ + 3347, /* CF57 (53079) */ + 3347, /* CF58 (53080) */ + 3347, /* CF59 (53081) */ + 3347, /* CF5A (53082) */ + 3347, /* CF5B (53083) */ + 3347, /* CF5C (53084) */ + 3347, /* CF5D (53085) */ + 3347, /* CF5E (53086) */ + 3347, /* CF5F (53087) */ + 3347, /* CF60 (53088) */ + 3347, /* CF61 (53089) */ + 3347, /* CF62 (53090) */ + 3347, /* CF63 (53091) */ + 3347, /* CF64 (53092) */ + 3347, /* CF65 (53093) */ + 3347, /* CF66 (53094) */ + 3347, /* CF67 (53095) */ + 3347, /* CF68 (53096) */ + 3347, /* CF69 (53097) */ + 3347, /* CF6A (53098) */ + 3347, /* CF6B (53099) */ + 3347, /* CF6C (53100) */ + 3347, /* CF6D (53101) */ + 3347, /* CF6E (53102) */ + 3347, /* CF6F (53103) */ + 3347, /* CF70 (53104) */ + 3347, /* CF71 (53105) */ + 3347, /* CF72 (53106) */ + 3347, /* CF73 (53107) */ + 3347, /* CF74 (53108) */ + 3347, /* CF75 (53109) */ + 3347, /* CF76 (53110) */ + 3347, /* CF77 (53111) */ + 3347, /* CF78 (53112) */ + 3347, /* CF79 (53113) */ + 3347, /* CF7A (53114) */ + 3347, /* CF7B (53115) */ + 3347, /* CF7C (53116) */ + 3347, /* CF7D (53117) */ + 3347, /* CF7E (53118) */ + 3347, /* CF7F (53119) */ + 3347, /* CF80 (53120) */ + 3347, /* CF81 (53121) */ + 3347, /* CF82 (53122) */ + 3347, /* CF83 (53123) */ + 3347, /* CF84 (53124) */ + 3347, /* CF85 (53125) */ + 3347, /* CF86 (53126) */ + 3347, /* CF87 (53127) */ + 3347, /* CF88 (53128) */ + 3347, /* CF89 (53129) */ + 3347, /* CF8A (53130) */ + 3347, /* CF8B (53131) */ + 3347, /* CF8C (53132) */ + 3347, /* CF8D (53133) */ + 3347, /* CF8E (53134) */ + 3347, /* CF8F (53135) */ + 3347, /* CF90 (53136) */ + 3347, /* CF91 (53137) */ + 3347, /* CF92 (53138) */ + 3347, /* CF93 (53139) */ + 3347, /* CF94 (53140) */ + 3347, /* CF95 (53141) */ + 3347, /* CF96 (53142) */ + 3347, /* CF97 (53143) */ + 3347, /* CF98 (53144) */ + 3347, /* CF99 (53145) */ + 3347, /* CF9A (53146) */ + 3347, /* CF9B (53147) */ + 3347, /* CF9C (53148) */ + 3347, /* CF9D (53149) */ + 3347, /* CF9E (53150) */ + 3347, /* CF9F (53151) */ + 3347, /* CFA0 (53152) */ + 3347, /* CFA1 (53153) */ + 3347, /* CFA2 (53154) */ + 3347, /* CFA3 (53155) */ + 3347, /* CFA4 (53156) */ + 3347, /* CFA5 (53157) */ + 3347, /* CFA6 (53158) */ + 3347, /* CFA7 (53159) */ + 3347, /* CFA8 (53160) */ + 3347, /* CFA9 (53161) */ + 3347, /* CFAA (53162) */ + 3347, /* CFAB (53163) */ + 3347, /* CFAC (53164) */ + 3347, /* CFAD (53165) */ + 3347, /* CFAE (53166) */ + 3347, /* CFAF (53167) */ + 3347, /* CFB0 (53168) */ + 3347, /* CFB1 (53169) */ + 3347, /* CFB2 (53170) */ + 3347, /* CFB3 (53171) */ + 3347, /* CFB4 (53172) */ + 3347, /* CFB5 (53173) */ + 3347, /* CFB6 (53174) */ + 3347, /* CFB7 (53175) */ + 3347, /* CFB8 (53176) */ + 3347, /* CFB9 (53177) */ + 3347, /* CFBA (53178) */ + 3347, /* CFBB (53179) */ + 3347, /* CFBC (53180) */ + 3347, /* CFBD (53181) */ + 3347, /* CFBE (53182) */ + 3347, /* CFBF (53183) */ + 3347, /* CFC0 (53184) */ + 3347, /* CFC1 (53185) */ + 3347, /* CFC2 (53186) */ + 3347, /* CFC3 (53187) */ + 3347, /* CFC4 (53188) */ + 3347, /* CFC5 (53189) */ + 3347, /* CFC6 (53190) */ + 3347, /* CFC7 (53191) */ + 3347, /* CFC8 (53192) */ + 3347, /* CFC9 (53193) */ + 3347, /* CFCA (53194) */ + 3347, /* CFCB (53195) */ + 3347, /* CFCC (53196) */ + 3347, /* CFCD (53197) */ + 3347, /* CFCE (53198) */ + 3347, /* CFCF (53199) */ + 3347, /* CFD0 (53200) */ + 3347, /* CFD1 (53201) */ + 3347, /* CFD2 (53202) */ + 3347, /* CFD3 (53203) */ + 3347, /* CFD4 (53204) */ + 3347, /* CFD5 (53205) */ + 3347, /* CFD6 (53206) */ + 3347, /* CFD7 (53207) */ + 3347, /* CFD8 (53208) */ + 3347, /* CFD9 (53209) */ + 3347, /* CFDA (53210) */ + 3347, /* CFDB (53211) */ + 3347, /* CFDC (53212) */ + 3347, /* CFDD (53213) */ + 3347, /* CFDE (53214) */ + 3347, /* CFDF (53215) */ + 3347, /* CFE0 (53216) */ + 3347, /* CFE1 (53217) */ + 3347, /* CFE2 (53218) */ + 3347, /* CFE3 (53219) */ + 3347, /* CFE4 (53220) */ + 3347, /* CFE5 (53221) */ + 3347, /* CFE6 (53222) */ + 3347, /* CFE7 (53223) */ + 3347, /* CFE8 (53224) */ + 3347, /* CFE9 (53225) */ + 3347, /* CFEA (53226) */ + 3347, /* CFEB (53227) */ + 3347, /* CFEC (53228) */ + 3347, /* CFED (53229) */ + 3347, /* CFEE (53230) */ + 3347, /* CFEF (53231) */ + 3347, /* CFF0 (53232) */ + 3347, /* CFF1 (53233) */ + 3347, /* CFF2 (53234) */ + 3347, /* CFF3 (53235) */ + 3347, /* CFF4 (53236) */ + 3347, /* CFF5 (53237) */ + 3347, /* CFF6 (53238) */ + 3347, /* CFF7 (53239) */ + 3347, /* CFF8 (53240) */ + 3347, /* CFF9 (53241) */ + 3347, /* CFFA (53242) */ + 3347, /* CFFB (53243) */ + 3347, /* CFFC (53244) */ + 3347, /* CFFD (53245) */ + 3347, /* CFFE (53246) */ + 3347, /* CFFF (53247) */ + 3347, /* D000 (53248) */ + 3347, /* D001 (53249) */ + 3347, /* D002 (53250) */ + 3347, /* D003 (53251) */ + 3347, /* D004 (53252) */ + 3347, /* D005 (53253) */ + 3347, /* D006 (53254) */ + 3347, /* D007 (53255) */ + 3347, /* D008 (53256) */ + 3347, /* D009 (53257) */ + 3347, /* D00A (53258) */ + 3347, /* D00B (53259) */ + 3347, /* D00C (53260) */ + 3347, /* D00D (53261) */ + 3347, /* D00E (53262) */ + 3347, /* D00F (53263) */ + 3347, /* D010 (53264) */ + 3347, /* D011 (53265) */ + 3347, /* D012 (53266) */ + 3347, /* D013 (53267) */ + 3347, /* D014 (53268) */ + 3347, /* D015 (53269) */ + 3347, /* D016 (53270) */ + 3347, /* D017 (53271) */ + 3347, /* D018 (53272) */ + 3347, /* D019 (53273) */ + 3347, /* D01A (53274) */ + 3347, /* D01B (53275) */ + 3347, /* D01C (53276) */ + 3347, /* D01D (53277) */ + 3347, /* D01E (53278) */ + 3347, /* D01F (53279) */ + 3347, /* D020 (53280) */ + 3347, /* D021 (53281) */ + 3347, /* D022 (53282) */ + 3347, /* D023 (53283) */ + 3347, /* D024 (53284) */ + 3347, /* D025 (53285) */ + 3347, /* D026 (53286) */ + 3347, /* D027 (53287) */ + 3347, /* D028 (53288) */ + 3347, /* D029 (53289) */ + 3347, /* D02A (53290) */ + 3347, /* D02B (53291) */ + 3347, /* D02C (53292) */ + 3347, /* D02D (53293) */ + 3347, /* D02E (53294) */ + 3347, /* D02F (53295) */ + 3347, /* D030 (53296) */ + 3347, /* D031 (53297) */ + 3347, /* D032 (53298) */ + 3347, /* D033 (53299) */ + 3347, /* D034 (53300) */ + 3347, /* D035 (53301) */ + 3347, /* D036 (53302) */ + 3347, /* D037 (53303) */ + 3347, /* D038 (53304) */ + 3347, /* D039 (53305) */ + 3347, /* D03A (53306) */ + 3347, /* D03B (53307) */ + 3347, /* D03C (53308) */ + 3347, /* D03D (53309) */ + 3347, /* D03E (53310) */ + 3347, /* D03F (53311) */ + 3347, /* D040 (53312) */ + 3347, /* D041 (53313) */ + 3347, /* D042 (53314) */ + 3347, /* D043 (53315) */ + 3347, /* D044 (53316) */ + 3347, /* D045 (53317) */ + 3347, /* D046 (53318) */ + 3347, /* D047 (53319) */ + 3347, /* D048 (53320) */ + 3347, /* D049 (53321) */ + 3347, /* D04A (53322) */ + 3347, /* D04B (53323) */ + 3347, /* D04C (53324) */ + 3347, /* D04D (53325) */ + 3347, /* D04E (53326) */ + 3347, /* D04F (53327) */ + 3347, /* D050 (53328) */ + 3347, /* D051 (53329) */ + 3347, /* D052 (53330) */ + 3347, /* D053 (53331) */ + 3347, /* D054 (53332) */ + 3347, /* D055 (53333) */ + 3347, /* D056 (53334) */ + 3347, /* D057 (53335) */ + 3347, /* D058 (53336) */ + 3347, /* D059 (53337) */ + 3347, /* D05A (53338) */ + 3347, /* D05B (53339) */ + 3347, /* D05C (53340) */ + 3347, /* D05D (53341) */ + 3347, /* D05E (53342) */ + 3347, /* D05F (53343) */ + 3347, /* D060 (53344) */ + 3347, /* D061 (53345) */ + 3347, /* D062 (53346) */ + 3347, /* D063 (53347) */ + 3347, /* D064 (53348) */ + 3347, /* D065 (53349) */ + 3347, /* D066 (53350) */ + 3347, /* D067 (53351) */ + 3347, /* D068 (53352) */ + 3347, /* D069 (53353) */ + 3347, /* D06A (53354) */ + 3347, /* D06B (53355) */ + 3347, /* D06C (53356) */ + 3347, /* D06D (53357) */ + 3347, /* D06E (53358) */ + 3347, /* D06F (53359) */ + 3347, /* D070 (53360) */ + 3347, /* D071 (53361) */ + 3347, /* D072 (53362) */ + 3347, /* D073 (53363) */ + 3347, /* D074 (53364) */ + 3347, /* D075 (53365) */ + 3347, /* D076 (53366) */ + 3347, /* D077 (53367) */ + 3347, /* D078 (53368) */ + 3347, /* D079 (53369) */ + 3347, /* D07A (53370) */ + 3347, /* D07B (53371) */ + 3347, /* D07C (53372) */ + 3347, /* D07D (53373) */ + 3347, /* D07E (53374) */ + 3347, /* D07F (53375) */ + 3347, /* D080 (53376) */ + 3347, /* D081 (53377) */ + 3347, /* D082 (53378) */ + 3347, /* D083 (53379) */ + 3347, /* D084 (53380) */ + 3347, /* D085 (53381) */ + 3347, /* D086 (53382) */ + 3347, /* D087 (53383) */ + 3347, /* D088 (53384) */ + 3347, /* D089 (53385) */ + 3347, /* D08A (53386) */ + 3347, /* D08B (53387) */ + 3347, /* D08C (53388) */ + 3347, /* D08D (53389) */ + 3347, /* D08E (53390) */ + 3347, /* D08F (53391) */ + 3347, /* D090 (53392) */ + 3347, /* D091 (53393) */ + 3347, /* D092 (53394) */ + 3347, /* D093 (53395) */ + 3347, /* D094 (53396) */ + 3347, /* D095 (53397) */ + 3347, /* D096 (53398) */ + 3347, /* D097 (53399) */ + 3347, /* D098 (53400) */ + 3347, /* D099 (53401) */ + 3347, /* D09A (53402) */ + 3347, /* D09B (53403) */ + 3347, /* D09C (53404) */ + 3347, /* D09D (53405) */ + 3347, /* D09E (53406) */ + 3347, /* D09F (53407) */ + 3347, /* D0A0 (53408) */ + 3347, /* D0A1 (53409) */ + 3347, /* D0A2 (53410) */ + 3347, /* D0A3 (53411) */ + 3347, /* D0A4 (53412) */ + 3347, /* D0A5 (53413) */ + 3347, /* D0A6 (53414) */ + 3347, /* D0A7 (53415) */ + 3347, /* D0A8 (53416) */ + 3347, /* D0A9 (53417) */ + 3347, /* D0AA (53418) */ + 3347, /* D0AB (53419) */ + 3347, /* D0AC (53420) */ + 3347, /* D0AD (53421) */ + 3347, /* D0AE (53422) */ + 3347, /* D0AF (53423) */ + 3347, /* D0B0 (53424) */ + 3347, /* D0B1 (53425) */ + 3347, /* D0B2 (53426) */ + 3347, /* D0B3 (53427) */ + 3347, /* D0B4 (53428) */ + 3347, /* D0B5 (53429) */ + 3347, /* D0B6 (53430) */ + 3347, /* D0B7 (53431) */ + 3347, /* D0B8 (53432) */ + 3347, /* D0B9 (53433) */ + 3347, /* D0BA (53434) */ + 3347, /* D0BB (53435) */ + 3347, /* D0BC (53436) */ + 3347, /* D0BD (53437) */ + 3347, /* D0BE (53438) */ + 3347, /* D0BF (53439) */ + 3347, /* D0C0 (53440) */ + 3347, /* D0C1 (53441) */ + 3347, /* D0C2 (53442) */ + 3347, /* D0C3 (53443) */ + 3347, /* D0C4 (53444) */ + 3347, /* D0C5 (53445) */ + 3347, /* D0C6 (53446) */ + 3347, /* D0C7 (53447) */ + 3347, /* D0C8 (53448) */ + 3347, /* D0C9 (53449) */ + 3347, /* D0CA (53450) */ + 3347, /* D0CB (53451) */ + 3347, /* D0CC (53452) */ + 3347, /* D0CD (53453) */ + 3347, /* D0CE (53454) */ + 3347, /* D0CF (53455) */ + 3347, /* D0D0 (53456) */ + 3347, /* D0D1 (53457) */ + 3347, /* D0D2 (53458) */ + 3347, /* D0D3 (53459) */ + 3347, /* D0D4 (53460) */ + 3347, /* D0D5 (53461) */ + 3347, /* D0D6 (53462) */ + 3347, /* D0D7 (53463) */ + 3347, /* D0D8 (53464) */ + 3347, /* D0D9 (53465) */ + 3347, /* D0DA (53466) */ + 3347, /* D0DB (53467) */ + 3347, /* D0DC (53468) */ + 3347, /* D0DD (53469) */ + 3347, /* D0DE (53470) */ + 3347, /* D0DF (53471) */ + 3347, /* D0E0 (53472) */ + 3347, /* D0E1 (53473) */ + 3347, /* D0E2 (53474) */ + 3347, /* D0E3 (53475) */ + 3347, /* D0E4 (53476) */ + 3347, /* D0E5 (53477) */ + 3347, /* D0E6 (53478) */ + 3347, /* D0E7 (53479) */ + 3347, /* D0E8 (53480) */ + 3347, /* D0E9 (53481) */ + 3347, /* D0EA (53482) */ + 3347, /* D0EB (53483) */ + 3347, /* D0EC (53484) */ + 3347, /* D0ED (53485) */ + 3347, /* D0EE (53486) */ + 3347, /* D0EF (53487) */ + 3347, /* D0F0 (53488) */ + 3347, /* D0F1 (53489) */ + 3347, /* D0F2 (53490) */ + 3347, /* D0F3 (53491) */ + 3347, /* D0F4 (53492) */ + 3347, /* D0F5 (53493) */ + 3347, /* D0F6 (53494) */ + 3347, /* D0F7 (53495) */ + 3347, /* D0F8 (53496) */ + 3347, /* D0F9 (53497) */ + 3347, /* D0FA (53498) */ + 3347, /* D0FB (53499) */ + 3347, /* D0FC (53500) */ + 3347, /* D0FD (53501) */ + 3347, /* D0FE (53502) */ + 3347, /* D0FF (53503) */ + 3347, /* D100 (53504) */ + 3347, /* D101 (53505) */ + 3347, /* D102 (53506) */ + 3347, /* D103 (53507) */ + 3347, /* D104 (53508) */ + 3347, /* D105 (53509) */ + 3347, /* D106 (53510) */ + 3347, /* D107 (53511) */ + 3347, /* D108 (53512) */ + 3347, /* D109 (53513) */ + 3347, /* D10A (53514) */ + 3347, /* D10B (53515) */ + 3347, /* D10C (53516) */ + 3347, /* D10D (53517) */ + 3347, /* D10E (53518) */ + 3347, /* D10F (53519) */ + 3347, /* D110 (53520) */ + 3347, /* D111 (53521) */ + 3347, /* D112 (53522) */ + 3347, /* D113 (53523) */ + 3347, /* D114 (53524) */ + 3347, /* D115 (53525) */ + 3347, /* D116 (53526) */ + 3347, /* D117 (53527) */ + 3347, /* D118 (53528) */ + 3347, /* D119 (53529) */ + 3347, /* D11A (53530) */ + 3347, /* D11B (53531) */ + 3347, /* D11C (53532) */ + 3347, /* D11D (53533) */ + 3347, /* D11E (53534) */ + 3347, /* D11F (53535) */ + 3347, /* D120 (53536) */ + 3347, /* D121 (53537) */ + 3347, /* D122 (53538) */ + 3347, /* D123 (53539) */ + 3347, /* D124 (53540) */ + 3347, /* D125 (53541) */ + 3347, /* D126 (53542) */ + 3347, /* D127 (53543) */ + 3347, /* D128 (53544) */ + 3347, /* D129 (53545) */ + 3347, /* D12A (53546) */ + 3347, /* D12B (53547) */ + 3347, /* D12C (53548) */ + 3347, /* D12D (53549) */ + 3347, /* D12E (53550) */ + 3347, /* D12F (53551) */ + 3347, /* D130 (53552) */ + 3347, /* D131 (53553) */ + 3347, /* D132 (53554) */ + 3347, /* D133 (53555) */ + 3347, /* D134 (53556) */ + 3347, /* D135 (53557) */ + 3347, /* D136 (53558) */ + 3347, /* D137 (53559) */ + 3347, /* D138 (53560) */ + 3347, /* D139 (53561) */ + 3347, /* D13A (53562) */ + 3347, /* D13B (53563) */ + 3347, /* D13C (53564) */ + 3347, /* D13D (53565) */ + 3347, /* D13E (53566) */ + 3347, /* D13F (53567) */ + 3347, /* D140 (53568) */ + 3347, /* D141 (53569) */ + 3347, /* D142 (53570) */ + 3347, /* D143 (53571) */ + 3347, /* D144 (53572) */ + 3347, /* D145 (53573) */ + 3347, /* D146 (53574) */ + 3347, /* D147 (53575) */ + 3347, /* D148 (53576) */ + 3347, /* D149 (53577) */ + 3347, /* D14A (53578) */ + 3347, /* D14B (53579) */ + 3347, /* D14C (53580) */ + 3347, /* D14D (53581) */ + 3347, /* D14E (53582) */ + 3347, /* D14F (53583) */ + 3347, /* D150 (53584) */ + 3347, /* D151 (53585) */ + 3347, /* D152 (53586) */ + 3347, /* D153 (53587) */ + 3347, /* D154 (53588) */ + 3347, /* D155 (53589) */ + 3347, /* D156 (53590) */ + 3347, /* D157 (53591) */ + 3347, /* D158 (53592) */ + 3347, /* D159 (53593) */ + 3347, /* D15A (53594) */ + 3347, /* D15B (53595) */ + 3347, /* D15C (53596) */ + 3347, /* D15D (53597) */ + 3347, /* D15E (53598) */ + 3347, /* D15F (53599) */ + 3347, /* D160 (53600) */ + 3347, /* D161 (53601) */ + 3347, /* D162 (53602) */ + 3347, /* D163 (53603) */ + 3347, /* D164 (53604) */ + 3347, /* D165 (53605) */ + 3347, /* D166 (53606) */ + 3347, /* D167 (53607) */ + 3347, /* D168 (53608) */ + 3347, /* D169 (53609) */ + 3347, /* D16A (53610) */ + 3347, /* D16B (53611) */ + 3347, /* D16C (53612) */ + 3347, /* D16D (53613) */ + 3347, /* D16E (53614) */ + 3347, /* D16F (53615) */ + 3347, /* D170 (53616) */ + 3347, /* D171 (53617) */ + 3347, /* D172 (53618) */ + 3347, /* D173 (53619) */ + 3347, /* D174 (53620) */ + 3347, /* D175 (53621) */ + 3347, /* D176 (53622) */ + 3347, /* D177 (53623) */ + 3347, /* D178 (53624) */ + 3347, /* D179 (53625) */ + 3347, /* D17A (53626) */ + 3347, /* D17B (53627) */ + 3347, /* D17C (53628) */ + 3347, /* D17D (53629) */ + 3347, /* D17E (53630) */ + 3347, /* D17F (53631) */ + 3347, /* D180 (53632) */ + 3347, /* D181 (53633) */ + 3347, /* D182 (53634) */ + 3347, /* D183 (53635) */ + 3347, /* D184 (53636) */ + 3347, /* D185 (53637) */ + 3347, /* D186 (53638) */ + 3347, /* D187 (53639) */ + 3347, /* D188 (53640) */ + 3347, /* D189 (53641) */ + 3347, /* D18A (53642) */ + 3347, /* D18B (53643) */ + 3347, /* D18C (53644) */ + 3347, /* D18D (53645) */ + 3347, /* D18E (53646) */ + 3347, /* D18F (53647) */ + 3347, /* D190 (53648) */ + 3347, /* D191 (53649) */ + 3347, /* D192 (53650) */ + 3347, /* D193 (53651) */ + 3347, /* D194 (53652) */ + 3347, /* D195 (53653) */ + 3347, /* D196 (53654) */ + 3347, /* D197 (53655) */ + 3347, /* D198 (53656) */ + 3347, /* D199 (53657) */ + 3347, /* D19A (53658) */ + 3347, /* D19B (53659) */ + 3347, /* D19C (53660) */ + 3347, /* D19D (53661) */ + 3347, /* D19E (53662) */ + 3347, /* D19F (53663) */ + 3347, /* D1A0 (53664) */ + 3347, /* D1A1 (53665) */ + 3347, /* D1A2 (53666) */ + 3347, /* D1A3 (53667) */ + 3347, /* D1A4 (53668) */ + 3347, /* D1A5 (53669) */ + 3347, /* D1A6 (53670) */ + 3347, /* D1A7 (53671) */ + 3347, /* D1A8 (53672) */ + 3347, /* D1A9 (53673) */ + 3347, /* D1AA (53674) */ + 3347, /* D1AB (53675) */ + 3347, /* D1AC (53676) */ + 3347, /* D1AD (53677) */ + 3347, /* D1AE (53678) */ + 3347, /* D1AF (53679) */ + 3347, /* D1B0 (53680) */ + 3347, /* D1B1 (53681) */ + 3347, /* D1B2 (53682) */ + 3347, /* D1B3 (53683) */ + 3347, /* D1B4 (53684) */ + 3347, /* D1B5 (53685) */ + 3347, /* D1B6 (53686) */ + 3347, /* D1B7 (53687) */ + 3347, /* D1B8 (53688) */ + 3347, /* D1B9 (53689) */ + 3347, /* D1BA (53690) */ + 3347, /* D1BB (53691) */ + 3347, /* D1BC (53692) */ + 3347, /* D1BD (53693) */ + 3347, /* D1BE (53694) */ + 3347, /* D1BF (53695) */ + 3347, /* D1C0 (53696) */ + 3347, /* D1C1 (53697) */ + 3347, /* D1C2 (53698) */ + 3347, /* D1C3 (53699) */ + 3347, /* D1C4 (53700) */ + 3347, /* D1C5 (53701) */ + 3347, /* D1C6 (53702) */ + 3347, /* D1C7 (53703) */ + 3347, /* D1C8 (53704) */ + 3347, /* D1C9 (53705) */ + 3347, /* D1CA (53706) */ + 3347, /* D1CB (53707) */ + 3347, /* D1CC (53708) */ + 3347, /* D1CD (53709) */ + 3347, /* D1CE (53710) */ + 3347, /* D1CF (53711) */ + 3347, /* D1D0 (53712) */ + 3347, /* D1D1 (53713) */ + 3347, /* D1D2 (53714) */ + 3347, /* D1D3 (53715) */ + 3347, /* D1D4 (53716) */ + 3347, /* D1D5 (53717) */ + 3347, /* D1D6 (53718) */ + 3347, /* D1D7 (53719) */ + 3347, /* D1D8 (53720) */ + 3347, /* D1D9 (53721) */ + 3347, /* D1DA (53722) */ + 3347, /* D1DB (53723) */ + 3347, /* D1DC (53724) */ + 3347, /* D1DD (53725) */ + 3347, /* D1DE (53726) */ + 3347, /* D1DF (53727) */ + 3347, /* D1E0 (53728) */ + 3347, /* D1E1 (53729) */ + 3347, /* D1E2 (53730) */ + 3347, /* D1E3 (53731) */ + 3347, /* D1E4 (53732) */ + 3347, /* D1E5 (53733) */ + 3347, /* D1E6 (53734) */ + 3347, /* D1E7 (53735) */ + 3347, /* D1E8 (53736) */ + 3347, /* D1E9 (53737) */ + 3347, /* D1EA (53738) */ + 3347, /* D1EB (53739) */ + 3347, /* D1EC (53740) */ + 3347, /* D1ED (53741) */ + 3347, /* D1EE (53742) */ + 3347, /* D1EF (53743) */ + 3347, /* D1F0 (53744) */ + 3347, /* D1F1 (53745) */ + 3347, /* D1F2 (53746) */ + 3347, /* D1F3 (53747) */ + 3347, /* D1F4 (53748) */ + 3347, /* D1F5 (53749) */ + 3347, /* D1F6 (53750) */ + 3347, /* D1F7 (53751) */ + 3347, /* D1F8 (53752) */ + 3347, /* D1F9 (53753) */ + 3347, /* D1FA (53754) */ + 3347, /* D1FB (53755) */ + 3347, /* D1FC (53756) */ + 3347, /* D1FD (53757) */ + 3347, /* D1FE (53758) */ + 3347, /* D1FF (53759) */ + 3347, /* D200 (53760) */ + 3347, /* D201 (53761) */ + 3347, /* D202 (53762) */ + 3347, /* D203 (53763) */ + 3347, /* D204 (53764) */ + 3347, /* D205 (53765) */ + 3347, /* D206 (53766) */ + 3347, /* D207 (53767) */ + 3347, /* D208 (53768) */ + 3347, /* D209 (53769) */ + 3347, /* D20A (53770) */ + 3347, /* D20B (53771) */ + 3347, /* D20C (53772) */ + 3347, /* D20D (53773) */ + 3347, /* D20E (53774) */ + 3347, /* D20F (53775) */ + 3347, /* D210 (53776) */ + 3347, /* D211 (53777) */ + 3347, /* D212 (53778) */ + 3347, /* D213 (53779) */ + 3347, /* D214 (53780) */ + 3347, /* D215 (53781) */ + 3347, /* D216 (53782) */ + 3347, /* D217 (53783) */ + 3347, /* D218 (53784) */ + 3347, /* D219 (53785) */ + 3347, /* D21A (53786) */ + 3347, /* D21B (53787) */ + 3347, /* D21C (53788) */ + 3347, /* D21D (53789) */ + 3347, /* D21E (53790) */ + 3347, /* D21F (53791) */ + 3347, /* D220 (53792) */ + 3347, /* D221 (53793) */ + 3347, /* D222 (53794) */ + 3347, /* D223 (53795) */ + 3347, /* D224 (53796) */ + 3347, /* D225 (53797) */ + 3347, /* D226 (53798) */ + 3347, /* D227 (53799) */ + 3347, /* D228 (53800) */ + 3347, /* D229 (53801) */ + 3347, /* D22A (53802) */ + 3347, /* D22B (53803) */ + 3347, /* D22C (53804) */ + 3347, /* D22D (53805) */ + 3347, /* D22E (53806) */ + 3347, /* D22F (53807) */ + 3347, /* D230 (53808) */ + 3347, /* D231 (53809) */ + 3347, /* D232 (53810) */ + 3347, /* D233 (53811) */ + 3347, /* D234 (53812) */ + 3347, /* D235 (53813) */ + 3347, /* D236 (53814) */ + 3347, /* D237 (53815) */ + 3347, /* D238 (53816) */ + 3347, /* D239 (53817) */ + 3347, /* D23A (53818) */ + 3347, /* D23B (53819) */ + 3347, /* D23C (53820) */ + 3347, /* D23D (53821) */ + 3347, /* D23E (53822) */ + 3347, /* D23F (53823) */ + 3347, /* D240 (53824) */ + 3347, /* D241 (53825) */ + 3347, /* D242 (53826) */ + 3347, /* D243 (53827) */ + 3347, /* D244 (53828) */ + 3347, /* D245 (53829) */ + 3347, /* D246 (53830) */ + 3347, /* D247 (53831) */ + 3347, /* D248 (53832) */ + 3347, /* D249 (53833) */ + 3347, /* D24A (53834) */ + 3347, /* D24B (53835) */ + 3347, /* D24C (53836) */ + 3347, /* D24D (53837) */ + 3347, /* D24E (53838) */ + 3347, /* D24F (53839) */ + 3347, /* D250 (53840) */ + 3347, /* D251 (53841) */ + 3347, /* D252 (53842) */ + 3347, /* D253 (53843) */ + 3347, /* D254 (53844) */ + 3347, /* D255 (53845) */ + 3347, /* D256 (53846) */ + 3347, /* D257 (53847) */ + 3347, /* D258 (53848) */ + 3347, /* D259 (53849) */ + 3347, /* D25A (53850) */ + 3347, /* D25B (53851) */ + 3347, /* D25C (53852) */ + 3347, /* D25D (53853) */ + 3347, /* D25E (53854) */ + 3347, /* D25F (53855) */ + 3347, /* D260 (53856) */ + 3347, /* D261 (53857) */ + 3347, /* D262 (53858) */ + 3347, /* D263 (53859) */ + 3347, /* D264 (53860) */ + 3347, /* D265 (53861) */ + 3347, /* D266 (53862) */ + 3347, /* D267 (53863) */ + 3347, /* D268 (53864) */ + 3347, /* D269 (53865) */ + 3347, /* D26A (53866) */ + 3347, /* D26B (53867) */ + 3347, /* D26C (53868) */ + 3347, /* D26D (53869) */ + 3347, /* D26E (53870) */ + 3347, /* D26F (53871) */ + 3347, /* D270 (53872) */ + 3347, /* D271 (53873) */ + 3347, /* D272 (53874) */ + 3347, /* D273 (53875) */ + 3347, /* D274 (53876) */ + 3347, /* D275 (53877) */ + 3347, /* D276 (53878) */ + 3347, /* D277 (53879) */ + 3347, /* D278 (53880) */ + 3347, /* D279 (53881) */ + 3347, /* D27A (53882) */ + 3347, /* D27B (53883) */ + 3347, /* D27C (53884) */ + 3347, /* D27D (53885) */ + 3347, /* D27E (53886) */ + 3347, /* D27F (53887) */ + 3347, /* D280 (53888) */ + 3347, /* D281 (53889) */ + 3347, /* D282 (53890) */ + 3347, /* D283 (53891) */ + 3347, /* D284 (53892) */ + 3347, /* D285 (53893) */ + 3347, /* D286 (53894) */ + 3347, /* D287 (53895) */ + 3347, /* D288 (53896) */ + 3347, /* D289 (53897) */ + 3347, /* D28A (53898) */ + 3347, /* D28B (53899) */ + 3347, /* D28C (53900) */ + 3347, /* D28D (53901) */ + 3347, /* D28E (53902) */ + 3347, /* D28F (53903) */ + 3347, /* D290 (53904) */ + 3347, /* D291 (53905) */ + 3347, /* D292 (53906) */ + 3347, /* D293 (53907) */ + 3347, /* D294 (53908) */ + 3347, /* D295 (53909) */ + 3347, /* D296 (53910) */ + 3347, /* D297 (53911) */ + 3347, /* D298 (53912) */ + 3347, /* D299 (53913) */ + 3347, /* D29A (53914) */ + 3347, /* D29B (53915) */ + 3347, /* D29C (53916) */ + 3347, /* D29D (53917) */ + 3347, /* D29E (53918) */ + 3347, /* D29F (53919) */ + 3347, /* D2A0 (53920) */ + 3347, /* D2A1 (53921) */ + 3347, /* D2A2 (53922) */ + 3347, /* D2A3 (53923) */ + 3347, /* D2A4 (53924) */ + 3347, /* D2A5 (53925) */ + 3347, /* D2A6 (53926) */ + 3347, /* D2A7 (53927) */ + 3347, /* D2A8 (53928) */ + 3347, /* D2A9 (53929) */ + 3347, /* D2AA (53930) */ + 3347, /* D2AB (53931) */ + 3347, /* D2AC (53932) */ + 3347, /* D2AD (53933) */ + 3347, /* D2AE (53934) */ + 3347, /* D2AF (53935) */ + 3347, /* D2B0 (53936) */ + 3347, /* D2B1 (53937) */ + 3347, /* D2B2 (53938) */ + 3347, /* D2B3 (53939) */ + 3347, /* D2B4 (53940) */ + 3347, /* D2B5 (53941) */ + 3347, /* D2B6 (53942) */ + 3347, /* D2B7 (53943) */ + 3347, /* D2B8 (53944) */ + 3347, /* D2B9 (53945) */ + 3347, /* D2BA (53946) */ + 3347, /* D2BB (53947) */ + 3347, /* D2BC (53948) */ + 3347, /* D2BD (53949) */ + 3347, /* D2BE (53950) */ + 3347, /* D2BF (53951) */ + 3347, /* D2C0 (53952) */ + 3347, /* D2C1 (53953) */ + 3347, /* D2C2 (53954) */ + 3347, /* D2C3 (53955) */ + 3347, /* D2C4 (53956) */ + 3347, /* D2C5 (53957) */ + 3347, /* D2C6 (53958) */ + 3347, /* D2C7 (53959) */ + 3347, /* D2C8 (53960) */ + 3347, /* D2C9 (53961) */ + 3347, /* D2CA (53962) */ + 3347, /* D2CB (53963) */ + 3347, /* D2CC (53964) */ + 3347, /* D2CD (53965) */ + 3347, /* D2CE (53966) */ + 3347, /* D2CF (53967) */ + 3347, /* D2D0 (53968) */ + 3347, /* D2D1 (53969) */ + 3347, /* D2D2 (53970) */ + 3347, /* D2D3 (53971) */ + 3347, /* D2D4 (53972) */ + 3347, /* D2D5 (53973) */ + 3347, /* D2D6 (53974) */ + 3347, /* D2D7 (53975) */ + 3347, /* D2D8 (53976) */ + 3347, /* D2D9 (53977) */ + 3347, /* D2DA (53978) */ + 3347, /* D2DB (53979) */ + 3347, /* D2DC (53980) */ + 3347, /* D2DD (53981) */ + 3347, /* D2DE (53982) */ + 3347, /* D2DF (53983) */ + 3347, /* D2E0 (53984) */ + 3347, /* D2E1 (53985) */ + 3347, /* D2E2 (53986) */ + 3347, /* D2E3 (53987) */ + 3347, /* D2E4 (53988) */ + 3347, /* D2E5 (53989) */ + 3347, /* D2E6 (53990) */ + 3347, /* D2E7 (53991) */ + 3347, /* D2E8 (53992) */ + 3347, /* D2E9 (53993) */ + 3347, /* D2EA (53994) */ + 3347, /* D2EB (53995) */ + 3347, /* D2EC (53996) */ + 3347, /* D2ED (53997) */ + 3347, /* D2EE (53998) */ + 3347, /* D2EF (53999) */ + 3347, /* D2F0 (54000) */ + 3347, /* D2F1 (54001) */ + 3347, /* D2F2 (54002) */ + 3347, /* D2F3 (54003) */ + 3347, /* D2F4 (54004) */ + 3347, /* D2F5 (54005) */ + 3347, /* D2F6 (54006) */ + 3347, /* D2F7 (54007) */ + 3347, /* D2F8 (54008) */ + 3347, /* D2F9 (54009) */ + 3347, /* D2FA (54010) */ + 3347, /* D2FB (54011) */ + 3347, /* D2FC (54012) */ + 3347, /* D2FD (54013) */ + 3347, /* D2FE (54014) */ + 3347, /* D2FF (54015) */ + 3347, /* D300 (54016) */ + 3347, /* D301 (54017) */ + 3347, /* D302 (54018) */ + 3347, /* D303 (54019) */ + 3347, /* D304 (54020) */ + 3347, /* D305 (54021) */ + 3347, /* D306 (54022) */ + 3347, /* D307 (54023) */ + 3347, /* D308 (54024) */ + 3347, /* D309 (54025) */ + 3347, /* D30A (54026) */ + 3347, /* D30B (54027) */ + 3347, /* D30C (54028) */ + 3347, /* D30D (54029) */ + 3347, /* D30E (54030) */ + 3347, /* D30F (54031) */ + 3347, /* D310 (54032) */ + 3347, /* D311 (54033) */ + 3347, /* D312 (54034) */ + 3347, /* D313 (54035) */ + 3347, /* D314 (54036) */ + 3347, /* D315 (54037) */ + 3347, /* D316 (54038) */ + 3347, /* D317 (54039) */ + 3347, /* D318 (54040) */ + 3347, /* D319 (54041) */ + 3347, /* D31A (54042) */ + 3347, /* D31B (54043) */ + 3347, /* D31C (54044) */ + 3347, /* D31D (54045) */ + 3347, /* D31E (54046) */ + 3347, /* D31F (54047) */ + 3347, /* D320 (54048) */ + 3347, /* D321 (54049) */ + 3347, /* D322 (54050) */ + 3347, /* D323 (54051) */ + 3347, /* D324 (54052) */ + 3347, /* D325 (54053) */ + 3347, /* D326 (54054) */ + 3347, /* D327 (54055) */ + 3347, /* D328 (54056) */ + 3347, /* D329 (54057) */ + 3347, /* D32A (54058) */ + 3347, /* D32B (54059) */ + 3347, /* D32C (54060) */ + 3347, /* D32D (54061) */ + 3347, /* D32E (54062) */ + 3347, /* D32F (54063) */ + 3347, /* D330 (54064) */ + 3347, /* D331 (54065) */ + 3347, /* D332 (54066) */ + 3347, /* D333 (54067) */ + 3347, /* D334 (54068) */ + 3347, /* D335 (54069) */ + 3347, /* D336 (54070) */ + 3347, /* D337 (54071) */ + 3347, /* D338 (54072) */ + 3347, /* D339 (54073) */ + 3347, /* D33A (54074) */ + 3347, /* D33B (54075) */ + 3347, /* D33C (54076) */ + 3347, /* D33D (54077) */ + 3347, /* D33E (54078) */ + 3347, /* D33F (54079) */ + 3347, /* D340 (54080) */ + 3347, /* D341 (54081) */ + 3347, /* D342 (54082) */ + 3347, /* D343 (54083) */ + 3347, /* D344 (54084) */ + 3347, /* D345 (54085) */ + 3347, /* D346 (54086) */ + 3347, /* D347 (54087) */ + 3347, /* D348 (54088) */ + 3347, /* D349 (54089) */ + 3347, /* D34A (54090) */ + 3347, /* D34B (54091) */ + 3347, /* D34C (54092) */ + 3347, /* D34D (54093) */ + 3347, /* D34E (54094) */ + 3347, /* D34F (54095) */ + 3347, /* D350 (54096) */ + 3347, /* D351 (54097) */ + 3347, /* D352 (54098) */ + 3347, /* D353 (54099) */ + 3347, /* D354 (54100) */ + 3347, /* D355 (54101) */ + 3347, /* D356 (54102) */ + 3347, /* D357 (54103) */ + 3347, /* D358 (54104) */ + 3347, /* D359 (54105) */ + 3347, /* D35A (54106) */ + 3347, /* D35B (54107) */ + 3347, /* D35C (54108) */ + 3347, /* D35D (54109) */ + 3347, /* D35E (54110) */ + 3347, /* D35F (54111) */ + 3347, /* D360 (54112) */ + 3347, /* D361 (54113) */ + 3347, /* D362 (54114) */ + 3347, /* D363 (54115) */ + 3347, /* D364 (54116) */ + 3347, /* D365 (54117) */ + 3347, /* D366 (54118) */ + 3347, /* D367 (54119) */ + 3347, /* D368 (54120) */ + 3347, /* D369 (54121) */ + 3347, /* D36A (54122) */ + 3347, /* D36B (54123) */ + 3347, /* D36C (54124) */ + 3347, /* D36D (54125) */ + 3347, /* D36E (54126) */ + 3347, /* D36F (54127) */ + 3347, /* D370 (54128) */ + 3347, /* D371 (54129) */ + 3347, /* D372 (54130) */ + 3347, /* D373 (54131) */ + 3347, /* D374 (54132) */ + 3347, /* D375 (54133) */ + 3347, /* D376 (54134) */ + 3347, /* D377 (54135) */ + 3347, /* D378 (54136) */ + 3347, /* D379 (54137) */ + 3347, /* D37A (54138) */ + 3347, /* D37B (54139) */ + 3347, /* D37C (54140) */ + 3347, /* D37D (54141) */ + 3347, /* D37E (54142) */ + 3347, /* D37F (54143) */ + 3347, /* D380 (54144) */ + 3347, /* D381 (54145) */ + 3347, /* D382 (54146) */ + 3347, /* D383 (54147) */ + 3347, /* D384 (54148) */ + 3347, /* D385 (54149) */ + 3347, /* D386 (54150) */ + 3347, /* D387 (54151) */ + 3347, /* D388 (54152) */ + 3347, /* D389 (54153) */ + 3347, /* D38A (54154) */ + 3347, /* D38B (54155) */ + 3347, /* D38C (54156) */ + 3347, /* D38D (54157) */ + 3347, /* D38E (54158) */ + 3347, /* D38F (54159) */ + 3347, /* D390 (54160) */ + 3347, /* D391 (54161) */ + 3347, /* D392 (54162) */ + 3347, /* D393 (54163) */ + 3347, /* D394 (54164) */ + 3347, /* D395 (54165) */ + 3347, /* D396 (54166) */ + 3347, /* D397 (54167) */ + 3347, /* D398 (54168) */ + 3347, /* D399 (54169) */ + 3347, /* D39A (54170) */ + 3347, /* D39B (54171) */ + 3347, /* D39C (54172) */ + 3347, /* D39D (54173) */ + 3347, /* D39E (54174) */ + 3347, /* D39F (54175) */ + 3347, /* D3A0 (54176) */ + 3347, /* D3A1 (54177) */ + 3347, /* D3A2 (54178) */ + 3347, /* D3A3 (54179) */ + 3347, /* D3A4 (54180) */ + 3347, /* D3A5 (54181) */ + 3347, /* D3A6 (54182) */ + 3347, /* D3A7 (54183) */ + 3347, /* D3A8 (54184) */ + 3347, /* D3A9 (54185) */ + 3347, /* D3AA (54186) */ + 3347, /* D3AB (54187) */ + 3347, /* D3AC (54188) */ + 3347, /* D3AD (54189) */ + 3347, /* D3AE (54190) */ + 3347, /* D3AF (54191) */ + 3347, /* D3B0 (54192) */ + 3347, /* D3B1 (54193) */ + 3347, /* D3B2 (54194) */ + 3347, /* D3B3 (54195) */ + 3347, /* D3B4 (54196) */ + 3347, /* D3B5 (54197) */ + 3347, /* D3B6 (54198) */ + 3347, /* D3B7 (54199) */ + 3347, /* D3B8 (54200) */ + 3347, /* D3B9 (54201) */ + 3347, /* D3BA (54202) */ + 3347, /* D3BB (54203) */ + 3347, /* D3BC (54204) */ + 3347, /* D3BD (54205) */ + 3347, /* D3BE (54206) */ + 3347, /* D3BF (54207) */ + 3347, /* D3C0 (54208) */ + 3347, /* D3C1 (54209) */ + 3347, /* D3C2 (54210) */ + 3347, /* D3C3 (54211) */ + 3347, /* D3C4 (54212) */ + 3347, /* D3C5 (54213) */ + 3347, /* D3C6 (54214) */ + 3347, /* D3C7 (54215) */ + 3347, /* D3C8 (54216) */ + 3347, /* D3C9 (54217) */ + 3347, /* D3CA (54218) */ + 3347, /* D3CB (54219) */ + 3347, /* D3CC (54220) */ + 3347, /* D3CD (54221) */ + 3347, /* D3CE (54222) */ + 3347, /* D3CF (54223) */ + 3347, /* D3D0 (54224) */ + 3347, /* D3D1 (54225) */ + 3347, /* D3D2 (54226) */ + 3347, /* D3D3 (54227) */ + 3347, /* D3D4 (54228) */ + 3347, /* D3D5 (54229) */ + 3347, /* D3D6 (54230) */ + 3347, /* D3D7 (54231) */ + 3347, /* D3D8 (54232) */ + 3347, /* D3D9 (54233) */ + 3347, /* D3DA (54234) */ + 3347, /* D3DB (54235) */ + 3347, /* D3DC (54236) */ + 3347, /* D3DD (54237) */ + 3347, /* D3DE (54238) */ + 3347, /* D3DF (54239) */ + 3347, /* D3E0 (54240) */ + 3347, /* D3E1 (54241) */ + 3347, /* D3E2 (54242) */ + 3347, /* D3E3 (54243) */ + 3347, /* D3E4 (54244) */ + 3347, /* D3E5 (54245) */ + 3347, /* D3E6 (54246) */ + 3347, /* D3E7 (54247) */ + 3347, /* D3E8 (54248) */ + 3347, /* D3E9 (54249) */ + 3347, /* D3EA (54250) */ + 3347, /* D3EB (54251) */ + 3347, /* D3EC (54252) */ + 3347, /* D3ED (54253) */ + 3347, /* D3EE (54254) */ + 3347, /* D3EF (54255) */ + 3347, /* D3F0 (54256) */ + 3347, /* D3F1 (54257) */ + 3347, /* D3F2 (54258) */ + 3347, /* D3F3 (54259) */ + 3347, /* D3F4 (54260) */ + 3347, /* D3F5 (54261) */ + 3347, /* D3F6 (54262) */ + 3347, /* D3F7 (54263) */ + 3347, /* D3F8 (54264) */ + 3347, /* D3F9 (54265) */ + 3347, /* D3FA (54266) */ + 3347, /* D3FB (54267) */ + 3347, /* D3FC (54268) */ + 3347, /* D3FD (54269) */ + 3347, /* D3FE (54270) */ + 3347, /* D3FF (54271) */ + 3347, /* D400 (54272) */ + 3347, /* D401 (54273) */ + 3347, /* D402 (54274) */ + 3347, /* D403 (54275) */ + 3347, /* D404 (54276) */ + 3347, /* D405 (54277) */ + 3347, /* D406 (54278) */ + 3347, /* D407 (54279) */ + 3347, /* D408 (54280) */ + 3347, /* D409 (54281) */ + 3347, /* D40A (54282) */ + 3347, /* D40B (54283) */ + 3347, /* D40C (54284) */ + 3347, /* D40D (54285) */ + 3347, /* D40E (54286) */ + 3347, /* D40F (54287) */ + 3347, /* D410 (54288) */ + 3347, /* D411 (54289) */ + 3347, /* D412 (54290) */ + 3347, /* D413 (54291) */ + 3347, /* D414 (54292) */ + 3347, /* D415 (54293) */ + 3347, /* D416 (54294) */ + 3347, /* D417 (54295) */ + 3347, /* D418 (54296) */ + 3347, /* D419 (54297) */ + 3347, /* D41A (54298) */ + 3347, /* D41B (54299) */ + 3347, /* D41C (54300) */ + 3347, /* D41D (54301) */ + 3347, /* D41E (54302) */ + 3347, /* D41F (54303) */ + 3347, /* D420 (54304) */ + 3347, /* D421 (54305) */ + 3347, /* D422 (54306) */ + 3347, /* D423 (54307) */ + 3347, /* D424 (54308) */ + 3347, /* D425 (54309) */ + 3347, /* D426 (54310) */ + 3347, /* D427 (54311) */ + 3347, /* D428 (54312) */ + 3347, /* D429 (54313) */ + 3347, /* D42A (54314) */ + 3347, /* D42B (54315) */ + 3347, /* D42C (54316) */ + 3347, /* D42D (54317) */ + 3347, /* D42E (54318) */ + 3347, /* D42F (54319) */ + 3347, /* D430 (54320) */ + 3347, /* D431 (54321) */ + 3347, /* D432 (54322) */ + 3347, /* D433 (54323) */ + 3347, /* D434 (54324) */ + 3347, /* D435 (54325) */ + 3347, /* D436 (54326) */ + 3347, /* D437 (54327) */ + 3347, /* D438 (54328) */ + 3347, /* D439 (54329) */ + 3347, /* D43A (54330) */ + 3347, /* D43B (54331) */ + 3347, /* D43C (54332) */ + 3347, /* D43D (54333) */ + 3347, /* D43E (54334) */ + 3347, /* D43F (54335) */ + 3347, /* D440 (54336) */ + 3347, /* D441 (54337) */ + 3347, /* D442 (54338) */ + 3347, /* D443 (54339) */ + 3347, /* D444 (54340) */ + 3347, /* D445 (54341) */ + 3347, /* D446 (54342) */ + 3347, /* D447 (54343) */ + 3347, /* D448 (54344) */ + 3347, /* D449 (54345) */ + 3347, /* D44A (54346) */ + 3347, /* D44B (54347) */ + 3347, /* D44C (54348) */ + 3347, /* D44D (54349) */ + 3347, /* D44E (54350) */ + 3347, /* D44F (54351) */ + 3347, /* D450 (54352) */ + 3347, /* D451 (54353) */ + 3347, /* D452 (54354) */ + 3347, /* D453 (54355) */ + 3347, /* D454 (54356) */ + 3347, /* D455 (54357) */ + 3347, /* D456 (54358) */ + 3347, /* D457 (54359) */ + 3347, /* D458 (54360) */ + 3347, /* D459 (54361) */ + 3347, /* D45A (54362) */ + 3347, /* D45B (54363) */ + 3347, /* D45C (54364) */ + 3347, /* D45D (54365) */ + 3347, /* D45E (54366) */ + 3347, /* D45F (54367) */ + 3347, /* D460 (54368) */ + 3347, /* D461 (54369) */ + 3347, /* D462 (54370) */ + 3347, /* D463 (54371) */ + 3347, /* D464 (54372) */ + 3347, /* D465 (54373) */ + 3347, /* D466 (54374) */ + 3347, /* D467 (54375) */ + 3347, /* D468 (54376) */ + 3347, /* D469 (54377) */ + 3347, /* D46A (54378) */ + 3347, /* D46B (54379) */ + 3347, /* D46C (54380) */ + 3347, /* D46D (54381) */ + 3347, /* D46E (54382) */ + 3347, /* D46F (54383) */ + 3347, /* D470 (54384) */ + 3347, /* D471 (54385) */ + 3347, /* D472 (54386) */ + 3347, /* D473 (54387) */ + 3347, /* D474 (54388) */ + 3347, /* D475 (54389) */ + 3347, /* D476 (54390) */ + 3347, /* D477 (54391) */ + 3347, /* D478 (54392) */ + 3347, /* D479 (54393) */ + 3347, /* D47A (54394) */ + 3347, /* D47B (54395) */ + 3347, /* D47C (54396) */ + 3347, /* D47D (54397) */ + 3347, /* D47E (54398) */ + 3347, /* D47F (54399) */ + 3347, /* D480 (54400) */ + 3347, /* D481 (54401) */ + 3347, /* D482 (54402) */ + 3347, /* D483 (54403) */ + 3347, /* D484 (54404) */ + 3347, /* D485 (54405) */ + 3347, /* D486 (54406) */ + 3347, /* D487 (54407) */ + 3347, /* D488 (54408) */ + 3347, /* D489 (54409) */ + 3347, /* D48A (54410) */ + 3347, /* D48B (54411) */ + 3347, /* D48C (54412) */ + 3347, /* D48D (54413) */ + 3347, /* D48E (54414) */ + 3347, /* D48F (54415) */ + 3347, /* D490 (54416) */ + 3347, /* D491 (54417) */ + 3347, /* D492 (54418) */ + 3347, /* D493 (54419) */ + 3347, /* D494 (54420) */ + 3347, /* D495 (54421) */ + 3347, /* D496 (54422) */ + 3347, /* D497 (54423) */ + 3347, /* D498 (54424) */ + 3347, /* D499 (54425) */ + 3347, /* D49A (54426) */ + 3347, /* D49B (54427) */ + 3347, /* D49C (54428) */ + 3347, /* D49D (54429) */ + 3347, /* D49E (54430) */ + 3347, /* D49F (54431) */ + 3347, /* D4A0 (54432) */ + 3347, /* D4A1 (54433) */ + 3347, /* D4A2 (54434) */ + 3347, /* D4A3 (54435) */ + 3347, /* D4A4 (54436) */ + 3347, /* D4A5 (54437) */ + 3347, /* D4A6 (54438) */ + 3347, /* D4A7 (54439) */ + 3347, /* D4A8 (54440) */ + 3347, /* D4A9 (54441) */ + 3347, /* D4AA (54442) */ + 3347, /* D4AB (54443) */ + 3347, /* D4AC (54444) */ + 3347, /* D4AD (54445) */ + 3347, /* D4AE (54446) */ + 3347, /* D4AF (54447) */ + 3347, /* D4B0 (54448) */ + 3347, /* D4B1 (54449) */ + 3347, /* D4B2 (54450) */ + 3347, /* D4B3 (54451) */ + 3347, /* D4B4 (54452) */ + 3347, /* D4B5 (54453) */ + 3347, /* D4B6 (54454) */ + 3347, /* D4B7 (54455) */ + 3347, /* D4B8 (54456) */ + 3347, /* D4B9 (54457) */ + 3347, /* D4BA (54458) */ + 3347, /* D4BB (54459) */ + 3347, /* D4BC (54460) */ + 3347, /* D4BD (54461) */ + 3347, /* D4BE (54462) */ + 3347, /* D4BF (54463) */ + 3347, /* D4C0 (54464) */ + 3347, /* D4C1 (54465) */ + 3347, /* D4C2 (54466) */ + 3347, /* D4C3 (54467) */ + 3347, /* D4C4 (54468) */ + 3347, /* D4C5 (54469) */ + 3347, /* D4C6 (54470) */ + 3347, /* D4C7 (54471) */ + 3347, /* D4C8 (54472) */ + 3347, /* D4C9 (54473) */ + 3347, /* D4CA (54474) */ + 3347, /* D4CB (54475) */ + 3347, /* D4CC (54476) */ + 3347, /* D4CD (54477) */ + 3347, /* D4CE (54478) */ + 3347, /* D4CF (54479) */ + 3347, /* D4D0 (54480) */ + 3347, /* D4D1 (54481) */ + 3347, /* D4D2 (54482) */ + 3347, /* D4D3 (54483) */ + 3347, /* D4D4 (54484) */ + 3347, /* D4D5 (54485) */ + 3347, /* D4D6 (54486) */ + 3347, /* D4D7 (54487) */ + 3347, /* D4D8 (54488) */ + 3347, /* D4D9 (54489) */ + 3347, /* D4DA (54490) */ + 3347, /* D4DB (54491) */ + 3347, /* D4DC (54492) */ + 3347, /* D4DD (54493) */ + 3347, /* D4DE (54494) */ + 3347, /* D4DF (54495) */ + 3347, /* D4E0 (54496) */ + 3347, /* D4E1 (54497) */ + 3347, /* D4E2 (54498) */ + 3347, /* D4E3 (54499) */ + 3347, /* D4E4 (54500) */ + 3347, /* D4E5 (54501) */ + 3347, /* D4E6 (54502) */ + 3347, /* D4E7 (54503) */ + 3347, /* D4E8 (54504) */ + 3347, /* D4E9 (54505) */ + 3347, /* D4EA (54506) */ + 3347, /* D4EB (54507) */ + 3347, /* D4EC (54508) */ + 3347, /* D4ED (54509) */ + 3347, /* D4EE (54510) */ + 3347, /* D4EF (54511) */ + 3347, /* D4F0 (54512) */ + 3347, /* D4F1 (54513) */ + 3347, /* D4F2 (54514) */ + 3347, /* D4F3 (54515) */ + 3347, /* D4F4 (54516) */ + 3347, /* D4F5 (54517) */ + 3347, /* D4F6 (54518) */ + 3347, /* D4F7 (54519) */ + 3347, /* D4F8 (54520) */ + 3347, /* D4F9 (54521) */ + 3347, /* D4FA (54522) */ + 3347, /* D4FB (54523) */ + 3347, /* D4FC (54524) */ + 3347, /* D4FD (54525) */ + 3347, /* D4FE (54526) */ + 3347, /* D4FF (54527) */ + 3347, /* D500 (54528) */ + 3347, /* D501 (54529) */ + 3347, /* D502 (54530) */ + 3347, /* D503 (54531) */ + 3347, /* D504 (54532) */ + 3347, /* D505 (54533) */ + 3347, /* D506 (54534) */ + 3347, /* D507 (54535) */ + 3347, /* D508 (54536) */ + 3347, /* D509 (54537) */ + 3347, /* D50A (54538) */ + 3347, /* D50B (54539) */ + 3347, /* D50C (54540) */ + 3347, /* D50D (54541) */ + 3347, /* D50E (54542) */ + 3347, /* D50F (54543) */ + 3347, /* D510 (54544) */ + 3347, /* D511 (54545) */ + 3347, /* D512 (54546) */ + 3347, /* D513 (54547) */ + 3347, /* D514 (54548) */ + 3347, /* D515 (54549) */ + 3347, /* D516 (54550) */ + 3347, /* D517 (54551) */ + 3347, /* D518 (54552) */ + 3347, /* D519 (54553) */ + 3347, /* D51A (54554) */ + 3347, /* D51B (54555) */ + 3347, /* D51C (54556) */ + 3347, /* D51D (54557) */ + 3347, /* D51E (54558) */ + 3347, /* D51F (54559) */ + 3347, /* D520 (54560) */ + 3347, /* D521 (54561) */ + 3347, /* D522 (54562) */ + 3347, /* D523 (54563) */ + 3347, /* D524 (54564) */ + 3347, /* D525 (54565) */ + 3347, /* D526 (54566) */ + 3347, /* D527 (54567) */ + 3347, /* D528 (54568) */ + 3347, /* D529 (54569) */ + 3347, /* D52A (54570) */ + 3347, /* D52B (54571) */ + 3347, /* D52C (54572) */ + 3347, /* D52D (54573) */ + 3347, /* D52E (54574) */ + 3347, /* D52F (54575) */ + 3347, /* D530 (54576) */ + 3347, /* D531 (54577) */ + 3347, /* D532 (54578) */ + 3347, /* D533 (54579) */ + 3347, /* D534 (54580) */ + 3347, /* D535 (54581) */ + 3347, /* D536 (54582) */ + 3347, /* D537 (54583) */ + 3347, /* D538 (54584) */ + 3347, /* D539 (54585) */ + 3347, /* D53A (54586) */ + 3347, /* D53B (54587) */ + 3347, /* D53C (54588) */ + 3347, /* D53D (54589) */ + 3347, /* D53E (54590) */ + 3347, /* D53F (54591) */ + 3347, /* D540 (54592) */ + 3347, /* D541 (54593) */ + 3347, /* D542 (54594) */ + 3347, /* D543 (54595) */ + 3347, /* D544 (54596) */ + 3347, /* D545 (54597) */ + 3347, /* D546 (54598) */ + 3347, /* D547 (54599) */ + 3347, /* D548 (54600) */ + 3347, /* D549 (54601) */ + 3347, /* D54A (54602) */ + 3347, /* D54B (54603) */ + 3347, /* D54C (54604) */ + 3347, /* D54D (54605) */ + 3347, /* D54E (54606) */ + 3347, /* D54F (54607) */ + 3347, /* D550 (54608) */ + 3347, /* D551 (54609) */ + 3347, /* D552 (54610) */ + 3347, /* D553 (54611) */ + 3347, /* D554 (54612) */ + 3347, /* D555 (54613) */ + 3347, /* D556 (54614) */ + 3347, /* D557 (54615) */ + 3347, /* D558 (54616) */ + 3347, /* D559 (54617) */ + 3347, /* D55A (54618) */ + 3347, /* D55B (54619) */ + 3347, /* D55C (54620) */ + 3347, /* D55D (54621) */ + 3347, /* D55E (54622) */ + 3347, /* D55F (54623) */ + 3347, /* D560 (54624) */ + 3347, /* D561 (54625) */ + 3347, /* D562 (54626) */ + 3347, /* D563 (54627) */ + 3347, /* D564 (54628) */ + 3347, /* D565 (54629) */ + 3347, /* D566 (54630) */ + 3347, /* D567 (54631) */ + 3347, /* D568 (54632) */ + 3347, /* D569 (54633) */ + 3347, /* D56A (54634) */ + 3347, /* D56B (54635) */ + 3347, /* D56C (54636) */ + 3347, /* D56D (54637) */ + 3347, /* D56E (54638) */ + 3347, /* D56F (54639) */ + 3347, /* D570 (54640) */ + 3347, /* D571 (54641) */ + 3347, /* D572 (54642) */ + 3347, /* D573 (54643) */ + 3347, /* D574 (54644) */ + 3347, /* D575 (54645) */ + 3347, /* D576 (54646) */ + 3347, /* D577 (54647) */ + 3347, /* D578 (54648) */ + 3347, /* D579 (54649) */ + 3347, /* D57A (54650) */ + 3347, /* D57B (54651) */ + 3347, /* D57C (54652) */ + 3347, /* D57D (54653) */ + 3347, /* D57E (54654) */ + 3347, /* D57F (54655) */ + 3347, /* D580 (54656) */ + 3347, /* D581 (54657) */ + 3347, /* D582 (54658) */ + 3347, /* D583 (54659) */ + 3347, /* D584 (54660) */ + 3347, /* D585 (54661) */ + 3347, /* D586 (54662) */ + 3347, /* D587 (54663) */ + 3347, /* D588 (54664) */ + 3347, /* D589 (54665) */ + 3347, /* D58A (54666) */ + 3347, /* D58B (54667) */ + 3347, /* D58C (54668) */ + 3347, /* D58D (54669) */ + 3347, /* D58E (54670) */ + 3347, /* D58F (54671) */ + 3347, /* D590 (54672) */ + 3347, /* D591 (54673) */ + 3347, /* D592 (54674) */ + 3347, /* D593 (54675) */ + 3347, /* D594 (54676) */ + 3347, /* D595 (54677) */ + 3347, /* D596 (54678) */ + 3347, /* D597 (54679) */ + 3347, /* D598 (54680) */ + 3347, /* D599 (54681) */ + 3347, /* D59A (54682) */ + 3347, /* D59B (54683) */ + 3347, /* D59C (54684) */ + 3347, /* D59D (54685) */ + 3347, /* D59E (54686) */ + 3347, /* D59F (54687) */ + 3347, /* D5A0 (54688) */ + 3347, /* D5A1 (54689) */ + 3347, /* D5A2 (54690) */ + 3347, /* D5A3 (54691) */ + 3347, /* D5A4 (54692) */ + 3347, /* D5A5 (54693) */ + 3347, /* D5A6 (54694) */ + 3347, /* D5A7 (54695) */ + 3347, /* D5A8 (54696) */ + 3347, /* D5A9 (54697) */ + 3347, /* D5AA (54698) */ + 3347, /* D5AB (54699) */ + 3347, /* D5AC (54700) */ + 3347, /* D5AD (54701) */ + 3347, /* D5AE (54702) */ + 3347, /* D5AF (54703) */ + 3347, /* D5B0 (54704) */ + 3347, /* D5B1 (54705) */ + 3347, /* D5B2 (54706) */ + 3347, /* D5B3 (54707) */ + 3347, /* D5B4 (54708) */ + 3347, /* D5B5 (54709) */ + 3347, /* D5B6 (54710) */ + 3347, /* D5B7 (54711) */ + 3347, /* D5B8 (54712) */ + 3347, /* D5B9 (54713) */ + 3347, /* D5BA (54714) */ + 3347, /* D5BB (54715) */ + 3347, /* D5BC (54716) */ + 3347, /* D5BD (54717) */ + 3347, /* D5BE (54718) */ + 3347, /* D5BF (54719) */ + 3347, /* D5C0 (54720) */ + 3347, /* D5C1 (54721) */ + 3347, /* D5C2 (54722) */ + 3347, /* D5C3 (54723) */ + 3347, /* D5C4 (54724) */ + 3347, /* D5C5 (54725) */ + 3347, /* D5C6 (54726) */ + 3347, /* D5C7 (54727) */ + 3347, /* D5C8 (54728) */ + 3347, /* D5C9 (54729) */ + 3347, /* D5CA (54730) */ + 3347, /* D5CB (54731) */ + 3347, /* D5CC (54732) */ + 3347, /* D5CD (54733) */ + 3347, /* D5CE (54734) */ + 3347, /* D5CF (54735) */ + 3347, /* D5D0 (54736) */ + 3347, /* D5D1 (54737) */ + 3347, /* D5D2 (54738) */ + 3347, /* D5D3 (54739) */ + 3347, /* D5D4 (54740) */ + 3347, /* D5D5 (54741) */ + 3347, /* D5D6 (54742) */ + 3347, /* D5D7 (54743) */ + 3347, /* D5D8 (54744) */ + 3347, /* D5D9 (54745) */ + 3347, /* D5DA (54746) */ + 3347, /* D5DB (54747) */ + 3347, /* D5DC (54748) */ + 3347, /* D5DD (54749) */ + 3347, /* D5DE (54750) */ + 3347, /* D5DF (54751) */ + 3347, /* D5E0 (54752) */ + 3347, /* D5E1 (54753) */ + 3347, /* D5E2 (54754) */ + 3347, /* D5E3 (54755) */ + 3347, /* D5E4 (54756) */ + 3347, /* D5E5 (54757) */ + 3347, /* D5E6 (54758) */ + 3347, /* D5E7 (54759) */ + 3347, /* D5E8 (54760) */ + 3347, /* D5E9 (54761) */ + 3347, /* D5EA (54762) */ + 3347, /* D5EB (54763) */ + 3347, /* D5EC (54764) */ + 3347, /* D5ED (54765) */ + 3347, /* D5EE (54766) */ + 3347, /* D5EF (54767) */ + 3347, /* D5F0 (54768) */ + 3347, /* D5F1 (54769) */ + 3347, /* D5F2 (54770) */ + 3347, /* D5F3 (54771) */ + 3347, /* D5F4 (54772) */ + 3347, /* D5F5 (54773) */ + 3347, /* D5F6 (54774) */ + 3347, /* D5F7 (54775) */ + 3347, /* D5F8 (54776) */ + 3347, /* D5F9 (54777) */ + 3347, /* D5FA (54778) */ + 3347, /* D5FB (54779) */ + 3347, /* D5FC (54780) */ + 3347, /* D5FD (54781) */ + 3347, /* D5FE (54782) */ + 3347, /* D5FF (54783) */ + 3347, /* D600 (54784) */ + 3347, /* D601 (54785) */ + 3347, /* D602 (54786) */ + 3347, /* D603 (54787) */ + 3347, /* D604 (54788) */ + 3347, /* D605 (54789) */ + 3347, /* D606 (54790) */ + 3347, /* D607 (54791) */ + 3347, /* D608 (54792) */ + 3347, /* D609 (54793) */ + 3347, /* D60A (54794) */ + 3347, /* D60B (54795) */ + 3347, /* D60C (54796) */ + 3347, /* D60D (54797) */ + 3347, /* D60E (54798) */ + 3347, /* D60F (54799) */ + 3347, /* D610 (54800) */ + 3347, /* D611 (54801) */ + 3347, /* D612 (54802) */ + 3347, /* D613 (54803) */ + 3347, /* D614 (54804) */ + 3347, /* D615 (54805) */ + 3347, /* D616 (54806) */ + 3347, /* D617 (54807) */ + 3347, /* D618 (54808) */ + 3347, /* D619 (54809) */ + 3347, /* D61A (54810) */ + 3347, /* D61B (54811) */ + 3347, /* D61C (54812) */ + 3347, /* D61D (54813) */ + 3347, /* D61E (54814) */ + 3347, /* D61F (54815) */ + 3347, /* D620 (54816) */ + 3347, /* D621 (54817) */ + 3347, /* D622 (54818) */ + 3347, /* D623 (54819) */ + 3347, /* D624 (54820) */ + 3347, /* D625 (54821) */ + 3347, /* D626 (54822) */ + 3347, /* D627 (54823) */ + 3347, /* D628 (54824) */ + 3347, /* D629 (54825) */ + 3347, /* D62A (54826) */ + 3347, /* D62B (54827) */ + 3347, /* D62C (54828) */ + 3347, /* D62D (54829) */ + 3347, /* D62E (54830) */ + 3347, /* D62F (54831) */ + 3347, /* D630 (54832) */ + 3347, /* D631 (54833) */ + 3347, /* D632 (54834) */ + 3347, /* D633 (54835) */ + 3347, /* D634 (54836) */ + 3347, /* D635 (54837) */ + 3347, /* D636 (54838) */ + 3347, /* D637 (54839) */ + 3347, /* D638 (54840) */ + 3347, /* D639 (54841) */ + 3347, /* D63A (54842) */ + 3347, /* D63B (54843) */ + 3347, /* D63C (54844) */ + 3347, /* D63D (54845) */ + 3347, /* D63E (54846) */ + 3347, /* D63F (54847) */ + 3347, /* D640 (54848) */ + 3347, /* D641 (54849) */ + 3347, /* D642 (54850) */ + 3347, /* D643 (54851) */ + 3347, /* D644 (54852) */ + 3347, /* D645 (54853) */ + 3347, /* D646 (54854) */ + 3347, /* D647 (54855) */ + 3347, /* D648 (54856) */ + 3347, /* D649 (54857) */ + 3347, /* D64A (54858) */ + 3347, /* D64B (54859) */ + 3347, /* D64C (54860) */ + 3347, /* D64D (54861) */ + 3347, /* D64E (54862) */ + 3347, /* D64F (54863) */ + 3347, /* D650 (54864) */ + 3347, /* D651 (54865) */ + 3347, /* D652 (54866) */ + 3347, /* D653 (54867) */ + 3347, /* D654 (54868) */ + 3347, /* D655 (54869) */ + 3347, /* D656 (54870) */ + 3347, /* D657 (54871) */ + 3347, /* D658 (54872) */ + 3347, /* D659 (54873) */ + 3347, /* D65A (54874) */ + 3347, /* D65B (54875) */ + 3347, /* D65C (54876) */ + 3347, /* D65D (54877) */ + 3347, /* D65E (54878) */ + 3347, /* D65F (54879) */ + 3347, /* D660 (54880) */ + 3347, /* D661 (54881) */ + 3347, /* D662 (54882) */ + 3347, /* D663 (54883) */ + 3347, /* D664 (54884) */ + 3347, /* D665 (54885) */ + 3347, /* D666 (54886) */ + 3347, /* D667 (54887) */ + 3347, /* D668 (54888) */ + 3347, /* D669 (54889) */ + 3347, /* D66A (54890) */ + 3347, /* D66B (54891) */ + 3347, /* D66C (54892) */ + 3347, /* D66D (54893) */ + 3347, /* D66E (54894) */ + 3347, /* D66F (54895) */ + 3347, /* D670 (54896) */ + 3347, /* D671 (54897) */ + 3347, /* D672 (54898) */ + 3347, /* D673 (54899) */ + 3347, /* D674 (54900) */ + 3347, /* D675 (54901) */ + 3347, /* D676 (54902) */ + 3347, /* D677 (54903) */ + 3347, /* D678 (54904) */ + 3347, /* D679 (54905) */ + 3347, /* D67A (54906) */ + 3347, /* D67B (54907) */ + 3347, /* D67C (54908) */ + 3347, /* D67D (54909) */ + 3347, /* D67E (54910) */ + 3347, /* D67F (54911) */ + 3347, /* D680 (54912) */ + 3347, /* D681 (54913) */ + 3347, /* D682 (54914) */ + 3347, /* D683 (54915) */ + 3347, /* D684 (54916) */ + 3347, /* D685 (54917) */ + 3347, /* D686 (54918) */ + 3347, /* D687 (54919) */ + 3347, /* D688 (54920) */ + 3347, /* D689 (54921) */ + 3347, /* D68A (54922) */ + 3347, /* D68B (54923) */ + 3347, /* D68C (54924) */ + 3347, /* D68D (54925) */ + 3347, /* D68E (54926) */ + 3347, /* D68F (54927) */ + 3347, /* D690 (54928) */ + 3347, /* D691 (54929) */ + 3347, /* D692 (54930) */ + 3347, /* D693 (54931) */ + 3347, /* D694 (54932) */ + 3347, /* D695 (54933) */ + 3347, /* D696 (54934) */ + 3347, /* D697 (54935) */ + 3347, /* D698 (54936) */ + 3347, /* D699 (54937) */ + 3347, /* D69A (54938) */ + 3347, /* D69B (54939) */ + 3347, /* D69C (54940) */ + 3347, /* D69D (54941) */ + 3347, /* D69E (54942) */ + 3347, /* D69F (54943) */ + 3347, /* D6A0 (54944) */ + 3347, /* D6A1 (54945) */ + 3347, /* D6A2 (54946) */ + 3347, /* D6A3 (54947) */ + 3347, /* D6A4 (54948) */ + 3347, /* D6A5 (54949) */ + 3347, /* D6A6 (54950) */ + 3347, /* D6A7 (54951) */ + 3347, /* D6A8 (54952) */ + 3347, /* D6A9 (54953) */ + 3347, /* D6AA (54954) */ + 3347, /* D6AB (54955) */ + 3347, /* D6AC (54956) */ + 3347, /* D6AD (54957) */ + 3347, /* D6AE (54958) */ + 3347, /* D6AF (54959) */ + 3347, /* D6B0 (54960) */ + 3347, /* D6B1 (54961) */ + 3347, /* D6B2 (54962) */ + 3347, /* D6B3 (54963) */ + 3347, /* D6B4 (54964) */ + 3347, /* D6B5 (54965) */ + 3347, /* D6B6 (54966) */ + 3347, /* D6B7 (54967) */ + 3347, /* D6B8 (54968) */ + 3347, /* D6B9 (54969) */ + 3347, /* D6BA (54970) */ + 3347, /* D6BB (54971) */ + 3347, /* D6BC (54972) */ + 3347, /* D6BD (54973) */ + 3347, /* D6BE (54974) */ + 3347, /* D6BF (54975) */ + 3347, /* D6C0 (54976) */ + 3347, /* D6C1 (54977) */ + 3347, /* D6C2 (54978) */ + 3347, /* D6C3 (54979) */ + 3347, /* D6C4 (54980) */ + 3347, /* D6C5 (54981) */ + 3347, /* D6C6 (54982) */ + 3347, /* D6C7 (54983) */ + 3347, /* D6C8 (54984) */ + 3347, /* D6C9 (54985) */ + 3347, /* D6CA (54986) */ + 3347, /* D6CB (54987) */ + 3347, /* D6CC (54988) */ + 3347, /* D6CD (54989) */ + 3347, /* D6CE (54990) */ + 3347, /* D6CF (54991) */ + 3347, /* D6D0 (54992) */ + 3347, /* D6D1 (54993) */ + 3347, /* D6D2 (54994) */ + 3347, /* D6D3 (54995) */ + 3347, /* D6D4 (54996) */ + 3347, /* D6D5 (54997) */ + 3347, /* D6D6 (54998) */ + 3347, /* D6D7 (54999) */ + 3347, /* D6D8 (55000) */ + 3347, /* D6D9 (55001) */ + 3347, /* D6DA (55002) */ + 3347, /* D6DB (55003) */ + 3347, /* D6DC (55004) */ + 3347, /* D6DD (55005) */ + 3347, /* D6DE (55006) */ + 3347, /* D6DF (55007) */ + 3347, /* D6E0 (55008) */ + 3347, /* D6E1 (55009) */ + 3347, /* D6E2 (55010) */ + 3347, /* D6E3 (55011) */ + 3347, /* D6E4 (55012) */ + 3347, /* D6E5 (55013) */ + 3347, /* D6E6 (55014) */ + 3347, /* D6E7 (55015) */ + 3347, /* D6E8 (55016) */ + 3347, /* D6E9 (55017) */ + 3347, /* D6EA (55018) */ + 3347, /* D6EB (55019) */ + 3347, /* D6EC (55020) */ + 3347, /* D6ED (55021) */ + 3347, /* D6EE (55022) */ + 3347, /* D6EF (55023) */ + 3347, /* D6F0 (55024) */ + 3347, /* D6F1 (55025) */ + 3347, /* D6F2 (55026) */ + 3347, /* D6F3 (55027) */ + 3347, /* D6F4 (55028) */ + 3347, /* D6F5 (55029) */ + 3347, /* D6F6 (55030) */ + 3347, /* D6F7 (55031) */ + 3347, /* D6F8 (55032) */ + 3347, /* D6F9 (55033) */ + 3347, /* D6FA (55034) */ + 3347, /* D6FB (55035) */ + 3347, /* D6FC (55036) */ + 3347, /* D6FD (55037) */ + 3347, /* D6FE (55038) */ + 3347, /* D6FF (55039) */ + 3347, /* D700 (55040) */ + 3347, /* D701 (55041) */ + 3347, /* D702 (55042) */ + 3347, /* D703 (55043) */ + 3347, /* D704 (55044) */ + 3347, /* D705 (55045) */ + 3347, /* D706 (55046) */ + 3347, /* D707 (55047) */ + 3347, /* D708 (55048) */ + 3347, /* D709 (55049) */ + 3347, /* D70A (55050) */ + 3347, /* D70B (55051) */ + 3347, /* D70C (55052) */ + 3347, /* D70D (55053) */ + 3347, /* D70E (55054) */ + 3347, /* D70F (55055) */ + 3347, /* D710 (55056) */ + 3347, /* D711 (55057) */ + 3347, /* D712 (55058) */ + 3347, /* D713 (55059) */ + 3347, /* D714 (55060) */ + 3347, /* D715 (55061) */ + 3347, /* D716 (55062) */ + 3347, /* D717 (55063) */ + 3347, /* D718 (55064) */ + 3347, /* D719 (55065) */ + 3347, /* D71A (55066) */ + 3347, /* D71B (55067) */ + 3347, /* D71C (55068) */ + 3347, /* D71D (55069) */ + 3347, /* D71E (55070) */ + 3347, /* D71F (55071) */ + 3347, /* D720 (55072) */ + 3347, /* D721 (55073) */ + 3347, /* D722 (55074) */ + 3347, /* D723 (55075) */ + 3347, /* D724 (55076) */ + 3347, /* D725 (55077) */ + 3347, /* D726 (55078) */ + 3347, /* D727 (55079) */ + 3347, /* D728 (55080) */ + 3347, /* D729 (55081) */ + 3347, /* D72A (55082) */ + 3347, /* D72B (55083) */ + 3347, /* D72C (55084) */ + 3347, /* D72D (55085) */ + 3347, /* D72E (55086) */ + 3347, /* D72F (55087) */ + 3347, /* D730 (55088) */ + 3347, /* D731 (55089) */ + 3347, /* D732 (55090) */ + 3347, /* D733 (55091) */ + 3347, /* D734 (55092) */ + 3347, /* D735 (55093) */ + 3347, /* D736 (55094) */ + 3347, /* D737 (55095) */ + 3347, /* D738 (55096) */ + 3347, /* D739 (55097) */ + 3347, /* D73A (55098) */ + 3347, /* D73B (55099) */ + 3347, /* D73C (55100) */ + 3347, /* D73D (55101) */ + 3347, /* D73E (55102) */ + 3347, /* D73F (55103) */ + 3347, /* D740 (55104) */ + 3347, /* D741 (55105) */ + 3347, /* D742 (55106) */ + 3347, /* D743 (55107) */ + 3347, /* D744 (55108) */ + 3347, /* D745 (55109) */ + 3347, /* D746 (55110) */ + 3347, /* D747 (55111) */ + 3347, /* D748 (55112) */ + 3347, /* D749 (55113) */ + 3347, /* D74A (55114) */ + 3347, /* D74B (55115) */ + 3347, /* D74C (55116) */ + 3347, /* D74D (55117) */ + 3347, /* D74E (55118) */ + 3347, /* D74F (55119) */ + 3347, /* D750 (55120) */ + 3347, /* D751 (55121) */ + 3347, /* D752 (55122) */ + 3347, /* D753 (55123) */ + 3347, /* D754 (55124) */ + 3347, /* D755 (55125) */ + 3347, /* D756 (55126) */ + 3347, /* D757 (55127) */ + 3347, /* D758 (55128) */ + 3347, /* D759 (55129) */ + 3347, /* D75A (55130) */ + 3347, /* D75B (55131) */ + 3347, /* D75C (55132) */ + 3347, /* D75D (55133) */ + 3347, /* D75E (55134) */ + 3347, /* D75F (55135) */ + 3347, /* D760 (55136) */ + 3347, /* D761 (55137) */ + 3347, /* D762 (55138) */ + 3347, /* D763 (55139) */ + 3347, /* D764 (55140) */ + 3347, /* D765 (55141) */ + 3347, /* D766 (55142) */ + 3347, /* D767 (55143) */ + 3347, /* D768 (55144) */ + 3347, /* D769 (55145) */ + 3347, /* D76A (55146) */ + 3347, /* D76B (55147) */ + 3347, /* D76C (55148) */ + 3347, /* D76D (55149) */ + 3347, /* D76E (55150) */ + 3347, /* D76F (55151) */ + 3347, /* D770 (55152) */ + 3347, /* D771 (55153) */ + 3347, /* D772 (55154) */ + 3347, /* D773 (55155) */ + 3347, /* D774 (55156) */ + 3347, /* D775 (55157) */ + 3347, /* D776 (55158) */ + 3347, /* D777 (55159) */ + 3347, /* D778 (55160) */ + 3347, /* D779 (55161) */ + 3347, /* D77A (55162) */ + 3347, /* D77B (55163) */ + 3347, /* D77C (55164) */ + 3347, /* D77D (55165) */ + 3347, /* D77E (55166) */ + 3347, /* D77F (55167) */ + 3347, /* D780 (55168) */ + 3347, /* D781 (55169) */ + 3347, /* D782 (55170) */ + 3347, /* D783 (55171) */ + 3347, /* D784 (55172) */ + 3347, /* D785 (55173) */ + 3347, /* D786 (55174) */ + 3347, /* D787 (55175) */ + 3347, /* D788 (55176) */ + 3347, /* D789 (55177) */ + 3347, /* D78A (55178) */ + 3347, /* D78B (55179) */ + 3347, /* D78C (55180) */ + 3347, /* D78D (55181) */ + 3347, /* D78E (55182) */ + 3347, /* D78F (55183) */ + 3347, /* D790 (55184) */ + 3347, /* D791 (55185) */ + 3347, /* D792 (55186) */ + 3347, /* D793 (55187) */ + 3347, /* D794 (55188) */ + 3347, /* D795 (55189) */ + 3347, /* D796 (55190) */ + 3347, /* D797 (55191) */ + 3347, /* D798 (55192) */ + 3347, /* D799 (55193) */ + 3347, /* D79A (55194) */ + 3347, /* D79B (55195) */ + 3347, /* D79C (55196) */ + 3347, /* D79D (55197) */ + 3347, /* D79E (55198) */ + 3347, /* D79F (55199) */ + 3347, /* D7A0 (55200) */ + 3347, /* D7A1 (55201) */ + 3347, /* D7A2 (55202) */ + 3347, /* D7A3 (55203) */ 56, /* D7A4 (55204) */ 56, /* D7A5 (55205) */ 56, /* D7A6 (55206) */ @@ -57372,480 +57372,480 @@ static const uint16_t lxb_unicode_table_map_0_57345[57345] = static const uint16_t lxb_unicode_table_map_63743_83527[19784] = { 56, /* F8FF (63743) */ - 3344, /* F900 (63744) */ - 3345, /* F901 (63745) */ - 3346, /* F902 (63746) */ - 3347, /* F903 (63747) */ - 3348, /* F904 (63748) */ - 3349, /* F905 (63749) */ - 3350, /* F906 (63750) */ - 3351, /* F907 (63751) */ - 3351, /* F908 (63752) */ - 3352, /* F909 (63753) */ - 3353, /* F90A (63754) */ - 3354, /* F90B (63755) */ - 3355, /* F90C (63756) */ - 3356, /* F90D (63757) */ - 3357, /* F90E (63758) */ - 3358, /* F90F (63759) */ - 3359, /* F910 (63760) */ - 3360, /* F911 (63761) */ - 3361, /* F912 (63762) */ - 3362, /* F913 (63763) */ - 3363, /* F914 (63764) */ - 3364, /* F915 (63765) */ - 3365, /* F916 (63766) */ - 3366, /* F917 (63767) */ - 3367, /* F918 (63768) */ - 3368, /* F919 (63769) */ - 3369, /* F91A (63770) */ - 3370, /* F91B (63771) */ - 3371, /* F91C (63772) */ - 3372, /* F91D (63773) */ - 3373, /* F91E (63774) */ - 3374, /* F91F (63775) */ - 3375, /* F920 (63776) */ - 3376, /* F921 (63777) */ - 3377, /* F922 (63778) */ - 3378, /* F923 (63779) */ - 3379, /* F924 (63780) */ - 3380, /* F925 (63781) */ - 3381, /* F926 (63782) */ - 3382, /* F927 (63783) */ - 3383, /* F928 (63784) */ - 3384, /* F929 (63785) */ - 3385, /* F92A (63786) */ - 3386, /* F92B (63787) */ - 3387, /* F92C (63788) */ - 3388, /* F92D (63789) */ - 3389, /* F92E (63790) */ - 3390, /* F92F (63791) */ - 3391, /* F930 (63792) */ - 3392, /* F931 (63793) */ - 3393, /* F932 (63794) */ - 3394, /* F933 (63795) */ - 3395, /* F934 (63796) */ - 3396, /* F935 (63797) */ - 3397, /* F936 (63798) */ - 3398, /* F937 (63799) */ - 3399, /* F938 (63800) */ - 3400, /* F939 (63801) */ - 3401, /* F93A (63802) */ - 3402, /* F93B (63803) */ - 3403, /* F93C (63804) */ - 3404, /* F93D (63805) */ - 3405, /* F93E (63806) */ - 3406, /* F93F (63807) */ - 3407, /* F940 (63808) */ - 3408, /* F941 (63809) */ - 3409, /* F942 (63810) */ - 3410, /* F943 (63811) */ - 3411, /* F944 (63812) */ - 3412, /* F945 (63813) */ - 3413, /* F946 (63814) */ - 3414, /* F947 (63815) */ - 3415, /* F948 (63816) */ - 3416, /* F949 (63817) */ - 3417, /* F94A (63818) */ - 3418, /* F94B (63819) */ - 3419, /* F94C (63820) */ - 3420, /* F94D (63821) */ - 3421, /* F94E (63822) */ - 3422, /* F94F (63823) */ - 3423, /* F950 (63824) */ - 3424, /* F951 (63825) */ - 3425, /* F952 (63826) */ - 3426, /* F953 (63827) */ - 3427, /* F954 (63828) */ - 3428, /* F955 (63829) */ - 3429, /* F956 (63830) */ - 3430, /* F957 (63831) */ - 3431, /* F958 (63832) */ - 3432, /* F959 (63833) */ - 3433, /* F95A (63834) */ - 3434, /* F95B (63835) */ - 3363, /* F95C (63836) */ - 3435, /* F95D (63837) */ - 3436, /* F95E (63838) */ - 3437, /* F95F (63839) */ - 3438, /* F960 (63840) */ - 3439, /* F961 (63841) */ - 3440, /* F962 (63842) */ - 3441, /* F963 (63843) */ - 3442, /* F964 (63844) */ - 3443, /* F965 (63845) */ - 3444, /* F966 (63846) */ - 3445, /* F967 (63847) */ - 3446, /* F968 (63848) */ - 3447, /* F969 (63849) */ - 3448, /* F96A (63850) */ - 3449, /* F96B (63851) */ - 3450, /* F96C (63852) */ - 3451, /* F96D (63853) */ - 3452, /* F96E (63854) */ - 3453, /* F96F (63855) */ - 3454, /* F970 (63856) */ - 3455, /* F971 (63857) */ - 3456, /* F972 (63858) */ - 3457, /* F973 (63859) */ - 3458, /* F974 (63860) */ - 3459, /* F975 (63861) */ - 3460, /* F976 (63862) */ - 3461, /* F977 (63863) */ - 3462, /* F978 (63864) */ - 3463, /* F979 (63865) */ - 3464, /* F97A (63866) */ - 3465, /* F97B (63867) */ - 3466, /* F97C (63868) */ - 3467, /* F97D (63869) */ - 3468, /* F97E (63870) */ - 3469, /* F97F (63871) */ - 3470, /* F980 (63872) */ - 3471, /* F981 (63873) */ - 3472, /* F982 (63874) */ - 3473, /* F983 (63875) */ - 3474, /* F984 (63876) */ - 3475, /* F985 (63877) */ - 3476, /* F986 (63878) */ - 3477, /* F987 (63879) */ - 3478, /* F988 (63880) */ - 3479, /* F989 (63881) */ - 3480, /* F98A (63882) */ - 3481, /* F98B (63883) */ - 3482, /* F98C (63884) */ - 3483, /* F98D (63885) */ - 3484, /* F98E (63886) */ - 3485, /* F98F (63887) */ - 3486, /* F990 (63888) */ - 3487, /* F991 (63889) */ - 3488, /* F992 (63890) */ - 3489, /* F993 (63891) */ - 3490, /* F994 (63892) */ - 3491, /* F995 (63893) */ - 3492, /* F996 (63894) */ - 3493, /* F997 (63895) */ - 3494, /* F998 (63896) */ - 3495, /* F999 (63897) */ - 3496, /* F99A (63898) */ - 3497, /* F99B (63899) */ - 3498, /* F99C (63900) */ - 3499, /* F99D (63901) */ - 3500, /* F99E (63902) */ - 3501, /* F99F (63903) */ - 3502, /* F9A0 (63904) */ - 3453, /* F9A1 (63905) */ - 3503, /* F9A2 (63906) */ - 3504, /* F9A3 (63907) */ - 3505, /* F9A4 (63908) */ - 3506, /* F9A5 (63909) */ - 3507, /* F9A6 (63910) */ - 3508, /* F9A7 (63911) */ - 3509, /* F9A8 (63912) */ - 3510, /* F9A9 (63913) */ - 3437, /* F9AA (63914) */ - 3511, /* F9AB (63915) */ - 3512, /* F9AC (63916) */ - 3513, /* F9AD (63917) */ - 3514, /* F9AE (63918) */ - 3515, /* F9AF (63919) */ - 3516, /* F9B0 (63920) */ - 3517, /* F9B1 (63921) */ - 3518, /* F9B2 (63922) */ - 3519, /* F9B3 (63923) */ - 3520, /* F9B4 (63924) */ - 3521, /* F9B5 (63925) */ - 3522, /* F9B6 (63926) */ - 3523, /* F9B7 (63927) */ - 3524, /* F9B8 (63928) */ - 3525, /* F9B9 (63929) */ - 3526, /* F9BA (63930) */ - 3527, /* F9BB (63931) */ - 3528, /* F9BC (63932) */ - 3529, /* F9BD (63933) */ - 3530, /* F9BE (63934) */ - 3363, /* F9BF (63935) */ - 3531, /* F9C0 (63936) */ - 3532, /* F9C1 (63937) */ - 3533, /* F9C2 (63938) */ - 3534, /* F9C3 (63939) */ - 3535, /* F9C4 (63940) */ - 3536, /* F9C5 (63941) */ - 3537, /* F9C6 (63942) */ - 3538, /* F9C7 (63943) */ - 3539, /* F9C8 (63944) */ - 3540, /* F9C9 (63945) */ - 3541, /* F9CA (63946) */ - 3542, /* F9CB (63947) */ - 3543, /* F9CC (63948) */ - 3544, /* F9CD (63949) */ - 3545, /* F9CE (63950) */ - 3546, /* F9CF (63951) */ - 3547, /* F9D0 (63952) */ - 3548, /* F9D1 (63953) */ - 3549, /* F9D2 (63954) */ - 3550, /* F9D3 (63955) */ - 3551, /* F9D4 (63956) */ - 3552, /* F9D5 (63957) */ - 3553, /* F9D6 (63958) */ - 3554, /* F9D7 (63959) */ - 3555, /* F9D8 (63960) */ - 3556, /* F9D9 (63961) */ - 3557, /* F9DA (63962) */ - 3439, /* F9DB (63963) */ - 3558, /* F9DC (63964) */ - 3559, /* F9DD (63965) */ - 3560, /* F9DE (63966) */ - 3561, /* F9DF (63967) */ - 3562, /* F9E0 (63968) */ - 3563, /* F9E1 (63969) */ - 3564, /* F9E2 (63970) */ - 3565, /* F9E3 (63971) */ - 3566, /* F9E4 (63972) */ - 3567, /* F9E5 (63973) */ - 3568, /* F9E6 (63974) */ - 3569, /* F9E7 (63975) */ - 3570, /* F9E8 (63976) */ - 3571, /* F9E9 (63977) */ - 3572, /* F9EA (63978) */ - 3573, /* F9EB (63979) */ - 3574, /* F9EC (63980) */ - 3575, /* F9ED (63981) */ - 3576, /* F9EE (63982) */ - 3577, /* F9EF (63983) */ - 3578, /* F9F0 (63984) */ - 3579, /* F9F1 (63985) */ - 3580, /* F9F2 (63986) */ - 3581, /* F9F3 (63987) */ - 3582, /* F9F4 (63988) */ - 3583, /* F9F5 (63989) */ - 3584, /* F9F6 (63990) */ - 3585, /* F9F7 (63991) */ - 3586, /* F9F8 (63992) */ - 3587, /* F9F9 (63993) */ - 3588, /* F9FA (63994) */ - 3589, /* F9FB (63995) */ - 3590, /* F9FC (63996) */ - 3591, /* F9FD (63997) */ - 3592, /* F9FE (63998) */ - 3593, /* F9FF (63999) */ - 3594, /* FA00 (64000) */ - 3595, /* FA01 (64001) */ - 3596, /* FA02 (64002) */ - 3597, /* FA03 (64003) */ - 3598, /* FA04 (64004) */ - 3599, /* FA05 (64005) */ - 3600, /* FA06 (64006) */ - 3601, /* FA07 (64007) */ - 3602, /* FA08 (64008) */ - 3603, /* FA09 (64009) */ - 3604, /* FA0A (64010) */ - 3605, /* FA0B (64011) */ - 3606, /* FA0C (64012) */ - 3607, /* FA0D (64013) */ + 3348, /* F900 (63744) */ + 3349, /* F901 (63745) */ + 3350, /* F902 (63746) */ + 3351, /* F903 (63747) */ + 3352, /* F904 (63748) */ + 3353, /* F905 (63749) */ + 3354, /* F906 (63750) */ + 3355, /* F907 (63751) */ + 3355, /* F908 (63752) */ + 3356, /* F909 (63753) */ + 3357, /* F90A (63754) */ + 3358, /* F90B (63755) */ + 3359, /* F90C (63756) */ + 3360, /* F90D (63757) */ + 3361, /* F90E (63758) */ + 3362, /* F90F (63759) */ + 3363, /* F910 (63760) */ + 3364, /* F911 (63761) */ + 3365, /* F912 (63762) */ + 3366, /* F913 (63763) */ + 3367, /* F914 (63764) */ + 3368, /* F915 (63765) */ + 3369, /* F916 (63766) */ + 3370, /* F917 (63767) */ + 3371, /* F918 (63768) */ + 3372, /* F919 (63769) */ + 3373, /* F91A (63770) */ + 3374, /* F91B (63771) */ + 3375, /* F91C (63772) */ + 3376, /* F91D (63773) */ + 3377, /* F91E (63774) */ + 3378, /* F91F (63775) */ + 3379, /* F920 (63776) */ + 3380, /* F921 (63777) */ + 3381, /* F922 (63778) */ + 3382, /* F923 (63779) */ + 3383, /* F924 (63780) */ + 3384, /* F925 (63781) */ + 3385, /* F926 (63782) */ + 3386, /* F927 (63783) */ + 3387, /* F928 (63784) */ + 3388, /* F929 (63785) */ + 3389, /* F92A (63786) */ + 3390, /* F92B (63787) */ + 3391, /* F92C (63788) */ + 3392, /* F92D (63789) */ + 3393, /* F92E (63790) */ + 3394, /* F92F (63791) */ + 3395, /* F930 (63792) */ + 3396, /* F931 (63793) */ + 3397, /* F932 (63794) */ + 3398, /* F933 (63795) */ + 3399, /* F934 (63796) */ + 3400, /* F935 (63797) */ + 3401, /* F936 (63798) */ + 3402, /* F937 (63799) */ + 3403, /* F938 (63800) */ + 3404, /* F939 (63801) */ + 3405, /* F93A (63802) */ + 3406, /* F93B (63803) */ + 3407, /* F93C (63804) */ + 3408, /* F93D (63805) */ + 3409, /* F93E (63806) */ + 3410, /* F93F (63807) */ + 3411, /* F940 (63808) */ + 3412, /* F941 (63809) */ + 3413, /* F942 (63810) */ + 3414, /* F943 (63811) */ + 3415, /* F944 (63812) */ + 3416, /* F945 (63813) */ + 3417, /* F946 (63814) */ + 3418, /* F947 (63815) */ + 3419, /* F948 (63816) */ + 3420, /* F949 (63817) */ + 3421, /* F94A (63818) */ + 3422, /* F94B (63819) */ + 3423, /* F94C (63820) */ + 3424, /* F94D (63821) */ + 3425, /* F94E (63822) */ + 3426, /* F94F (63823) */ + 3427, /* F950 (63824) */ + 3428, /* F951 (63825) */ + 3429, /* F952 (63826) */ + 3430, /* F953 (63827) */ + 3431, /* F954 (63828) */ + 3432, /* F955 (63829) */ + 3433, /* F956 (63830) */ + 3434, /* F957 (63831) */ + 3435, /* F958 (63832) */ + 3436, /* F959 (63833) */ + 3437, /* F95A (63834) */ + 3438, /* F95B (63835) */ + 3367, /* F95C (63836) */ + 3439, /* F95D (63837) */ + 3440, /* F95E (63838) */ + 3441, /* F95F (63839) */ + 3442, /* F960 (63840) */ + 3443, /* F961 (63841) */ + 3444, /* F962 (63842) */ + 3445, /* F963 (63843) */ + 3446, /* F964 (63844) */ + 3447, /* F965 (63845) */ + 3448, /* F966 (63846) */ + 3449, /* F967 (63847) */ + 3450, /* F968 (63848) */ + 3451, /* F969 (63849) */ + 3452, /* F96A (63850) */ + 3453, /* F96B (63851) */ + 3454, /* F96C (63852) */ + 3455, /* F96D (63853) */ + 3456, /* F96E (63854) */ + 3457, /* F96F (63855) */ + 3458, /* F970 (63856) */ + 3459, /* F971 (63857) */ + 3460, /* F972 (63858) */ + 3461, /* F973 (63859) */ + 3462, /* F974 (63860) */ + 3463, /* F975 (63861) */ + 3464, /* F976 (63862) */ + 3465, /* F977 (63863) */ + 3466, /* F978 (63864) */ + 3467, /* F979 (63865) */ + 3468, /* F97A (63866) */ + 3469, /* F97B (63867) */ + 3470, /* F97C (63868) */ + 3471, /* F97D (63869) */ + 3472, /* F97E (63870) */ + 3473, /* F97F (63871) */ + 3474, /* F980 (63872) */ + 3475, /* F981 (63873) */ + 3476, /* F982 (63874) */ + 3477, /* F983 (63875) */ + 3478, /* F984 (63876) */ + 3479, /* F985 (63877) */ + 3480, /* F986 (63878) */ + 3481, /* F987 (63879) */ + 3482, /* F988 (63880) */ + 3483, /* F989 (63881) */ + 3484, /* F98A (63882) */ + 3485, /* F98B (63883) */ + 3486, /* F98C (63884) */ + 3487, /* F98D (63885) */ + 3488, /* F98E (63886) */ + 3489, /* F98F (63887) */ + 3490, /* F990 (63888) */ + 3491, /* F991 (63889) */ + 3492, /* F992 (63890) */ + 3493, /* F993 (63891) */ + 3494, /* F994 (63892) */ + 3495, /* F995 (63893) */ + 3496, /* F996 (63894) */ + 3497, /* F997 (63895) */ + 3498, /* F998 (63896) */ + 3499, /* F999 (63897) */ + 3500, /* F99A (63898) */ + 3501, /* F99B (63899) */ + 3502, /* F99C (63900) */ + 3503, /* F99D (63901) */ + 3504, /* F99E (63902) */ + 3505, /* F99F (63903) */ + 3506, /* F9A0 (63904) */ + 3457, /* F9A1 (63905) */ + 3507, /* F9A2 (63906) */ + 3508, /* F9A3 (63907) */ + 3509, /* F9A4 (63908) */ + 3510, /* F9A5 (63909) */ + 3511, /* F9A6 (63910) */ + 3512, /* F9A7 (63911) */ + 3513, /* F9A8 (63912) */ + 3514, /* F9A9 (63913) */ + 3441, /* F9AA (63914) */ + 3515, /* F9AB (63915) */ + 3516, /* F9AC (63916) */ + 3517, /* F9AD (63917) */ + 3518, /* F9AE (63918) */ + 3519, /* F9AF (63919) */ + 3520, /* F9B0 (63920) */ + 3521, /* F9B1 (63921) */ + 3522, /* F9B2 (63922) */ + 3523, /* F9B3 (63923) */ + 3524, /* F9B4 (63924) */ + 3525, /* F9B5 (63925) */ + 3526, /* F9B6 (63926) */ + 3527, /* F9B7 (63927) */ + 3528, /* F9B8 (63928) */ + 3529, /* F9B9 (63929) */ + 3530, /* F9BA (63930) */ + 3531, /* F9BB (63931) */ + 3532, /* F9BC (63932) */ + 3533, /* F9BD (63933) */ + 3534, /* F9BE (63934) */ + 3367, /* F9BF (63935) */ + 3535, /* F9C0 (63936) */ + 3536, /* F9C1 (63937) */ + 3537, /* F9C2 (63938) */ + 3538, /* F9C3 (63939) */ + 3539, /* F9C4 (63940) */ + 3540, /* F9C5 (63941) */ + 3541, /* F9C6 (63942) */ + 3542, /* F9C7 (63943) */ + 3543, /* F9C8 (63944) */ + 3544, /* F9C9 (63945) */ + 3545, /* F9CA (63946) */ + 3546, /* F9CB (63947) */ + 3547, /* F9CC (63948) */ + 3548, /* F9CD (63949) */ + 3549, /* F9CE (63950) */ + 3550, /* F9CF (63951) */ + 3551, /* F9D0 (63952) */ + 3552, /* F9D1 (63953) */ + 3553, /* F9D2 (63954) */ + 3554, /* F9D3 (63955) */ + 3555, /* F9D4 (63956) */ + 3556, /* F9D5 (63957) */ + 3557, /* F9D6 (63958) */ + 3558, /* F9D7 (63959) */ + 3559, /* F9D8 (63960) */ + 3560, /* F9D9 (63961) */ + 3561, /* F9DA (63962) */ + 3443, /* F9DB (63963) */ + 3562, /* F9DC (63964) */ + 3563, /* F9DD (63965) */ + 3564, /* F9DE (63966) */ + 3565, /* F9DF (63967) */ + 3566, /* F9E0 (63968) */ + 3567, /* F9E1 (63969) */ + 3568, /* F9E2 (63970) */ + 3569, /* F9E3 (63971) */ + 3570, /* F9E4 (63972) */ + 3571, /* F9E5 (63973) */ + 3572, /* F9E6 (63974) */ + 3573, /* F9E7 (63975) */ + 3574, /* F9E8 (63976) */ + 3575, /* F9E9 (63977) */ + 3576, /* F9EA (63978) */ + 3577, /* F9EB (63979) */ + 3578, /* F9EC (63980) */ + 3579, /* F9ED (63981) */ + 3580, /* F9EE (63982) */ + 3581, /* F9EF (63983) */ + 3582, /* F9F0 (63984) */ + 3583, /* F9F1 (63985) */ + 3584, /* F9F2 (63986) */ + 3585, /* F9F3 (63987) */ + 3586, /* F9F4 (63988) */ + 3587, /* F9F5 (63989) */ + 3588, /* F9F6 (63990) */ + 3589, /* F9F7 (63991) */ + 3590, /* F9F8 (63992) */ + 3591, /* F9F9 (63993) */ + 3592, /* F9FA (63994) */ + 3593, /* F9FB (63995) */ + 3594, /* F9FC (63996) */ + 3595, /* F9FD (63997) */ + 3596, /* F9FE (63998) */ + 3597, /* F9FF (63999) */ + 3598, /* FA00 (64000) */ + 3599, /* FA01 (64001) */ + 3600, /* FA02 (64002) */ + 3601, /* FA03 (64003) */ + 3602, /* FA04 (64004) */ + 3603, /* FA05 (64005) */ + 3604, /* FA06 (64006) */ + 3605, /* FA07 (64007) */ + 3606, /* FA08 (64008) */ + 3607, /* FA09 (64009) */ + 3608, /* FA0A (64010) */ + 3609, /* FA0B (64011) */ + 3610, /* FA0C (64012) */ + 3611, /* FA0D (64013) */ 1, /* FA0E (64014) */ 1, /* FA0F (64015) */ - 3608, /* FA10 (64016) */ + 3612, /* FA10 (64016) */ 1, /* FA11 (64017) */ - 3609, /* FA12 (64018) */ + 3613, /* FA12 (64018) */ 1, /* FA13 (64019) */ 1, /* FA14 (64020) */ - 3610, /* FA15 (64021) */ - 3611, /* FA16 (64022) */ - 3612, /* FA17 (64023) */ - 3613, /* FA18 (64024) */ - 3614, /* FA19 (64025) */ - 3615, /* FA1A (64026) */ - 3616, /* FA1B (64027) */ - 3617, /* FA1C (64028) */ - 3618, /* FA1D (64029) */ - 3619, /* FA1E (64030) */ + 3614, /* FA15 (64021) */ + 3615, /* FA16 (64022) */ + 3616, /* FA17 (64023) */ + 3617, /* FA18 (64024) */ + 3618, /* FA19 (64025) */ + 3619, /* FA1A (64026) */ + 3620, /* FA1B (64027) */ + 3621, /* FA1C (64028) */ + 3622, /* FA1D (64029) */ + 3623, /* FA1E (64030) */ 1, /* FA1F (64031) */ - 3620, /* FA20 (64032) */ + 3624, /* FA20 (64032) */ 1, /* FA21 (64033) */ - 3621, /* FA22 (64034) */ + 3625, /* FA22 (64034) */ 1, /* FA23 (64035) */ 1, /* FA24 (64036) */ - 3622, /* FA25 (64037) */ - 3623, /* FA26 (64038) */ + 3626, /* FA25 (64037) */ + 3627, /* FA26 (64038) */ 1, /* FA27 (64039) */ 1, /* FA28 (64040) */ 1, /* FA29 (64041) */ - 3624, /* FA2A (64042) */ - 3625, /* FA2B (64043) */ - 3626, /* FA2C (64044) */ - 3627, /* FA2D (64045) */ - 3628, /* FA2E (64046) */ - 3629, /* FA2F (64047) */ - 3630, /* FA30 (64048) */ - 3631, /* FA31 (64049) */ - 3632, /* FA32 (64050) */ - 3633, /* FA33 (64051) */ - 3634, /* FA34 (64052) */ - 3635, /* FA35 (64053) */ - 3636, /* FA36 (64054) */ - 3637, /* FA37 (64055) */ - 3638, /* FA38 (64056) */ - 3639, /* FA39 (64057) */ - 3640, /* FA3A (64058) */ - 3641, /* FA3B (64059) */ - 3642, /* FA3C (64060) */ - 3643, /* FA3D (64061) */ - 3644, /* FA3E (64062) */ - 3645, /* FA3F (64063) */ - 3646, /* FA40 (64064) */ - 3647, /* FA41 (64065) */ - 3648, /* FA42 (64066) */ - 3649, /* FA43 (64067) */ - 3650, /* FA44 (64068) */ - 3651, /* FA45 (64069) */ - 3652, /* FA46 (64070) */ - 3653, /* FA47 (64071) */ - 3654, /* FA48 (64072) */ - 3655, /* FA49 (64073) */ - 3656, /* FA4A (64074) */ - 3657, /* FA4B (64075) */ - 3658, /* FA4C (64076) */ - 3659, /* FA4D (64077) */ - 3660, /* FA4E (64078) */ - 3661, /* FA4F (64079) */ - 3662, /* FA50 (64080) */ - 3663, /* FA51 (64081) */ - 3664, /* FA52 (64082) */ - 3665, /* FA53 (64083) */ - 3666, /* FA54 (64084) */ - 3667, /* FA55 (64085) */ - 3668, /* FA56 (64086) */ - 3492, /* FA57 (64087) */ - 3669, /* FA58 (64088) */ - 3670, /* FA59 (64089) */ - 3671, /* FA5A (64090) */ - 3672, /* FA5B (64091) */ - 3673, /* FA5C (64092) */ - 3674, /* FA5D (64093) */ - 3674, /* FA5E (64094) */ - 3675, /* FA5F (64095) */ - 3676, /* FA60 (64096) */ - 3677, /* FA61 (64097) */ - 3678, /* FA62 (64098) */ - 3679, /* FA63 (64099) */ - 3680, /* FA64 (64100) */ - 3681, /* FA65 (64101) */ - 3682, /* FA66 (64102) */ - 3622, /* FA67 (64103) */ - 3683, /* FA68 (64104) */ - 3684, /* FA69 (64105) */ - 3685, /* FA6A (64106) */ - 3686, /* FA6B (64107) */ - 3687, /* FA6C (64108) */ - 3688, /* FA6D (64109) */ + 3628, /* FA2A (64042) */ + 3629, /* FA2B (64043) */ + 3630, /* FA2C (64044) */ + 3631, /* FA2D (64045) */ + 3632, /* FA2E (64046) */ + 3633, /* FA2F (64047) */ + 3634, /* FA30 (64048) */ + 3635, /* FA31 (64049) */ + 3636, /* FA32 (64050) */ + 3637, /* FA33 (64051) */ + 3638, /* FA34 (64052) */ + 3639, /* FA35 (64053) */ + 3640, /* FA36 (64054) */ + 3641, /* FA37 (64055) */ + 3642, /* FA38 (64056) */ + 3643, /* FA39 (64057) */ + 3644, /* FA3A (64058) */ + 3645, /* FA3B (64059) */ + 3646, /* FA3C (64060) */ + 3647, /* FA3D (64061) */ + 3648, /* FA3E (64062) */ + 3649, /* FA3F (64063) */ + 3650, /* FA40 (64064) */ + 3651, /* FA41 (64065) */ + 3652, /* FA42 (64066) */ + 3653, /* FA43 (64067) */ + 3654, /* FA44 (64068) */ + 3655, /* FA45 (64069) */ + 3656, /* FA46 (64070) */ + 3657, /* FA47 (64071) */ + 3658, /* FA48 (64072) */ + 3659, /* FA49 (64073) */ + 3660, /* FA4A (64074) */ + 3661, /* FA4B (64075) */ + 3662, /* FA4C (64076) */ + 3663, /* FA4D (64077) */ + 3664, /* FA4E (64078) */ + 3665, /* FA4F (64079) */ + 3666, /* FA50 (64080) */ + 3667, /* FA51 (64081) */ + 3668, /* FA52 (64082) */ + 3669, /* FA53 (64083) */ + 3670, /* FA54 (64084) */ + 3671, /* FA55 (64085) */ + 3672, /* FA56 (64086) */ + 3496, /* FA57 (64087) */ + 3673, /* FA58 (64088) */ + 3674, /* FA59 (64089) */ + 3675, /* FA5A (64090) */ + 3676, /* FA5B (64091) */ + 3677, /* FA5C (64092) */ + 3678, /* FA5D (64093) */ + 3678, /* FA5E (64094) */ + 3679, /* FA5F (64095) */ + 3680, /* FA60 (64096) */ + 3681, /* FA61 (64097) */ + 3682, /* FA62 (64098) */ + 3683, /* FA63 (64099) */ + 3684, /* FA64 (64100) */ + 3685, /* FA65 (64101) */ + 3686, /* FA66 (64102) */ + 3626, /* FA67 (64103) */ + 3687, /* FA68 (64104) */ + 3688, /* FA69 (64105) */ + 3689, /* FA6A (64106) */ + 3690, /* FA6B (64107) */ + 3691, /* FA6C (64108) */ + 3692, /* FA6D (64109) */ 56, /* FA6E (64110) */ 56, /* FA6F (64111) */ - 3689, /* FA70 (64112) */ - 3690, /* FA71 (64113) */ - 3691, /* FA72 (64114) */ - 3692, /* FA73 (64115) */ - 3693, /* FA74 (64116) */ - 3694, /* FA75 (64117) */ - 3695, /* FA76 (64118) */ - 3696, /* FA77 (64119) */ - 3636, /* FA78 (64120) */ - 3697, /* FA79 (64121) */ - 3698, /* FA7A (64122) */ - 3699, /* FA7B (64123) */ - 3608, /* FA7C (64124) */ - 3700, /* FA7D (64125) */ - 3701, /* FA7E (64126) */ - 3702, /* FA7F (64127) */ - 3703, /* FA80 (64128) */ - 3704, /* FA81 (64129) */ - 3705, /* FA82 (64130) */ - 3706, /* FA83 (64131) */ - 3707, /* FA84 (64132) */ - 3708, /* FA85 (64133) */ - 3709, /* FA86 (64134) */ - 3710, /* FA87 (64135) */ - 3711, /* FA88 (64136) */ - 3645, /* FA89 (64137) */ - 3712, /* FA8A (64138) */ - 3646, /* FA8B (64139) */ - 3713, /* FA8C (64140) */ - 3714, /* FA8D (64141) */ - 3715, /* FA8E (64142) */ - 3716, /* FA8F (64143) */ - 3717, /* FA90 (64144) */ - 3609, /* FA91 (64145) */ - 3384, /* FA92 (64146) */ - 3718, /* FA93 (64147) */ - 3719, /* FA94 (64148) */ - 3720, /* FA95 (64149) */ - 3454, /* FA96 (64150) */ - 3541, /* FA97 (64151) */ - 3721, /* FA98 (64152) */ - 3722, /* FA99 (64153) */ - 3653, /* FA9A (64154) */ - 3723, /* FA9B (64155) */ - 3654, /* FA9C (64156) */ - 3724, /* FA9D (64157) */ - 3725, /* FA9E (64158) */ - 3726, /* FA9F (64159) */ - 3611, /* FAA0 (64160) */ - 3727, /* FAA1 (64161) */ - 3728, /* FAA2 (64162) */ - 3729, /* FAA3 (64163) */ - 3730, /* FAA4 (64164) */ - 3731, /* FAA5 (64165) */ - 3612, /* FAA6 (64166) */ - 3732, /* FAA7 (64167) */ - 3733, /* FAA8 (64168) */ - 3734, /* FAA9 (64169) */ - 3735, /* FAAA (64170) */ - 3736, /* FAAB (64171) */ - 3737, /* FAAC (64172) */ - 3668, /* FAAD (64173) */ - 3738, /* FAAE (64174) */ - 3739, /* FAAF (64175) */ - 3492, /* FAB0 (64176) */ - 3740, /* FAB1 (64177) */ - 3672, /* FAB2 (64178) */ - 3741, /* FAB3 (64179) */ - 3742, /* FAB4 (64180) */ - 3743, /* FAB5 (64181) */ - 3744, /* FAB6 (64182) */ - 3745, /* FAB7 (64183) */ - 3677, /* FAB8 (64184) */ - 3746, /* FAB9 (64185) */ - 3621, /* FABA (64186) */ - 3747, /* FABB (64187) */ - 3678, /* FABC (64188) */ - 3435, /* FABD (64189) */ - 3748, /* FABE (64190) */ - 3679, /* FABF (64191) */ - 3749, /* FAC0 (64192) */ - 3681, /* FAC1 (64193) */ - 3750, /* FAC2 (64194) */ - 3751, /* FAC3 (64195) */ - 3752, /* FAC4 (64196) */ - 3753, /* FAC5 (64197) */ - 3754, /* FAC6 (64198) */ - 3683, /* FAC7 (64199) */ - 3617, /* FAC8 (64200) */ - 3755, /* FAC9 (64201) */ - 3684, /* FACA (64202) */ - 3756, /* FACB (64203) */ - 3685, /* FACC (64204) */ - 3757, /* FACD (64205) */ - 3351, /* FACE (64206) */ - 3758, /* FACF (64207) */ - 3759, /* FAD0 (64208) */ - 3760, /* FAD1 (64209) */ - 3761, /* FAD2 (64210) */ - 3762, /* FAD3 (64211) */ - 3763, /* FAD4 (64212) */ - 3764, /* FAD5 (64213) */ - 3765, /* FAD6 (64214) */ - 3766, /* FAD7 (64215) */ - 3767, /* FAD8 (64216) */ - 3768, /* FAD9 (64217) */ + 3693, /* FA70 (64112) */ + 3694, /* FA71 (64113) */ + 3695, /* FA72 (64114) */ + 3696, /* FA73 (64115) */ + 3697, /* FA74 (64116) */ + 3698, /* FA75 (64117) */ + 3699, /* FA76 (64118) */ + 3700, /* FA77 (64119) */ + 3640, /* FA78 (64120) */ + 3701, /* FA79 (64121) */ + 3702, /* FA7A (64122) */ + 3703, /* FA7B (64123) */ + 3612, /* FA7C (64124) */ + 3704, /* FA7D (64125) */ + 3705, /* FA7E (64126) */ + 3706, /* FA7F (64127) */ + 3707, /* FA80 (64128) */ + 3708, /* FA81 (64129) */ + 3709, /* FA82 (64130) */ + 3710, /* FA83 (64131) */ + 3711, /* FA84 (64132) */ + 3712, /* FA85 (64133) */ + 3713, /* FA86 (64134) */ + 3714, /* FA87 (64135) */ + 3715, /* FA88 (64136) */ + 3649, /* FA89 (64137) */ + 3716, /* FA8A (64138) */ + 3650, /* FA8B (64139) */ + 3717, /* FA8C (64140) */ + 3718, /* FA8D (64141) */ + 3719, /* FA8E (64142) */ + 3720, /* FA8F (64143) */ + 3721, /* FA90 (64144) */ + 3613, /* FA91 (64145) */ + 3388, /* FA92 (64146) */ + 3722, /* FA93 (64147) */ + 3723, /* FA94 (64148) */ + 3724, /* FA95 (64149) */ + 3458, /* FA96 (64150) */ + 3545, /* FA97 (64151) */ + 3725, /* FA98 (64152) */ + 3726, /* FA99 (64153) */ + 3657, /* FA9A (64154) */ + 3727, /* FA9B (64155) */ + 3658, /* FA9C (64156) */ + 3728, /* FA9D (64157) */ + 3729, /* FA9E (64158) */ + 3730, /* FA9F (64159) */ + 3615, /* FAA0 (64160) */ + 3731, /* FAA1 (64161) */ + 3732, /* FAA2 (64162) */ + 3733, /* FAA3 (64163) */ + 3734, /* FAA4 (64164) */ + 3735, /* FAA5 (64165) */ + 3616, /* FAA6 (64166) */ + 3736, /* FAA7 (64167) */ + 3737, /* FAA8 (64168) */ + 3738, /* FAA9 (64169) */ + 3739, /* FAAA (64170) */ + 3740, /* FAAB (64171) */ + 3741, /* FAAC (64172) */ + 3672, /* FAAD (64173) */ + 3742, /* FAAE (64174) */ + 3743, /* FAAF (64175) */ + 3496, /* FAB0 (64176) */ + 3744, /* FAB1 (64177) */ + 3676, /* FAB2 (64178) */ + 3745, /* FAB3 (64179) */ + 3746, /* FAB4 (64180) */ + 3747, /* FAB5 (64181) */ + 3748, /* FAB6 (64182) */ + 3749, /* FAB7 (64183) */ + 3681, /* FAB8 (64184) */ + 3750, /* FAB9 (64185) */ + 3625, /* FABA (64186) */ + 3751, /* FABB (64187) */ + 3682, /* FABC (64188) */ + 3439, /* FABD (64189) */ + 3752, /* FABE (64190) */ + 3683, /* FABF (64191) */ + 3753, /* FAC0 (64192) */ + 3685, /* FAC1 (64193) */ + 3754, /* FAC2 (64194) */ + 3755, /* FAC3 (64195) */ + 3756, /* FAC4 (64196) */ + 3757, /* FAC5 (64197) */ + 3758, /* FAC6 (64198) */ + 3687, /* FAC7 (64199) */ + 3621, /* FAC8 (64200) */ + 3759, /* FAC9 (64201) */ + 3688, /* FACA (64202) */ + 3760, /* FACB (64203) */ + 3689, /* FACC (64204) */ + 3761, /* FACD (64205) */ + 3355, /* FACE (64206) */ + 3762, /* FACF (64207) */ + 3763, /* FAD0 (64208) */ + 3764, /* FAD1 (64209) */ + 3765, /* FAD2 (64210) */ + 3766, /* FAD3 (64211) */ + 3767, /* FAD4 (64212) */ + 3768, /* FAD5 (64213) */ + 3769, /* FAD6 (64214) */ + 3770, /* FAD7 (64215) */ + 3771, /* FAD8 (64216) */ + 3772, /* FAD9 (64217) */ 56, /* FADA (64218) */ 56, /* FADB (64219) */ 56, /* FADC (64220) */ @@ -57884,13 +57884,13 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* FAFD (64253) */ 56, /* FAFE (64254) */ 56, /* FAFF (64255) */ - 3769, /* FB00 (64256) */ - 3770, /* FB01 (64257) */ - 3771, /* FB02 (64258) */ - 3772, /* FB03 (64259) */ - 3773, /* FB04 (64260) */ - 3774, /* FB05 (64261) */ - 3775, /* FB06 (64262) */ + 3773, /* FB00 (64256) */ + 3774, /* FB01 (64257) */ + 3775, /* FB02 (64258) */ + 3776, /* FB03 (64259) */ + 3777, /* FB04 (64260) */ + 3778, /* FB05 (64261) */ + 3779, /* FB06 (64262) */ 56, /* FB07 (64263) */ 56, /* FB08 (64264) */ 56, /* FB09 (64265) */ @@ -57903,165 +57903,165 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* FB10 (64272) */ 56, /* FB11 (64273) */ 56, /* FB12 (64274) */ - 3776, /* FB13 (64275) */ - 3777, /* FB14 (64276) */ - 3778, /* FB15 (64277) */ - 3779, /* FB16 (64278) */ - 3780, /* FB17 (64279) */ + 3780, /* FB13 (64275) */ + 3781, /* FB14 (64276) */ + 3782, /* FB15 (64277) */ + 3783, /* FB16 (64278) */ + 3784, /* FB17 (64279) */ 56, /* FB18 (64280) */ 56, /* FB19 (64281) */ 56, /* FB1A (64282) */ 56, /* FB1B (64283) */ 56, /* FB1C (64284) */ - 3781, /* FB1D (64285) */ - 3782, /* FB1E (64286) */ - 3783, /* FB1F (64287) */ - 3784, /* FB20 (64288) */ - 3785, /* FB21 (64289) */ - 3786, /* FB22 (64290) */ - 3787, /* FB23 (64291) */ - 3788, /* FB24 (64292) */ - 3789, /* FB25 (64293) */ - 3790, /* FB26 (64294) */ - 3791, /* FB27 (64295) */ - 3792, /* FB28 (64296) */ - 3793, /* FB29 (64297) */ - 3794, /* FB2A (64298) */ - 3795, /* FB2B (64299) */ - 3796, /* FB2C (64300) */ - 3797, /* FB2D (64301) */ - 3798, /* FB2E (64302) */ - 3799, /* FB2F (64303) */ - 3800, /* FB30 (64304) */ - 3801, /* FB31 (64305) */ - 3802, /* FB32 (64306) */ - 3803, /* FB33 (64307) */ - 3804, /* FB34 (64308) */ - 3805, /* FB35 (64309) */ - 3806, /* FB36 (64310) */ + 3785, /* FB1D (64285) */ + 3786, /* FB1E (64286) */ + 3787, /* FB1F (64287) */ + 3788, /* FB20 (64288) */ + 3789, /* FB21 (64289) */ + 3790, /* FB22 (64290) */ + 3791, /* FB23 (64291) */ + 3792, /* FB24 (64292) */ + 3793, /* FB25 (64293) */ + 3794, /* FB26 (64294) */ + 3795, /* FB27 (64295) */ + 3796, /* FB28 (64296) */ + 3797, /* FB29 (64297) */ + 3798, /* FB2A (64298) */ + 3799, /* FB2B (64299) */ + 3800, /* FB2C (64300) */ + 3801, /* FB2D (64301) */ + 3802, /* FB2E (64302) */ + 3803, /* FB2F (64303) */ + 3804, /* FB30 (64304) */ + 3805, /* FB31 (64305) */ + 3806, /* FB32 (64306) */ + 3807, /* FB33 (64307) */ + 3808, /* FB34 (64308) */ + 3809, /* FB35 (64309) */ + 3810, /* FB36 (64310) */ 56, /* FB37 (64311) */ - 3807, /* FB38 (64312) */ - 3808, /* FB39 (64313) */ - 3809, /* FB3A (64314) */ - 3810, /* FB3B (64315) */ - 3811, /* FB3C (64316) */ + 3811, /* FB38 (64312) */ + 3812, /* FB39 (64313) */ + 3813, /* FB3A (64314) */ + 3814, /* FB3B (64315) */ + 3815, /* FB3C (64316) */ 56, /* FB3D (64317) */ - 3812, /* FB3E (64318) */ + 3816, /* FB3E (64318) */ 56, /* FB3F (64319) */ - 3813, /* FB40 (64320) */ - 3814, /* FB41 (64321) */ + 3817, /* FB40 (64320) */ + 3818, /* FB41 (64321) */ 56, /* FB42 (64322) */ - 3815, /* FB43 (64323) */ - 3816, /* FB44 (64324) */ + 3819, /* FB43 (64323) */ + 3820, /* FB44 (64324) */ 56, /* FB45 (64325) */ - 3817, /* FB46 (64326) */ - 3818, /* FB47 (64327) */ - 3819, /* FB48 (64328) */ - 3820, /* FB49 (64329) */ - 3821, /* FB4A (64330) */ - 3822, /* FB4B (64331) */ - 3823, /* FB4C (64332) */ - 3824, /* FB4D (64333) */ - 3825, /* FB4E (64334) */ - 3826, /* FB4F (64335) */ - 3827, /* FB50 (64336) */ - 3828, /* FB51 (64337) */ - 3829, /* FB52 (64338) */ - 3830, /* FB53 (64339) */ - 3831, /* FB54 (64340) */ - 3832, /* FB55 (64341) */ - 3833, /* FB56 (64342) */ - 3834, /* FB57 (64343) */ - 3835, /* FB58 (64344) */ - 3836, /* FB59 (64345) */ - 3837, /* FB5A (64346) */ - 3838, /* FB5B (64347) */ - 3839, /* FB5C (64348) */ - 3840, /* FB5D (64349) */ - 3841, /* FB5E (64350) */ - 3842, /* FB5F (64351) */ - 3843, /* FB60 (64352) */ - 3844, /* FB61 (64353) */ - 3845, /* FB62 (64354) */ - 3846, /* FB63 (64355) */ - 3847, /* FB64 (64356) */ - 3848, /* FB65 (64357) */ - 3849, /* FB66 (64358) */ - 3850, /* FB67 (64359) */ - 3851, /* FB68 (64360) */ - 3852, /* FB69 (64361) */ - 3853, /* FB6A (64362) */ - 3854, /* FB6B (64363) */ - 3855, /* FB6C (64364) */ - 3856, /* FB6D (64365) */ - 3857, /* FB6E (64366) */ - 3858, /* FB6F (64367) */ - 3859, /* FB70 (64368) */ - 3860, /* FB71 (64369) */ - 3861, /* FB72 (64370) */ - 3862, /* FB73 (64371) */ - 3863, /* FB74 (64372) */ - 3864, /* FB75 (64373) */ - 3865, /* FB76 (64374) */ - 3866, /* FB77 (64375) */ - 3867, /* FB78 (64376) */ - 3868, /* FB79 (64377) */ - 3869, /* FB7A (64378) */ - 3870, /* FB7B (64379) */ - 3871, /* FB7C (64380) */ - 3872, /* FB7D (64381) */ - 3873, /* FB7E (64382) */ - 3874, /* FB7F (64383) */ - 3875, /* FB80 (64384) */ - 3876, /* FB81 (64385) */ - 3877, /* FB82 (64386) */ - 3878, /* FB83 (64387) */ - 3879, /* FB84 (64388) */ - 3880, /* FB85 (64389) */ - 3881, /* FB86 (64390) */ - 3882, /* FB87 (64391) */ - 3883, /* FB88 (64392) */ - 3884, /* FB89 (64393) */ - 3885, /* FB8A (64394) */ - 3886, /* FB8B (64395) */ - 3887, /* FB8C (64396) */ - 3888, /* FB8D (64397) */ - 3889, /* FB8E (64398) */ - 3890, /* FB8F (64399) */ - 3891, /* FB90 (64400) */ - 3892, /* FB91 (64401) */ - 3893, /* FB92 (64402) */ - 3894, /* FB93 (64403) */ - 3895, /* FB94 (64404) */ - 3896, /* FB95 (64405) */ - 3897, /* FB96 (64406) */ - 3898, /* FB97 (64407) */ - 3899, /* FB98 (64408) */ - 3900, /* FB99 (64409) */ - 3901, /* FB9A (64410) */ - 3902, /* FB9B (64411) */ - 3903, /* FB9C (64412) */ - 3904, /* FB9D (64413) */ - 3905, /* FB9E (64414) */ - 3906, /* FB9F (64415) */ - 3907, /* FBA0 (64416) */ - 3908, /* FBA1 (64417) */ - 3909, /* FBA2 (64418) */ - 3910, /* FBA3 (64419) */ - 3911, /* FBA4 (64420) */ - 3912, /* FBA5 (64421) */ - 3913, /* FBA6 (64422) */ - 3914, /* FBA7 (64423) */ - 3915, /* FBA8 (64424) */ - 3916, /* FBA9 (64425) */ - 3917, /* FBAA (64426) */ - 3918, /* FBAB (64427) */ - 3919, /* FBAC (64428) */ - 3920, /* FBAD (64429) */ - 3921, /* FBAE (64430) */ - 3922, /* FBAF (64431) */ - 3923, /* FBB0 (64432) */ - 3924, /* FBB1 (64433) */ + 3821, /* FB46 (64326) */ + 3822, /* FB47 (64327) */ + 3823, /* FB48 (64328) */ + 3824, /* FB49 (64329) */ + 3825, /* FB4A (64330) */ + 3826, /* FB4B (64331) */ + 3827, /* FB4C (64332) */ + 3828, /* FB4D (64333) */ + 3829, /* FB4E (64334) */ + 3830, /* FB4F (64335) */ + 3831, /* FB50 (64336) */ + 3832, /* FB51 (64337) */ + 3833, /* FB52 (64338) */ + 3834, /* FB53 (64339) */ + 3835, /* FB54 (64340) */ + 3836, /* FB55 (64341) */ + 3837, /* FB56 (64342) */ + 3838, /* FB57 (64343) */ + 3839, /* FB58 (64344) */ + 3840, /* FB59 (64345) */ + 3841, /* FB5A (64346) */ + 3842, /* FB5B (64347) */ + 3843, /* FB5C (64348) */ + 3844, /* FB5D (64349) */ + 3845, /* FB5E (64350) */ + 3846, /* FB5F (64351) */ + 3847, /* FB60 (64352) */ + 3848, /* FB61 (64353) */ + 3849, /* FB62 (64354) */ + 3850, /* FB63 (64355) */ + 3851, /* FB64 (64356) */ + 3852, /* FB65 (64357) */ + 3853, /* FB66 (64358) */ + 3854, /* FB67 (64359) */ + 3855, /* FB68 (64360) */ + 3856, /* FB69 (64361) */ + 3857, /* FB6A (64362) */ + 3858, /* FB6B (64363) */ + 3859, /* FB6C (64364) */ + 3860, /* FB6D (64365) */ + 3861, /* FB6E (64366) */ + 3862, /* FB6F (64367) */ + 3863, /* FB70 (64368) */ + 3864, /* FB71 (64369) */ + 3865, /* FB72 (64370) */ + 3866, /* FB73 (64371) */ + 3867, /* FB74 (64372) */ + 3868, /* FB75 (64373) */ + 3869, /* FB76 (64374) */ + 3870, /* FB77 (64375) */ + 3871, /* FB78 (64376) */ + 3872, /* FB79 (64377) */ + 3873, /* FB7A (64378) */ + 3874, /* FB7B (64379) */ + 3875, /* FB7C (64380) */ + 3876, /* FB7D (64381) */ + 3877, /* FB7E (64382) */ + 3878, /* FB7F (64383) */ + 3879, /* FB80 (64384) */ + 3880, /* FB81 (64385) */ + 3881, /* FB82 (64386) */ + 3882, /* FB83 (64387) */ + 3883, /* FB84 (64388) */ + 3884, /* FB85 (64389) */ + 3885, /* FB86 (64390) */ + 3886, /* FB87 (64391) */ + 3887, /* FB88 (64392) */ + 3888, /* FB89 (64393) */ + 3889, /* FB8A (64394) */ + 3890, /* FB8B (64395) */ + 3891, /* FB8C (64396) */ + 3892, /* FB8D (64397) */ + 3893, /* FB8E (64398) */ + 3894, /* FB8F (64399) */ + 3895, /* FB90 (64400) */ + 3896, /* FB91 (64401) */ + 3897, /* FB92 (64402) */ + 3898, /* FB93 (64403) */ + 3899, /* FB94 (64404) */ + 3900, /* FB95 (64405) */ + 3901, /* FB96 (64406) */ + 3902, /* FB97 (64407) */ + 3903, /* FB98 (64408) */ + 3904, /* FB99 (64409) */ + 3905, /* FB9A (64410) */ + 3906, /* FB9B (64411) */ + 3907, /* FB9C (64412) */ + 3908, /* FB9D (64413) */ + 3909, /* FB9E (64414) */ + 3910, /* FB9F (64415) */ + 3911, /* FBA0 (64416) */ + 3912, /* FBA1 (64417) */ + 3913, /* FBA2 (64418) */ + 3914, /* FBA3 (64419) */ + 3915, /* FBA4 (64420) */ + 3916, /* FBA5 (64421) */ + 3917, /* FBA6 (64422) */ + 3918, /* FBA7 (64423) */ + 3919, /* FBA8 (64424) */ + 3920, /* FBA9 (64425) */ + 3921, /* FBAA (64426) */ + 3922, /* FBAB (64427) */ + 3923, /* FBAC (64428) */ + 3924, /* FBAD (64429) */ + 3925, /* FBAE (64430) */ + 3926, /* FBAF (64431) */ + 3927, /* FBB0 (64432) */ + 3928, /* FBB1 (64433) */ 1, /* FBB2 (64434) */ 1, /* FBB3 (64435) */ 1, /* FBB4 (64436) */ @@ -58079,385 +58079,385 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* FBC0 (64448) */ 1, /* FBC1 (64449) */ 1, /* FBC2 (64450) */ - 56, /* FBC3 (64451) */ - 56, /* FBC4 (64452) */ - 56, /* FBC5 (64453) */ - 56, /* FBC6 (64454) */ - 56, /* FBC7 (64455) */ - 56, /* FBC8 (64456) */ - 56, /* FBC9 (64457) */ - 56, /* FBCA (64458) */ - 56, /* FBCB (64459) */ - 56, /* FBCC (64460) */ - 56, /* FBCD (64461) */ - 56, /* FBCE (64462) */ - 56, /* FBCF (64463) */ - 56, /* FBD0 (64464) */ - 56, /* FBD1 (64465) */ - 56, /* FBD2 (64466) */ - 3925, /* FBD3 (64467) */ - 3926, /* FBD4 (64468) */ - 3927, /* FBD5 (64469) */ - 3928, /* FBD6 (64470) */ - 3929, /* FBD7 (64471) */ - 3930, /* FBD8 (64472) */ - 3931, /* FBD9 (64473) */ - 3932, /* FBDA (64474) */ - 3933, /* FBDB (64475) */ - 3934, /* FBDC (64476) */ - 3935, /* FBDD (64477) */ - 3936, /* FBDE (64478) */ - 3937, /* FBDF (64479) */ - 3938, /* FBE0 (64480) */ - 3939, /* FBE1 (64481) */ - 3940, /* FBE2 (64482) */ - 3941, /* FBE3 (64483) */ - 3942, /* FBE4 (64484) */ - 3943, /* FBE5 (64485) */ - 3944, /* FBE6 (64486) */ - 3945, /* FBE7 (64487) */ - 3946, /* FBE8 (64488) */ - 3947, /* FBE9 (64489) */ - 3948, /* FBEA (64490) */ - 3949, /* FBEB (64491) */ - 3950, /* FBEC (64492) */ - 3951, /* FBED (64493) */ - 3952, /* FBEE (64494) */ - 3953, /* FBEF (64495) */ - 3954, /* FBF0 (64496) */ - 3955, /* FBF1 (64497) */ - 3956, /* FBF2 (64498) */ - 3957, /* FBF3 (64499) */ - 3958, /* FBF4 (64500) */ - 3959, /* FBF5 (64501) */ - 3960, /* FBF6 (64502) */ - 3961, /* FBF7 (64503) */ - 3962, /* FBF8 (64504) */ - 3963, /* FBF9 (64505) */ - 3964, /* FBFA (64506) */ - 3965, /* FBFB (64507) */ - 3966, /* FBFC (64508) */ - 3967, /* FBFD (64509) */ - 3968, /* FBFE (64510) */ - 3969, /* FBFF (64511) */ - 3970, /* FC00 (64512) */ - 3971, /* FC01 (64513) */ - 3972, /* FC02 (64514) */ - 3963, /* FC03 (64515) */ - 3973, /* FC04 (64516) */ - 3974, /* FC05 (64517) */ - 3975, /* FC06 (64518) */ - 3976, /* FC07 (64519) */ - 3977, /* FC08 (64520) */ - 3978, /* FC09 (64521) */ - 3979, /* FC0A (64522) */ - 3980, /* FC0B (64523) */ - 3981, /* FC0C (64524) */ - 3982, /* FC0D (64525) */ - 3983, /* FC0E (64526) */ - 3984, /* FC0F (64527) */ - 3985, /* FC10 (64528) */ - 3986, /* FC11 (64529) */ - 3987, /* FC12 (64530) */ - 3988, /* FC13 (64531) */ - 3989, /* FC14 (64532) */ - 3990, /* FC15 (64533) */ - 3991, /* FC16 (64534) */ - 3992, /* FC17 (64535) */ - 3993, /* FC18 (64536) */ - 3994, /* FC19 (64537) */ - 3995, /* FC1A (64538) */ - 3996, /* FC1B (64539) */ - 3997, /* FC1C (64540) */ - 3998, /* FC1D (64541) */ - 3999, /* FC1E (64542) */ - 4000, /* FC1F (64543) */ - 4001, /* FC20 (64544) */ - 4002, /* FC21 (64545) */ - 4003, /* FC22 (64546) */ - 4004, /* FC23 (64547) */ - 4005, /* FC24 (64548) */ - 4006, /* FC25 (64549) */ - 4007, /* FC26 (64550) */ - 4008, /* FC27 (64551) */ - 4009, /* FC28 (64552) */ - 4010, /* FC29 (64553) */ - 4011, /* FC2A (64554) */ - 4012, /* FC2B (64555) */ - 4013, /* FC2C (64556) */ - 4014, /* FC2D (64557) */ - 4015, /* FC2E (64558) */ - 4016, /* FC2F (64559) */ - 4017, /* FC30 (64560) */ - 4018, /* FC31 (64561) */ - 4019, /* FC32 (64562) */ - 4020, /* FC33 (64563) */ - 4021, /* FC34 (64564) */ - 4022, /* FC35 (64565) */ - 4023, /* FC36 (64566) */ - 4024, /* FC37 (64567) */ - 4025, /* FC38 (64568) */ - 4026, /* FC39 (64569) */ - 4027, /* FC3A (64570) */ - 4028, /* FC3B (64571) */ - 4029, /* FC3C (64572) */ - 4030, /* FC3D (64573) */ - 4031, /* FC3E (64574) */ - 4032, /* FC3F (64575) */ - 4033, /* FC40 (64576) */ - 4034, /* FC41 (64577) */ - 4035, /* FC42 (64578) */ - 4036, /* FC43 (64579) */ - 4037, /* FC44 (64580) */ - 4038, /* FC45 (64581) */ - 4039, /* FC46 (64582) */ - 4040, /* FC47 (64583) */ - 4041, /* FC48 (64584) */ - 4042, /* FC49 (64585) */ - 4043, /* FC4A (64586) */ - 4044, /* FC4B (64587) */ - 4045, /* FC4C (64588) */ - 4046, /* FC4D (64589) */ - 4047, /* FC4E (64590) */ - 4048, /* FC4F (64591) */ - 4049, /* FC50 (64592) */ - 4050, /* FC51 (64593) */ - 4051, /* FC52 (64594) */ - 4052, /* FC53 (64595) */ - 4053, /* FC54 (64596) */ - 4054, /* FC55 (64597) */ - 4055, /* FC56 (64598) */ - 4056, /* FC57 (64599) */ - 4057, /* FC58 (64600) */ - 4058, /* FC59 (64601) */ - 4059, /* FC5A (64602) */ - 4060, /* FC5B (64603) */ - 4061, /* FC5C (64604) */ - 4062, /* FC5D (64605) */ - 4063, /* FC5E (64606) */ - 4064, /* FC5F (64607) */ - 4065, /* FC60 (64608) */ - 4066, /* FC61 (64609) */ - 4067, /* FC62 (64610) */ - 4068, /* FC63 (64611) */ - 4069, /* FC64 (64612) */ - 4070, /* FC65 (64613) */ - 4071, /* FC66 (64614) */ - 4072, /* FC67 (64615) */ - 3964, /* FC68 (64616) */ - 4073, /* FC69 (64617) */ - 4074, /* FC6A (64618) */ - 4075, /* FC6B (64619) */ - 4076, /* FC6C (64620) */ - 4077, /* FC6D (64621) */ - 4078, /* FC6E (64622) */ - 4079, /* FC6F (64623) */ - 4080, /* FC70 (64624) */ - 4081, /* FC71 (64625) */ - 4082, /* FC72 (64626) */ - 4083, /* FC73 (64627) */ - 4084, /* FC74 (64628) */ - 4085, /* FC75 (64629) */ - 4086, /* FC76 (64630) */ - 4087, /* FC77 (64631) */ - 4088, /* FC78 (64632) */ - 4089, /* FC79 (64633) */ - 4090, /* FC7A (64634) */ - 4091, /* FC7B (64635) */ - 4092, /* FC7C (64636) */ - 4093, /* FC7D (64637) */ - 4094, /* FC7E (64638) */ - 4095, /* FC7F (64639) */ - 4096, /* FC80 (64640) */ - 4097, /* FC81 (64641) */ - 4098, /* FC82 (64642) */ - 4099, /* FC83 (64643) */ - 4100, /* FC84 (64644) */ - 4101, /* FC85 (64645) */ - 4102, /* FC86 (64646) */ - 4103, /* FC87 (64647) */ - 4104, /* FC88 (64648) */ - 4105, /* FC89 (64649) */ - 4106, /* FC8A (64650) */ - 4107, /* FC8B (64651) */ - 4108, /* FC8C (64652) */ - 4109, /* FC8D (64653) */ - 4110, /* FC8E (64654) */ - 4111, /* FC8F (64655) */ - 4112, /* FC90 (64656) */ - 4113, /* FC91 (64657) */ - 4114, /* FC92 (64658) */ - 4115, /* FC93 (64659) */ - 4116, /* FC94 (64660) */ - 4117, /* FC95 (64661) */ - 4118, /* FC96 (64662) */ - 4119, /* FC97 (64663) */ - 4120, /* FC98 (64664) */ - 4121, /* FC99 (64665) */ - 4122, /* FC9A (64666) */ - 4123, /* FC9B (64667) */ - 4124, /* FC9C (64668) */ - 4125, /* FC9D (64669) */ - 4126, /* FC9E (64670) */ - 4127, /* FC9F (64671) */ - 4128, /* FCA0 (64672) */ - 4129, /* FCA1 (64673) */ - 4130, /* FCA2 (64674) */ - 4131, /* FCA3 (64675) */ - 4132, /* FCA4 (64676) */ - 4133, /* FCA5 (64677) */ - 4134, /* FCA6 (64678) */ - 4135, /* FCA7 (64679) */ - 4136, /* FCA8 (64680) */ - 4137, /* FCA9 (64681) */ - 4138, /* FCAA (64682) */ - 4139, /* FCAB (64683) */ - 4140, /* FCAC (64684) */ - 4141, /* FCAD (64685) */ - 4142, /* FCAE (64686) */ - 4143, /* FCAF (64687) */ - 4144, /* FCB0 (64688) */ - 4145, /* FCB1 (64689) */ - 4146, /* FCB2 (64690) */ - 4147, /* FCB3 (64691) */ - 4148, /* FCB4 (64692) */ - 4149, /* FCB5 (64693) */ - 4150, /* FCB6 (64694) */ - 4151, /* FCB7 (64695) */ - 4152, /* FCB8 (64696) */ - 4153, /* FCB9 (64697) */ - 4154, /* FCBA (64698) */ - 4155, /* FCBB (64699) */ - 4156, /* FCBC (64700) */ - 4157, /* FCBD (64701) */ - 4158, /* FCBE (64702) */ - 4159, /* FCBF (64703) */ - 4160, /* FCC0 (64704) */ - 4161, /* FCC1 (64705) */ - 4162, /* FCC2 (64706) */ - 4163, /* FCC3 (64707) */ - 4164, /* FCC4 (64708) */ - 4165, /* FCC5 (64709) */ - 4166, /* FCC6 (64710) */ - 4167, /* FCC7 (64711) */ - 4168, /* FCC8 (64712) */ - 4169, /* FCC9 (64713) */ - 4170, /* FCCA (64714) */ - 4171, /* FCCB (64715) */ - 4172, /* FCCC (64716) */ - 4173, /* FCCD (64717) */ - 4174, /* FCCE (64718) */ - 4175, /* FCCF (64719) */ - 4176, /* FCD0 (64720) */ - 4177, /* FCD1 (64721) */ - 4178, /* FCD2 (64722) */ - 4179, /* FCD3 (64723) */ - 4180, /* FCD4 (64724) */ - 4181, /* FCD5 (64725) */ - 4182, /* FCD6 (64726) */ - 4183, /* FCD7 (64727) */ - 4184, /* FCD8 (64728) */ - 4185, /* FCD9 (64729) */ - 4186, /* FCDA (64730) */ - 4187, /* FCDB (64731) */ - 4188, /* FCDC (64732) */ - 4189, /* FCDD (64733) */ - 4190, /* FCDE (64734) */ - 4191, /* FCDF (64735) */ - 4192, /* FCE0 (64736) */ - 4193, /* FCE1 (64737) */ - 4194, /* FCE2 (64738) */ - 4195, /* FCE3 (64739) */ - 4196, /* FCE4 (64740) */ - 4197, /* FCE5 (64741) */ - 4198, /* FCE6 (64742) */ - 4199, /* FCE7 (64743) */ - 4200, /* FCE8 (64744) */ - 4201, /* FCE9 (64745) */ - 4202, /* FCEA (64746) */ - 4203, /* FCEB (64747) */ - 4204, /* FCEC (64748) */ - 4205, /* FCED (64749) */ - 4206, /* FCEE (64750) */ - 4207, /* FCEF (64751) */ - 4208, /* FCF0 (64752) */ - 4209, /* FCF1 (64753) */ - 4210, /* FCF2 (64754) */ - 4211, /* FCF3 (64755) */ - 4212, /* FCF4 (64756) */ - 4213, /* FCF5 (64757) */ - 4214, /* FCF6 (64758) */ - 4215, /* FCF7 (64759) */ - 4216, /* FCF8 (64760) */ - 4217, /* FCF9 (64761) */ - 4218, /* FCFA (64762) */ - 4219, /* FCFB (64763) */ - 4220, /* FCFC (64764) */ - 4221, /* FCFD (64765) */ - 4222, /* FCFE (64766) */ - 4223, /* FCFF (64767) */ - 4224, /* FD00 (64768) */ - 4225, /* FD01 (64769) */ - 4226, /* FD02 (64770) */ - 4227, /* FD03 (64771) */ - 4228, /* FD04 (64772) */ - 4229, /* FD05 (64773) */ - 4230, /* FD06 (64774) */ - 4231, /* FD07 (64775) */ - 4232, /* FD08 (64776) */ - 4233, /* FD09 (64777) */ - 4234, /* FD0A (64778) */ - 4235, /* FD0B (64779) */ - 4236, /* FD0C (64780) */ - 4237, /* FD0D (64781) */ - 4238, /* FD0E (64782) */ - 4239, /* FD0F (64783) */ - 4240, /* FD10 (64784) */ - 4241, /* FD11 (64785) */ - 4242, /* FD12 (64786) */ - 4243, /* FD13 (64787) */ - 4244, /* FD14 (64788) */ - 4245, /* FD15 (64789) */ - 4246, /* FD16 (64790) */ - 4247, /* FD17 (64791) */ - 4248, /* FD18 (64792) */ - 4249, /* FD19 (64793) */ - 4250, /* FD1A (64794) */ - 4251, /* FD1B (64795) */ - 4252, /* FD1C (64796) */ - 4253, /* FD1D (64797) */ - 4254, /* FD1E (64798) */ - 4255, /* FD1F (64799) */ - 4256, /* FD20 (64800) */ - 4257, /* FD21 (64801) */ - 4258, /* FD22 (64802) */ - 4259, /* FD23 (64803) */ - 4260, /* FD24 (64804) */ - 4261, /* FD25 (64805) */ - 4262, /* FD26 (64806) */ - 4263, /* FD27 (64807) */ - 4264, /* FD28 (64808) */ - 4265, /* FD29 (64809) */ - 4266, /* FD2A (64810) */ - 4267, /* FD2B (64811) */ - 4268, /* FD2C (64812) */ - 4269, /* FD2D (64813) */ - 4270, /* FD2E (64814) */ - 4271, /* FD2F (64815) */ - 4272, /* FD30 (64816) */ - 4273, /* FD31 (64817) */ - 4274, /* FD32 (64818) */ - 4275, /* FD33 (64819) */ - 4276, /* FD34 (64820) */ - 4277, /* FD35 (64821) */ - 4278, /* FD36 (64822) */ - 4279, /* FD37 (64823) */ - 4280, /* FD38 (64824) */ - 4281, /* FD39 (64825) */ - 4282, /* FD3A (64826) */ - 4283, /* FD3B (64827) */ - 4284, /* FD3C (64828) */ - 4285, /* FD3D (64829) */ + 1, /* FBC3 (64451) */ + 1, /* FBC4 (64452) */ + 1, /* FBC5 (64453) */ + 1, /* FBC6 (64454) */ + 1, /* FBC7 (64455) */ + 1, /* FBC8 (64456) */ + 1, /* FBC9 (64457) */ + 1, /* FBCA (64458) */ + 1, /* FBCB (64459) */ + 1, /* FBCC (64460) */ + 1, /* FBCD (64461) */ + 1, /* FBCE (64462) */ + 1, /* FBCF (64463) */ + 1, /* FBD0 (64464) */ + 1, /* FBD1 (64465) */ + 1, /* FBD2 (64466) */ + 3929, /* FBD3 (64467) */ + 3930, /* FBD4 (64468) */ + 3931, /* FBD5 (64469) */ + 3932, /* FBD6 (64470) */ + 3933, /* FBD7 (64471) */ + 3934, /* FBD8 (64472) */ + 3935, /* FBD9 (64473) */ + 3936, /* FBDA (64474) */ + 3937, /* FBDB (64475) */ + 3938, /* FBDC (64476) */ + 3939, /* FBDD (64477) */ + 3940, /* FBDE (64478) */ + 3941, /* FBDF (64479) */ + 3942, /* FBE0 (64480) */ + 3943, /* FBE1 (64481) */ + 3944, /* FBE2 (64482) */ + 3945, /* FBE3 (64483) */ + 3946, /* FBE4 (64484) */ + 3947, /* FBE5 (64485) */ + 3948, /* FBE6 (64486) */ + 3949, /* FBE7 (64487) */ + 3950, /* FBE8 (64488) */ + 3951, /* FBE9 (64489) */ + 3952, /* FBEA (64490) */ + 3953, /* FBEB (64491) */ + 3954, /* FBEC (64492) */ + 3955, /* FBED (64493) */ + 3956, /* FBEE (64494) */ + 3957, /* FBEF (64495) */ + 3958, /* FBF0 (64496) */ + 3959, /* FBF1 (64497) */ + 3960, /* FBF2 (64498) */ + 3961, /* FBF3 (64499) */ + 3962, /* FBF4 (64500) */ + 3963, /* FBF5 (64501) */ + 3964, /* FBF6 (64502) */ + 3965, /* FBF7 (64503) */ + 3966, /* FBF8 (64504) */ + 3967, /* FBF9 (64505) */ + 3968, /* FBFA (64506) */ + 3969, /* FBFB (64507) */ + 3970, /* FBFC (64508) */ + 3971, /* FBFD (64509) */ + 3972, /* FBFE (64510) */ + 3973, /* FBFF (64511) */ + 3974, /* FC00 (64512) */ + 3975, /* FC01 (64513) */ + 3976, /* FC02 (64514) */ + 3967, /* FC03 (64515) */ + 3977, /* FC04 (64516) */ + 3978, /* FC05 (64517) */ + 3979, /* FC06 (64518) */ + 3980, /* FC07 (64519) */ + 3981, /* FC08 (64520) */ + 3982, /* FC09 (64521) */ + 3983, /* FC0A (64522) */ + 3984, /* FC0B (64523) */ + 3985, /* FC0C (64524) */ + 3986, /* FC0D (64525) */ + 3987, /* FC0E (64526) */ + 3988, /* FC0F (64527) */ + 3989, /* FC10 (64528) */ + 3990, /* FC11 (64529) */ + 3991, /* FC12 (64530) */ + 3992, /* FC13 (64531) */ + 3993, /* FC14 (64532) */ + 3994, /* FC15 (64533) */ + 3995, /* FC16 (64534) */ + 3996, /* FC17 (64535) */ + 3997, /* FC18 (64536) */ + 3998, /* FC19 (64537) */ + 3999, /* FC1A (64538) */ + 4000, /* FC1B (64539) */ + 4001, /* FC1C (64540) */ + 4002, /* FC1D (64541) */ + 4003, /* FC1E (64542) */ + 4004, /* FC1F (64543) */ + 4005, /* FC20 (64544) */ + 4006, /* FC21 (64545) */ + 4007, /* FC22 (64546) */ + 4008, /* FC23 (64547) */ + 4009, /* FC24 (64548) */ + 4010, /* FC25 (64549) */ + 4011, /* FC26 (64550) */ + 4012, /* FC27 (64551) */ + 4013, /* FC28 (64552) */ + 4014, /* FC29 (64553) */ + 4015, /* FC2A (64554) */ + 4016, /* FC2B (64555) */ + 4017, /* FC2C (64556) */ + 4018, /* FC2D (64557) */ + 4019, /* FC2E (64558) */ + 4020, /* FC2F (64559) */ + 4021, /* FC30 (64560) */ + 4022, /* FC31 (64561) */ + 4023, /* FC32 (64562) */ + 4024, /* FC33 (64563) */ + 4025, /* FC34 (64564) */ + 4026, /* FC35 (64565) */ + 4027, /* FC36 (64566) */ + 4028, /* FC37 (64567) */ + 4029, /* FC38 (64568) */ + 4030, /* FC39 (64569) */ + 4031, /* FC3A (64570) */ + 4032, /* FC3B (64571) */ + 4033, /* FC3C (64572) */ + 4034, /* FC3D (64573) */ + 4035, /* FC3E (64574) */ + 4036, /* FC3F (64575) */ + 4037, /* FC40 (64576) */ + 4038, /* FC41 (64577) */ + 4039, /* FC42 (64578) */ + 4040, /* FC43 (64579) */ + 4041, /* FC44 (64580) */ + 4042, /* FC45 (64581) */ + 4043, /* FC46 (64582) */ + 4044, /* FC47 (64583) */ + 4045, /* FC48 (64584) */ + 4046, /* FC49 (64585) */ + 4047, /* FC4A (64586) */ + 4048, /* FC4B (64587) */ + 4049, /* FC4C (64588) */ + 4050, /* FC4D (64589) */ + 4051, /* FC4E (64590) */ + 4052, /* FC4F (64591) */ + 4053, /* FC50 (64592) */ + 4054, /* FC51 (64593) */ + 4055, /* FC52 (64594) */ + 4056, /* FC53 (64595) */ + 4057, /* FC54 (64596) */ + 4058, /* FC55 (64597) */ + 4059, /* FC56 (64598) */ + 4060, /* FC57 (64599) */ + 4061, /* FC58 (64600) */ + 4062, /* FC59 (64601) */ + 4063, /* FC5A (64602) */ + 4064, /* FC5B (64603) */ + 4065, /* FC5C (64604) */ + 4066, /* FC5D (64605) */ + 4067, /* FC5E (64606) */ + 4068, /* FC5F (64607) */ + 4069, /* FC60 (64608) */ + 4070, /* FC61 (64609) */ + 4071, /* FC62 (64610) */ + 4072, /* FC63 (64611) */ + 4073, /* FC64 (64612) */ + 4074, /* FC65 (64613) */ + 4075, /* FC66 (64614) */ + 4076, /* FC67 (64615) */ + 3968, /* FC68 (64616) */ + 4077, /* FC69 (64617) */ + 4078, /* FC6A (64618) */ + 4079, /* FC6B (64619) */ + 4080, /* FC6C (64620) */ + 4081, /* FC6D (64621) */ + 4082, /* FC6E (64622) */ + 4083, /* FC6F (64623) */ + 4084, /* FC70 (64624) */ + 4085, /* FC71 (64625) */ + 4086, /* FC72 (64626) */ + 4087, /* FC73 (64627) */ + 4088, /* FC74 (64628) */ + 4089, /* FC75 (64629) */ + 4090, /* FC76 (64630) */ + 4091, /* FC77 (64631) */ + 4092, /* FC78 (64632) */ + 4093, /* FC79 (64633) */ + 4094, /* FC7A (64634) */ + 4095, /* FC7B (64635) */ + 4096, /* FC7C (64636) */ + 4097, /* FC7D (64637) */ + 4098, /* FC7E (64638) */ + 4099, /* FC7F (64639) */ + 4100, /* FC80 (64640) */ + 4101, /* FC81 (64641) */ + 4102, /* FC82 (64642) */ + 4103, /* FC83 (64643) */ + 4104, /* FC84 (64644) */ + 4105, /* FC85 (64645) */ + 4106, /* FC86 (64646) */ + 4107, /* FC87 (64647) */ + 4108, /* FC88 (64648) */ + 4109, /* FC89 (64649) */ + 4110, /* FC8A (64650) */ + 4111, /* FC8B (64651) */ + 4112, /* FC8C (64652) */ + 4113, /* FC8D (64653) */ + 4114, /* FC8E (64654) */ + 4115, /* FC8F (64655) */ + 4116, /* FC90 (64656) */ + 4117, /* FC91 (64657) */ + 4118, /* FC92 (64658) */ + 4119, /* FC93 (64659) */ + 4120, /* FC94 (64660) */ + 4121, /* FC95 (64661) */ + 4122, /* FC96 (64662) */ + 4123, /* FC97 (64663) */ + 4124, /* FC98 (64664) */ + 4125, /* FC99 (64665) */ + 4126, /* FC9A (64666) */ + 4127, /* FC9B (64667) */ + 4128, /* FC9C (64668) */ + 4129, /* FC9D (64669) */ + 4130, /* FC9E (64670) */ + 4131, /* FC9F (64671) */ + 4132, /* FCA0 (64672) */ + 4133, /* FCA1 (64673) */ + 4134, /* FCA2 (64674) */ + 4135, /* FCA3 (64675) */ + 4136, /* FCA4 (64676) */ + 4137, /* FCA5 (64677) */ + 4138, /* FCA6 (64678) */ + 4139, /* FCA7 (64679) */ + 4140, /* FCA8 (64680) */ + 4141, /* FCA9 (64681) */ + 4142, /* FCAA (64682) */ + 4143, /* FCAB (64683) */ + 4144, /* FCAC (64684) */ + 4145, /* FCAD (64685) */ + 4146, /* FCAE (64686) */ + 4147, /* FCAF (64687) */ + 4148, /* FCB0 (64688) */ + 4149, /* FCB1 (64689) */ + 4150, /* FCB2 (64690) */ + 4151, /* FCB3 (64691) */ + 4152, /* FCB4 (64692) */ + 4153, /* FCB5 (64693) */ + 4154, /* FCB6 (64694) */ + 4155, /* FCB7 (64695) */ + 4156, /* FCB8 (64696) */ + 4157, /* FCB9 (64697) */ + 4158, /* FCBA (64698) */ + 4159, /* FCBB (64699) */ + 4160, /* FCBC (64700) */ + 4161, /* FCBD (64701) */ + 4162, /* FCBE (64702) */ + 4163, /* FCBF (64703) */ + 4164, /* FCC0 (64704) */ + 4165, /* FCC1 (64705) */ + 4166, /* FCC2 (64706) */ + 4167, /* FCC3 (64707) */ + 4168, /* FCC4 (64708) */ + 4169, /* FCC5 (64709) */ + 4170, /* FCC6 (64710) */ + 4171, /* FCC7 (64711) */ + 4172, /* FCC8 (64712) */ + 4173, /* FCC9 (64713) */ + 4174, /* FCCA (64714) */ + 4175, /* FCCB (64715) */ + 4176, /* FCCC (64716) */ + 4177, /* FCCD (64717) */ + 4178, /* FCCE (64718) */ + 4179, /* FCCF (64719) */ + 4180, /* FCD0 (64720) */ + 4181, /* FCD1 (64721) */ + 4182, /* FCD2 (64722) */ + 4183, /* FCD3 (64723) */ + 4184, /* FCD4 (64724) */ + 4185, /* FCD5 (64725) */ + 4186, /* FCD6 (64726) */ + 4187, /* FCD7 (64727) */ + 4188, /* FCD8 (64728) */ + 4189, /* FCD9 (64729) */ + 4190, /* FCDA (64730) */ + 4191, /* FCDB (64731) */ + 4192, /* FCDC (64732) */ + 4193, /* FCDD (64733) */ + 4194, /* FCDE (64734) */ + 4195, /* FCDF (64735) */ + 4196, /* FCE0 (64736) */ + 4197, /* FCE1 (64737) */ + 4198, /* FCE2 (64738) */ + 4199, /* FCE3 (64739) */ + 4200, /* FCE4 (64740) */ + 4201, /* FCE5 (64741) */ + 4202, /* FCE6 (64742) */ + 4203, /* FCE7 (64743) */ + 4204, /* FCE8 (64744) */ + 4205, /* FCE9 (64745) */ + 4206, /* FCEA (64746) */ + 4207, /* FCEB (64747) */ + 4208, /* FCEC (64748) */ + 4209, /* FCED (64749) */ + 4210, /* FCEE (64750) */ + 4211, /* FCEF (64751) */ + 4212, /* FCF0 (64752) */ + 4213, /* FCF1 (64753) */ + 4214, /* FCF2 (64754) */ + 4215, /* FCF3 (64755) */ + 4216, /* FCF4 (64756) */ + 4217, /* FCF5 (64757) */ + 4218, /* FCF6 (64758) */ + 4219, /* FCF7 (64759) */ + 4220, /* FCF8 (64760) */ + 4221, /* FCF9 (64761) */ + 4222, /* FCFA (64762) */ + 4223, /* FCFB (64763) */ + 4224, /* FCFC (64764) */ + 4225, /* FCFD (64765) */ + 4226, /* FCFE (64766) */ + 4227, /* FCFF (64767) */ + 4228, /* FD00 (64768) */ + 4229, /* FD01 (64769) */ + 4230, /* FD02 (64770) */ + 4231, /* FD03 (64771) */ + 4232, /* FD04 (64772) */ + 4233, /* FD05 (64773) */ + 4234, /* FD06 (64774) */ + 4235, /* FD07 (64775) */ + 4236, /* FD08 (64776) */ + 4237, /* FD09 (64777) */ + 4238, /* FD0A (64778) */ + 4239, /* FD0B (64779) */ + 4240, /* FD0C (64780) */ + 4241, /* FD0D (64781) */ + 4242, /* FD0E (64782) */ + 4243, /* FD0F (64783) */ + 4244, /* FD10 (64784) */ + 4245, /* FD11 (64785) */ + 4246, /* FD12 (64786) */ + 4247, /* FD13 (64787) */ + 4248, /* FD14 (64788) */ + 4249, /* FD15 (64789) */ + 4250, /* FD16 (64790) */ + 4251, /* FD17 (64791) */ + 4252, /* FD18 (64792) */ + 4253, /* FD19 (64793) */ + 4254, /* FD1A (64794) */ + 4255, /* FD1B (64795) */ + 4256, /* FD1C (64796) */ + 4257, /* FD1D (64797) */ + 4258, /* FD1E (64798) */ + 4259, /* FD1F (64799) */ + 4260, /* FD20 (64800) */ + 4261, /* FD21 (64801) */ + 4262, /* FD22 (64802) */ + 4263, /* FD23 (64803) */ + 4264, /* FD24 (64804) */ + 4265, /* FD25 (64805) */ + 4266, /* FD26 (64806) */ + 4267, /* FD27 (64807) */ + 4268, /* FD28 (64808) */ + 4269, /* FD29 (64809) */ + 4270, /* FD2A (64810) */ + 4271, /* FD2B (64811) */ + 4272, /* FD2C (64812) */ + 4273, /* FD2D (64813) */ + 4274, /* FD2E (64814) */ + 4275, /* FD2F (64815) */ + 4276, /* FD30 (64816) */ + 4277, /* FD31 (64817) */ + 4278, /* FD32 (64818) */ + 4279, /* FD33 (64819) */ + 4280, /* FD34 (64820) */ + 4281, /* FD35 (64821) */ + 4282, /* FD36 (64822) */ + 4283, /* FD37 (64823) */ + 4284, /* FD38 (64824) */ + 4285, /* FD39 (64825) */ + 4286, /* FD3A (64826) */ + 4287, /* FD3B (64827) */ + 4288, /* FD3C (64828) */ + 4289, /* FD3D (64829) */ 1, /* FD3E (64830) */ 1, /* FD3F (64831) */ 1, /* FD40 (64832) */ @@ -58476,133 +58476,133 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* FD4D (64845) */ 1, /* FD4E (64846) */ 1, /* FD4F (64847) */ - 4286, /* FD50 (64848) */ - 4287, /* FD51 (64849) */ - 4288, /* FD52 (64850) */ - 4289, /* FD53 (64851) */ - 4290, /* FD54 (64852) */ - 4291, /* FD55 (64853) */ - 4292, /* FD56 (64854) */ - 4293, /* FD57 (64855) */ - 4294, /* FD58 (64856) */ - 4295, /* FD59 (64857) */ - 4296, /* FD5A (64858) */ - 4297, /* FD5B (64859) */ - 4298, /* FD5C (64860) */ - 4299, /* FD5D (64861) */ - 4300, /* FD5E (64862) */ - 4301, /* FD5F (64863) */ - 4302, /* FD60 (64864) */ - 4303, /* FD61 (64865) */ - 4304, /* FD62 (64866) */ - 4305, /* FD63 (64867) */ - 4306, /* FD64 (64868) */ - 4307, /* FD65 (64869) */ - 4308, /* FD66 (64870) */ - 4309, /* FD67 (64871) */ - 4310, /* FD68 (64872) */ - 4311, /* FD69 (64873) */ - 4312, /* FD6A (64874) */ - 4313, /* FD6B (64875) */ - 4314, /* FD6C (64876) */ - 4315, /* FD6D (64877) */ - 4316, /* FD6E (64878) */ - 4317, /* FD6F (64879) */ - 4318, /* FD70 (64880) */ - 4319, /* FD71 (64881) */ - 4320, /* FD72 (64882) */ - 4321, /* FD73 (64883) */ - 4322, /* FD74 (64884) */ - 4323, /* FD75 (64885) */ - 4324, /* FD76 (64886) */ - 4325, /* FD77 (64887) */ - 4326, /* FD78 (64888) */ - 4327, /* FD79 (64889) */ - 4328, /* FD7A (64890) */ - 4329, /* FD7B (64891) */ - 4330, /* FD7C (64892) */ - 4331, /* FD7D (64893) */ - 4332, /* FD7E (64894) */ - 4333, /* FD7F (64895) */ - 4334, /* FD80 (64896) */ - 4335, /* FD81 (64897) */ - 4336, /* FD82 (64898) */ - 4337, /* FD83 (64899) */ - 4338, /* FD84 (64900) */ - 4339, /* FD85 (64901) */ - 4340, /* FD86 (64902) */ - 4341, /* FD87 (64903) */ - 4342, /* FD88 (64904) */ - 4343, /* FD89 (64905) */ - 4344, /* FD8A (64906) */ - 4345, /* FD8B (64907) */ - 4346, /* FD8C (64908) */ - 4347, /* FD8D (64909) */ - 4348, /* FD8E (64910) */ - 4349, /* FD8F (64911) */ - 56, /* FD90 (64912) */ - 56, /* FD91 (64913) */ - 4350, /* FD92 (64914) */ - 4351, /* FD93 (64915) */ - 4352, /* FD94 (64916) */ - 4353, /* FD95 (64917) */ - 4354, /* FD96 (64918) */ - 4355, /* FD97 (64919) */ - 4356, /* FD98 (64920) */ - 4357, /* FD99 (64921) */ - 4358, /* FD9A (64922) */ - 4359, /* FD9B (64923) */ - 4360, /* FD9C (64924) */ - 4361, /* FD9D (64925) */ - 4362, /* FD9E (64926) */ - 4363, /* FD9F (64927) */ - 4364, /* FDA0 (64928) */ - 4365, /* FDA1 (64929) */ - 4366, /* FDA2 (64930) */ - 4367, /* FDA3 (64931) */ - 4368, /* FDA4 (64932) */ - 4369, /* FDA5 (64933) */ - 4370, /* FDA6 (64934) */ - 4371, /* FDA7 (64935) */ - 4372, /* FDA8 (64936) */ - 4373, /* FDA9 (64937) */ - 4374, /* FDAA (64938) */ - 4375, /* FDAB (64939) */ - 4376, /* FDAC (64940) */ - 4377, /* FDAD (64941) */ - 4378, /* FDAE (64942) */ - 4379, /* FDAF (64943) */ - 4380, /* FDB0 (64944) */ - 4381, /* FDB1 (64945) */ - 4382, /* FDB2 (64946) */ - 4383, /* FDB3 (64947) */ - 4384, /* FDB4 (64948) */ - 4385, /* FDB5 (64949) */ - 4386, /* FDB6 (64950) */ - 4387, /* FDB7 (64951) */ - 4388, /* FDB8 (64952) */ - 4389, /* FDB9 (64953) */ - 4390, /* FDBA (64954) */ - 4391, /* FDBB (64955) */ - 4392, /* FDBC (64956) */ - 4393, /* FDBD (64957) */ - 4394, /* FDBE (64958) */ - 4395, /* FDBF (64959) */ - 4396, /* FDC0 (64960) */ - 4397, /* FDC1 (64961) */ - 4398, /* FDC2 (64962) */ - 4399, /* FDC3 (64963) */ - 4400, /* FDC4 (64964) */ - 4401, /* FDC5 (64965) */ - 4402, /* FDC6 (64966) */ - 4403, /* FDC7 (64967) */ - 56, /* FDC8 (64968) */ - 56, /* FDC9 (64969) */ - 56, /* FDCA (64970) */ - 56, /* FDCB (64971) */ - 56, /* FDCC (64972) */ - 56, /* FDCD (64973) */ - 56, /* FDCE (64974) */ + 4290, /* FD50 (64848) */ + 4291, /* FD51 (64849) */ + 4292, /* FD52 (64850) */ + 4293, /* FD53 (64851) */ + 4294, /* FD54 (64852) */ + 4295, /* FD55 (64853) */ + 4296, /* FD56 (64854) */ + 4297, /* FD57 (64855) */ + 4298, /* FD58 (64856) */ + 4299, /* FD59 (64857) */ + 4300, /* FD5A (64858) */ + 4301, /* FD5B (64859) */ + 4302, /* FD5C (64860) */ + 4303, /* FD5D (64861) */ + 4304, /* FD5E (64862) */ + 4305, /* FD5F (64863) */ + 4306, /* FD60 (64864) */ + 4307, /* FD61 (64865) */ + 4308, /* FD62 (64866) */ + 4309, /* FD63 (64867) */ + 4310, /* FD64 (64868) */ + 4311, /* FD65 (64869) */ + 4312, /* FD66 (64870) */ + 4313, /* FD67 (64871) */ + 4314, /* FD68 (64872) */ + 4315, /* FD69 (64873) */ + 4316, /* FD6A (64874) */ + 4317, /* FD6B (64875) */ + 4318, /* FD6C (64876) */ + 4319, /* FD6D (64877) */ + 4320, /* FD6E (64878) */ + 4321, /* FD6F (64879) */ + 4322, /* FD70 (64880) */ + 4323, /* FD71 (64881) */ + 4324, /* FD72 (64882) */ + 4325, /* FD73 (64883) */ + 4326, /* FD74 (64884) */ + 4327, /* FD75 (64885) */ + 4328, /* FD76 (64886) */ + 4329, /* FD77 (64887) */ + 4330, /* FD78 (64888) */ + 4331, /* FD79 (64889) */ + 4332, /* FD7A (64890) */ + 4333, /* FD7B (64891) */ + 4334, /* FD7C (64892) */ + 4335, /* FD7D (64893) */ + 4336, /* FD7E (64894) */ + 4337, /* FD7F (64895) */ + 4338, /* FD80 (64896) */ + 4339, /* FD81 (64897) */ + 4340, /* FD82 (64898) */ + 4341, /* FD83 (64899) */ + 4342, /* FD84 (64900) */ + 4343, /* FD85 (64901) */ + 4344, /* FD86 (64902) */ + 4345, /* FD87 (64903) */ + 4346, /* FD88 (64904) */ + 4347, /* FD89 (64905) */ + 4348, /* FD8A (64906) */ + 4349, /* FD8B (64907) */ + 4350, /* FD8C (64908) */ + 4351, /* FD8D (64909) */ + 4352, /* FD8E (64910) */ + 4353, /* FD8F (64911) */ + 1, /* FD90 (64912) */ + 1, /* FD91 (64913) */ + 4354, /* FD92 (64914) */ + 4355, /* FD93 (64915) */ + 4356, /* FD94 (64916) */ + 4357, /* FD95 (64917) */ + 4358, /* FD96 (64918) */ + 4359, /* FD97 (64919) */ + 4360, /* FD98 (64920) */ + 4361, /* FD99 (64921) */ + 4362, /* FD9A (64922) */ + 4363, /* FD9B (64923) */ + 4364, /* FD9C (64924) */ + 4365, /* FD9D (64925) */ + 4366, /* FD9E (64926) */ + 4367, /* FD9F (64927) */ + 4368, /* FDA0 (64928) */ + 4369, /* FDA1 (64929) */ + 4370, /* FDA2 (64930) */ + 4371, /* FDA3 (64931) */ + 4372, /* FDA4 (64932) */ + 4373, /* FDA5 (64933) */ + 4374, /* FDA6 (64934) */ + 4375, /* FDA7 (64935) */ + 4376, /* FDA8 (64936) */ + 4377, /* FDA9 (64937) */ + 4378, /* FDAA (64938) */ + 4379, /* FDAB (64939) */ + 4380, /* FDAC (64940) */ + 4381, /* FDAD (64941) */ + 4382, /* FDAE (64942) */ + 4383, /* FDAF (64943) */ + 4384, /* FDB0 (64944) */ + 4385, /* FDB1 (64945) */ + 4386, /* FDB2 (64946) */ + 4387, /* FDB3 (64947) */ + 4388, /* FDB4 (64948) */ + 4389, /* FDB5 (64949) */ + 4390, /* FDB6 (64950) */ + 4391, /* FDB7 (64951) */ + 4392, /* FDB8 (64952) */ + 4393, /* FDB9 (64953) */ + 4394, /* FDBA (64954) */ + 4395, /* FDBB (64955) */ + 4396, /* FDBC (64956) */ + 4397, /* FDBD (64957) */ + 4398, /* FDBE (64958) */ + 4399, /* FDBF (64959) */ + 4400, /* FDC0 (64960) */ + 4401, /* FDC1 (64961) */ + 4402, /* FDC2 (64962) */ + 4403, /* FDC3 (64963) */ + 4404, /* FDC4 (64964) */ + 4405, /* FDC5 (64965) */ + 4406, /* FDC6 (64966) */ + 4407, /* FDC7 (64967) */ + 1, /* FDC8 (64968) */ + 1, /* FDC9 (64969) */ + 1, /* FDCA (64970) */ + 1, /* FDCB (64971) */ + 1, /* FDCC (64972) */ + 1, /* FDCD (64973) */ + 1, /* FDCE (64974) */ 1, /* FDCF (64975) */ 56, /* FDD0 (64976) */ 56, /* FDD1 (64977) */ @@ -58636,19 +58636,19 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* FDED (65005) */ 56, /* FDEE (65006) */ 56, /* FDEF (65007) */ - 4404, /* FDF0 (65008) */ - 4405, /* FDF1 (65009) */ - 4406, /* FDF2 (65010) */ - 4407, /* FDF3 (65011) */ - 4408, /* FDF4 (65012) */ - 4409, /* FDF5 (65013) */ - 4410, /* FDF6 (65014) */ - 4411, /* FDF7 (65015) */ - 4412, /* FDF8 (65016) */ - 4413, /* FDF9 (65017) */ - 4414, /* FDFA (65018) */ - 4415, /* FDFB (65019) */ - 4416, /* FDFC (65020) */ + 4408, /* FDF0 (65008) */ + 4409, /* FDF1 (65009) */ + 4410, /* FDF2 (65010) */ + 4411, /* FDF3 (65011) */ + 4412, /* FDF4 (65012) */ + 4413, /* FDF5 (65013) */ + 4414, /* FDF6 (65014) */ + 4415, /* FDF7 (65015) */ + 4416, /* FDF8 (65016) */ + 4417, /* FDF9 (65017) */ + 4418, /* FDFA (65018) */ + 4419, /* FDFB (65019) */ + 4420, /* FDFC (65020) */ 1, /* FDFD (65021) */ 1, /* FDFE (65022) */ 1, /* FDFF (65023) */ @@ -58668,16 +58668,16 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 60, /* FE0D (65037) */ 60, /* FE0E (65038) */ 60, /* FE0F (65039) */ - 4417, /* FE10 (65040) */ - 4418, /* FE11 (65041) */ - 4419, /* FE12 (65042) */ - 4420, /* FE13 (65043) */ - 4421, /* FE14 (65044) */ - 4422, /* FE15 (65045) */ - 4423, /* FE16 (65046) */ - 4424, /* FE17 (65047) */ - 4425, /* FE18 (65048) */ - 4426, /* FE19 (65049) */ + 4421, /* FE10 (65040) */ + 4422, /* FE11 (65041) */ + 4423, /* FE12 (65042) */ + 4424, /* FE13 (65043) */ + 4425, /* FE14 (65044) */ + 4426, /* FE15 (65045) */ + 4427, /* FE16 (65046) */ + 4428, /* FE17 (65047) */ + 4429, /* FE18 (65048) */ + 4430, /* FE19 (65049) */ 56, /* FE1A (65050) */ 56, /* FE1B (65051) */ 56, /* FE1C (65052) */ @@ -58700,453 +58700,453 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 433, /* FE2D (65069) */ 431, /* FE2E (65070) */ 431, /* FE2F (65071) */ - 4427, /* FE30 (65072) */ - 4428, /* FE31 (65073) */ - 4429, /* FE32 (65074) */ - 4430, /* FE33 (65075) */ - 4430, /* FE34 (65076) */ - 4431, /* FE35 (65077) */ - 4432, /* FE36 (65078) */ - 4433, /* FE37 (65079) */ - 4434, /* FE38 (65080) */ - 4435, /* FE39 (65081) */ - 4436, /* FE3A (65082) */ - 4437, /* FE3B (65083) */ - 4438, /* FE3C (65084) */ - 4439, /* FE3D (65085) */ - 4440, /* FE3E (65086) */ - 4441, /* FE3F (65087) */ - 4442, /* FE40 (65088) */ - 4443, /* FE41 (65089) */ - 4444, /* FE42 (65090) */ - 4445, /* FE43 (65091) */ - 4446, /* FE44 (65092) */ + 4431, /* FE30 (65072) */ + 4432, /* FE31 (65073) */ + 4433, /* FE32 (65074) */ + 4434, /* FE33 (65075) */ + 4434, /* FE34 (65076) */ + 4435, /* FE35 (65077) */ + 4436, /* FE36 (65078) */ + 4437, /* FE37 (65079) */ + 4438, /* FE38 (65080) */ + 4439, /* FE39 (65081) */ + 4440, /* FE3A (65082) */ + 4441, /* FE3B (65083) */ + 4442, /* FE3C (65084) */ + 4443, /* FE3D (65085) */ + 4444, /* FE3E (65086) */ + 4445, /* FE3F (65087) */ + 4446, /* FE40 (65088) */ + 4447, /* FE41 (65089) */ + 4448, /* FE42 (65090) */ + 4449, /* FE43 (65091) */ + 4450, /* FE44 (65092) */ 1, /* FE45 (65093) */ 1, /* FE46 (65094) */ - 4447, /* FE47 (65095) */ - 4448, /* FE48 (65096) */ - 4449, /* FE49 (65097) */ - 4450, /* FE4A (65098) */ - 4451, /* FE4B (65099) */ - 4452, /* FE4C (65100) */ - 4453, /* FE4D (65101) */ - 4453, /* FE4E (65102) */ - 4453, /* FE4F (65103) */ - 4454, /* FE50 (65104) */ - 4455, /* FE51 (65105) */ - 4456, /* FE52 (65106) */ + 4451, /* FE47 (65095) */ + 4452, /* FE48 (65096) */ + 4453, /* FE49 (65097) */ + 4454, /* FE4A (65098) */ + 4455, /* FE4B (65099) */ + 4456, /* FE4C (65100) */ + 4457, /* FE4D (65101) */ + 4457, /* FE4E (65102) */ + 4457, /* FE4F (65103) */ + 4458, /* FE50 (65104) */ + 4459, /* FE51 (65105) */ + 4460, /* FE52 (65106) */ 56, /* FE53 (65107) */ - 4457, /* FE54 (65108) */ - 4458, /* FE55 (65109) */ - 4459, /* FE56 (65110) */ - 4460, /* FE57 (65111) */ - 4461, /* FE58 (65112) */ - 4462, /* FE59 (65113) */ - 4463, /* FE5A (65114) */ - 4464, /* FE5B (65115) */ - 4465, /* FE5C (65116) */ - 4466, /* FE5D (65117) */ - 4467, /* FE5E (65118) */ - 4468, /* FE5F (65119) */ - 4469, /* FE60 (65120) */ - 4470, /* FE61 (65121) */ - 4471, /* FE62 (65122) */ - 4472, /* FE63 (65123) */ - 4473, /* FE64 (65124) */ - 4474, /* FE65 (65125) */ - 4475, /* FE66 (65126) */ + 4461, /* FE54 (65108) */ + 4462, /* FE55 (65109) */ + 4463, /* FE56 (65110) */ + 4464, /* FE57 (65111) */ + 4465, /* FE58 (65112) */ + 4466, /* FE59 (65113) */ + 4467, /* FE5A (65114) */ + 4468, /* FE5B (65115) */ + 4469, /* FE5C (65116) */ + 4470, /* FE5D (65117) */ + 4471, /* FE5E (65118) */ + 4472, /* FE5F (65119) */ + 4473, /* FE60 (65120) */ + 4474, /* FE61 (65121) */ + 4475, /* FE62 (65122) */ + 4476, /* FE63 (65123) */ + 4477, /* FE64 (65124) */ + 4478, /* FE65 (65125) */ + 4479, /* FE66 (65126) */ 56, /* FE67 (65127) */ - 4476, /* FE68 (65128) */ - 4477, /* FE69 (65129) */ - 4478, /* FE6A (65130) */ - 4479, /* FE6B (65131) */ + 4480, /* FE68 (65128) */ + 4481, /* FE69 (65129) */ + 4482, /* FE6A (65130) */ + 4483, /* FE6B (65131) */ 56, /* FE6C (65132) */ 56, /* FE6D (65133) */ 56, /* FE6E (65134) */ 56, /* FE6F (65135) */ - 4480, /* FE70 (65136) */ - 4481, /* FE71 (65137) */ - 4482, /* FE72 (65138) */ + 4484, /* FE70 (65136) */ + 4485, /* FE71 (65137) */ + 4486, /* FE72 (65138) */ 1, /* FE73 (65139) */ - 4483, /* FE74 (65140) */ + 4487, /* FE74 (65140) */ 56, /* FE75 (65141) */ - 4484, /* FE76 (65142) */ - 4485, /* FE77 (65143) */ - 4486, /* FE78 (65144) */ - 4487, /* FE79 (65145) */ - 4488, /* FE7A (65146) */ - 4489, /* FE7B (65147) */ - 4490, /* FE7C (65148) */ - 4491, /* FE7D (65149) */ - 4492, /* FE7E (65150) */ - 4493, /* FE7F (65151) */ - 4494, /* FE80 (65152) */ - 4495, /* FE81 (65153) */ - 4496, /* FE82 (65154) */ - 4497, /* FE83 (65155) */ - 4498, /* FE84 (65156) */ - 4499, /* FE85 (65157) */ - 4500, /* FE86 (65158) */ - 4501, /* FE87 (65159) */ - 4502, /* FE88 (65160) */ - 4503, /* FE89 (65161) */ - 4504, /* FE8A (65162) */ - 4505, /* FE8B (65163) */ - 4506, /* FE8C (65164) */ - 4507, /* FE8D (65165) */ - 4508, /* FE8E (65166) */ - 4509, /* FE8F (65167) */ - 4510, /* FE90 (65168) */ - 4511, /* FE91 (65169) */ - 4512, /* FE92 (65170) */ - 4513, /* FE93 (65171) */ - 4514, /* FE94 (65172) */ - 4515, /* FE95 (65173) */ - 4516, /* FE96 (65174) */ - 4517, /* FE97 (65175) */ - 4518, /* FE98 (65176) */ - 4519, /* FE99 (65177) */ - 4520, /* FE9A (65178) */ - 4521, /* FE9B (65179) */ - 4522, /* FE9C (65180) */ - 4523, /* FE9D (65181) */ - 4524, /* FE9E (65182) */ - 4525, /* FE9F (65183) */ - 4526, /* FEA0 (65184) */ - 4527, /* FEA1 (65185) */ - 4528, /* FEA2 (65186) */ - 4529, /* FEA3 (65187) */ - 4530, /* FEA4 (65188) */ - 4531, /* FEA5 (65189) */ - 4532, /* FEA6 (65190) */ - 4533, /* FEA7 (65191) */ - 4534, /* FEA8 (65192) */ - 4535, /* FEA9 (65193) */ - 4536, /* FEAA (65194) */ - 4537, /* FEAB (65195) */ - 4538, /* FEAC (65196) */ - 4539, /* FEAD (65197) */ - 4540, /* FEAE (65198) */ - 4541, /* FEAF (65199) */ - 4542, /* FEB0 (65200) */ - 4543, /* FEB1 (65201) */ - 4544, /* FEB2 (65202) */ - 4545, /* FEB3 (65203) */ - 4546, /* FEB4 (65204) */ - 4547, /* FEB5 (65205) */ - 4548, /* FEB6 (65206) */ - 4549, /* FEB7 (65207) */ - 4550, /* FEB8 (65208) */ - 4551, /* FEB9 (65209) */ - 4552, /* FEBA (65210) */ - 4553, /* FEBB (65211) */ - 4554, /* FEBC (65212) */ - 4555, /* FEBD (65213) */ - 4556, /* FEBE (65214) */ - 4557, /* FEBF (65215) */ - 4558, /* FEC0 (65216) */ - 4559, /* FEC1 (65217) */ - 4560, /* FEC2 (65218) */ - 4561, /* FEC3 (65219) */ - 4562, /* FEC4 (65220) */ - 4563, /* FEC5 (65221) */ - 4564, /* FEC6 (65222) */ - 4565, /* FEC7 (65223) */ - 4566, /* FEC8 (65224) */ - 4567, /* FEC9 (65225) */ - 4568, /* FECA (65226) */ - 4569, /* FECB (65227) */ - 4570, /* FECC (65228) */ - 4571, /* FECD (65229) */ - 4572, /* FECE (65230) */ - 4573, /* FECF (65231) */ - 4574, /* FED0 (65232) */ - 4575, /* FED1 (65233) */ - 4576, /* FED2 (65234) */ - 4577, /* FED3 (65235) */ - 4578, /* FED4 (65236) */ - 4579, /* FED5 (65237) */ - 4580, /* FED6 (65238) */ - 4581, /* FED7 (65239) */ - 4582, /* FED8 (65240) */ - 4583, /* FED9 (65241) */ - 4584, /* FEDA (65242) */ - 4585, /* FEDB (65243) */ - 4586, /* FEDC (65244) */ - 4587, /* FEDD (65245) */ - 4588, /* FEDE (65246) */ - 4589, /* FEDF (65247) */ - 4590, /* FEE0 (65248) */ - 4591, /* FEE1 (65249) */ - 4592, /* FEE2 (65250) */ - 4593, /* FEE3 (65251) */ - 4594, /* FEE4 (65252) */ - 4595, /* FEE5 (65253) */ - 4596, /* FEE6 (65254) */ - 4597, /* FEE7 (65255) */ - 4598, /* FEE8 (65256) */ - 4599, /* FEE9 (65257) */ - 4600, /* FEEA (65258) */ - 4601, /* FEEB (65259) */ - 4602, /* FEEC (65260) */ - 4603, /* FEED (65261) */ - 4604, /* FEEE (65262) */ - 4605, /* FEEF (65263) */ - 4606, /* FEF0 (65264) */ - 4607, /* FEF1 (65265) */ - 4608, /* FEF2 (65266) */ - 4609, /* FEF3 (65267) */ - 4610, /* FEF4 (65268) */ - 4611, /* FEF5 (65269) */ - 4612, /* FEF6 (65270) */ - 4613, /* FEF7 (65271) */ - 4614, /* FEF8 (65272) */ - 4615, /* FEF9 (65273) */ - 4616, /* FEFA (65274) */ - 4617, /* FEFB (65275) */ - 4618, /* FEFC (65276) */ + 4488, /* FE76 (65142) */ + 4489, /* FE77 (65143) */ + 4490, /* FE78 (65144) */ + 4491, /* FE79 (65145) */ + 4492, /* FE7A (65146) */ + 4493, /* FE7B (65147) */ + 4494, /* FE7C (65148) */ + 4495, /* FE7D (65149) */ + 4496, /* FE7E (65150) */ + 4497, /* FE7F (65151) */ + 4498, /* FE80 (65152) */ + 4499, /* FE81 (65153) */ + 4500, /* FE82 (65154) */ + 4501, /* FE83 (65155) */ + 4502, /* FE84 (65156) */ + 4503, /* FE85 (65157) */ + 4504, /* FE86 (65158) */ + 4505, /* FE87 (65159) */ + 4506, /* FE88 (65160) */ + 4507, /* FE89 (65161) */ + 4508, /* FE8A (65162) */ + 4509, /* FE8B (65163) */ + 4510, /* FE8C (65164) */ + 4511, /* FE8D (65165) */ + 4512, /* FE8E (65166) */ + 4513, /* FE8F (65167) */ + 4514, /* FE90 (65168) */ + 4515, /* FE91 (65169) */ + 4516, /* FE92 (65170) */ + 4517, /* FE93 (65171) */ + 4518, /* FE94 (65172) */ + 4519, /* FE95 (65173) */ + 4520, /* FE96 (65174) */ + 4521, /* FE97 (65175) */ + 4522, /* FE98 (65176) */ + 4523, /* FE99 (65177) */ + 4524, /* FE9A (65178) */ + 4525, /* FE9B (65179) */ + 4526, /* FE9C (65180) */ + 4527, /* FE9D (65181) */ + 4528, /* FE9E (65182) */ + 4529, /* FE9F (65183) */ + 4530, /* FEA0 (65184) */ + 4531, /* FEA1 (65185) */ + 4532, /* FEA2 (65186) */ + 4533, /* FEA3 (65187) */ + 4534, /* FEA4 (65188) */ + 4535, /* FEA5 (65189) */ + 4536, /* FEA6 (65190) */ + 4537, /* FEA7 (65191) */ + 4538, /* FEA8 (65192) */ + 4539, /* FEA9 (65193) */ + 4540, /* FEAA (65194) */ + 4541, /* FEAB (65195) */ + 4542, /* FEAC (65196) */ + 4543, /* FEAD (65197) */ + 4544, /* FEAE (65198) */ + 4545, /* FEAF (65199) */ + 4546, /* FEB0 (65200) */ + 4547, /* FEB1 (65201) */ + 4548, /* FEB2 (65202) */ + 4549, /* FEB3 (65203) */ + 4550, /* FEB4 (65204) */ + 4551, /* FEB5 (65205) */ + 4552, /* FEB6 (65206) */ + 4553, /* FEB7 (65207) */ + 4554, /* FEB8 (65208) */ + 4555, /* FEB9 (65209) */ + 4556, /* FEBA (65210) */ + 4557, /* FEBB (65211) */ + 4558, /* FEBC (65212) */ + 4559, /* FEBD (65213) */ + 4560, /* FEBE (65214) */ + 4561, /* FEBF (65215) */ + 4562, /* FEC0 (65216) */ + 4563, /* FEC1 (65217) */ + 4564, /* FEC2 (65218) */ + 4565, /* FEC3 (65219) */ + 4566, /* FEC4 (65220) */ + 4567, /* FEC5 (65221) */ + 4568, /* FEC6 (65222) */ + 4569, /* FEC7 (65223) */ + 4570, /* FEC8 (65224) */ + 4571, /* FEC9 (65225) */ + 4572, /* FECA (65226) */ + 4573, /* FECB (65227) */ + 4574, /* FECC (65228) */ + 4575, /* FECD (65229) */ + 4576, /* FECE (65230) */ + 4577, /* FECF (65231) */ + 4578, /* FED0 (65232) */ + 4579, /* FED1 (65233) */ + 4580, /* FED2 (65234) */ + 4581, /* FED3 (65235) */ + 4582, /* FED4 (65236) */ + 4583, /* FED5 (65237) */ + 4584, /* FED6 (65238) */ + 4585, /* FED7 (65239) */ + 4586, /* FED8 (65240) */ + 4587, /* FED9 (65241) */ + 4588, /* FEDA (65242) */ + 4589, /* FEDB (65243) */ + 4590, /* FEDC (65244) */ + 4591, /* FEDD (65245) */ + 4592, /* FEDE (65246) */ + 4593, /* FEDF (65247) */ + 4594, /* FEE0 (65248) */ + 4595, /* FEE1 (65249) */ + 4596, /* FEE2 (65250) */ + 4597, /* FEE3 (65251) */ + 4598, /* FEE4 (65252) */ + 4599, /* FEE5 (65253) */ + 4600, /* FEE6 (65254) */ + 4601, /* FEE7 (65255) */ + 4602, /* FEE8 (65256) */ + 4603, /* FEE9 (65257) */ + 4604, /* FEEA (65258) */ + 4605, /* FEEB (65259) */ + 4606, /* FEEC (65260) */ + 4607, /* FEED (65261) */ + 4608, /* FEEE (65262) */ + 4609, /* FEEF (65263) */ + 4610, /* FEF0 (65264) */ + 4611, /* FEF1 (65265) */ + 4612, /* FEF2 (65266) */ + 4613, /* FEF3 (65267) */ + 4614, /* FEF4 (65268) */ + 4615, /* FEF5 (65269) */ + 4616, /* FEF6 (65270) */ + 4617, /* FEF7 (65271) */ + 4618, /* FEF8 (65272) */ + 4619, /* FEF9 (65273) */ + 4620, /* FEFA (65274) */ + 4621, /* FEFB (65275) */ + 4622, /* FEFC (65276) */ 56, /* FEFD (65277) */ 56, /* FEFE (65278) */ 60, /* FEFF (65279) */ 56, /* FF00 (65280) */ - 4619, /* FF01 (65281) */ - 4620, /* FF02 (65282) */ - 4621, /* FF03 (65283) */ - 4622, /* FF04 (65284) */ - 4623, /* FF05 (65285) */ - 4624, /* FF06 (65286) */ - 4625, /* FF07 (65287) */ - 4626, /* FF08 (65288) */ - 4627, /* FF09 (65289) */ - 4628, /* FF0A (65290) */ - 4629, /* FF0B (65291) */ - 4630, /* FF0C (65292) */ - 4631, /* FF0D (65293) */ - 4632, /* FF0E (65294) */ - 4633, /* FF0F (65295) */ - 4634, /* FF10 (65296) */ - 4635, /* FF11 (65297) */ - 4636, /* FF12 (65298) */ - 4637, /* FF13 (65299) */ - 4638, /* FF14 (65300) */ - 4639, /* FF15 (65301) */ - 4640, /* FF16 (65302) */ - 4641, /* FF17 (65303) */ - 4642, /* FF18 (65304) */ - 4643, /* FF19 (65305) */ - 4644, /* FF1A (65306) */ - 4645, /* FF1B (65307) */ - 4646, /* FF1C (65308) */ - 4647, /* FF1D (65309) */ - 4648, /* FF1E (65310) */ - 4649, /* FF1F (65311) */ - 4650, /* FF20 (65312) */ - 4651, /* FF21 (65313) */ - 4652, /* FF22 (65314) */ - 4653, /* FF23 (65315) */ - 4654, /* FF24 (65316) */ - 4655, /* FF25 (65317) */ - 4656, /* FF26 (65318) */ - 4657, /* FF27 (65319) */ - 4658, /* FF28 (65320) */ - 4659, /* FF29 (65321) */ - 4660, /* FF2A (65322) */ - 4661, /* FF2B (65323) */ - 4662, /* FF2C (65324) */ - 4663, /* FF2D (65325) */ - 4664, /* FF2E (65326) */ - 4665, /* FF2F (65327) */ - 4666, /* FF30 (65328) */ - 4667, /* FF31 (65329) */ - 4668, /* FF32 (65330) */ - 4669, /* FF33 (65331) */ - 4670, /* FF34 (65332) */ - 4671, /* FF35 (65333) */ - 4672, /* FF36 (65334) */ - 4673, /* FF37 (65335) */ - 4674, /* FF38 (65336) */ - 4675, /* FF39 (65337) */ - 4676, /* FF3A (65338) */ - 4677, /* FF3B (65339) */ - 4678, /* FF3C (65340) */ - 4679, /* FF3D (65341) */ - 4680, /* FF3E (65342) */ - 4681, /* FF3F (65343) */ - 4682, /* FF40 (65344) */ - 4683, /* FF41 (65345) */ - 4684, /* FF42 (65346) */ - 4685, /* FF43 (65347) */ - 4686, /* FF44 (65348) */ - 4687, /* FF45 (65349) */ - 4688, /* FF46 (65350) */ - 4689, /* FF47 (65351) */ - 4690, /* FF48 (65352) */ - 4691, /* FF49 (65353) */ - 4692, /* FF4A (65354) */ - 4693, /* FF4B (65355) */ - 4694, /* FF4C (65356) */ - 4695, /* FF4D (65357) */ - 4696, /* FF4E (65358) */ - 4697, /* FF4F (65359) */ - 4698, /* FF50 (65360) */ - 4699, /* FF51 (65361) */ - 4700, /* FF52 (65362) */ - 4701, /* FF53 (65363) */ - 4702, /* FF54 (65364) */ - 4703, /* FF55 (65365) */ - 4704, /* FF56 (65366) */ - 4705, /* FF57 (65367) */ - 4706, /* FF58 (65368) */ - 4707, /* FF59 (65369) */ - 4708, /* FF5A (65370) */ - 4709, /* FF5B (65371) */ - 4710, /* FF5C (65372) */ - 4711, /* FF5D (65373) */ - 4712, /* FF5E (65374) */ - 4713, /* FF5F (65375) */ - 4714, /* FF60 (65376) */ - 4715, /* FF61 (65377) */ - 4716, /* FF62 (65378) */ - 4717, /* FF63 (65379) */ - 4718, /* FF64 (65380) */ - 4719, /* FF65 (65381) */ - 4720, /* FF66 (65382) */ - 4721, /* FF67 (65383) */ - 4722, /* FF68 (65384) */ - 4723, /* FF69 (65385) */ - 4724, /* FF6A (65386) */ - 4725, /* FF6B (65387) */ - 4726, /* FF6C (65388) */ - 4727, /* FF6D (65389) */ - 4728, /* FF6E (65390) */ - 4729, /* FF6F (65391) */ - 4730, /* FF70 (65392) */ - 4731, /* FF71 (65393) */ - 4732, /* FF72 (65394) */ - 4733, /* FF73 (65395) */ - 4734, /* FF74 (65396) */ - 4735, /* FF75 (65397) */ - 4736, /* FF76 (65398) */ - 4737, /* FF77 (65399) */ - 4738, /* FF78 (65400) */ - 4739, /* FF79 (65401) */ - 4740, /* FF7A (65402) */ - 4741, /* FF7B (65403) */ - 4742, /* FF7C (65404) */ - 4743, /* FF7D (65405) */ - 4744, /* FF7E (65406) */ - 4745, /* FF7F (65407) */ - 4746, /* FF80 (65408) */ - 4747, /* FF81 (65409) */ - 4748, /* FF82 (65410) */ - 4749, /* FF83 (65411) */ - 4750, /* FF84 (65412) */ - 4751, /* FF85 (65413) */ - 4752, /* FF86 (65414) */ - 4753, /* FF87 (65415) */ - 4754, /* FF88 (65416) */ - 4755, /* FF89 (65417) */ - 4756, /* FF8A (65418) */ - 4757, /* FF8B (65419) */ - 4758, /* FF8C (65420) */ - 4759, /* FF8D (65421) */ - 4760, /* FF8E (65422) */ - 4761, /* FF8F (65423) */ - 4762, /* FF90 (65424) */ - 4763, /* FF91 (65425) */ - 4764, /* FF92 (65426) */ - 4765, /* FF93 (65427) */ - 4766, /* FF94 (65428) */ - 4767, /* FF95 (65429) */ - 4768, /* FF96 (65430) */ - 4769, /* FF97 (65431) */ - 4770, /* FF98 (65432) */ - 4771, /* FF99 (65433) */ - 4772, /* FF9A (65434) */ - 4773, /* FF9B (65435) */ - 4774, /* FF9C (65436) */ - 4775, /* FF9D (65437) */ - 4776, /* FF9E (65438) */ - 4777, /* FF9F (65439) */ - 4778, /* FFA0 (65440) */ - 4779, /* FFA1 (65441) */ - 4780, /* FFA2 (65442) */ - 4781, /* FFA3 (65443) */ - 4782, /* FFA4 (65444) */ - 4783, /* FFA5 (65445) */ - 4784, /* FFA6 (65446) */ - 4785, /* FFA7 (65447) */ - 4786, /* FFA8 (65448) */ - 4787, /* FFA9 (65449) */ - 4788, /* FFAA (65450) */ - 4789, /* FFAB (65451) */ - 4790, /* FFAC (65452) */ - 4791, /* FFAD (65453) */ - 4792, /* FFAE (65454) */ - 4793, /* FFAF (65455) */ - 4794, /* FFB0 (65456) */ - 4795, /* FFB1 (65457) */ - 4796, /* FFB2 (65458) */ - 4797, /* FFB3 (65459) */ - 4798, /* FFB4 (65460) */ - 4799, /* FFB5 (65461) */ - 4800, /* FFB6 (65462) */ - 4801, /* FFB7 (65463) */ - 4802, /* FFB8 (65464) */ - 4803, /* FFB9 (65465) */ - 4804, /* FFBA (65466) */ - 4805, /* FFBB (65467) */ - 4806, /* FFBC (65468) */ - 4807, /* FFBD (65469) */ - 4808, /* FFBE (65470) */ + 4623, /* FF01 (65281) */ + 4624, /* FF02 (65282) */ + 4625, /* FF03 (65283) */ + 4626, /* FF04 (65284) */ + 4627, /* FF05 (65285) */ + 4628, /* FF06 (65286) */ + 4629, /* FF07 (65287) */ + 4630, /* FF08 (65288) */ + 4631, /* FF09 (65289) */ + 4632, /* FF0A (65290) */ + 4633, /* FF0B (65291) */ + 4634, /* FF0C (65292) */ + 4635, /* FF0D (65293) */ + 4636, /* FF0E (65294) */ + 4637, /* FF0F (65295) */ + 4638, /* FF10 (65296) */ + 4639, /* FF11 (65297) */ + 4640, /* FF12 (65298) */ + 4641, /* FF13 (65299) */ + 4642, /* FF14 (65300) */ + 4643, /* FF15 (65301) */ + 4644, /* FF16 (65302) */ + 4645, /* FF17 (65303) */ + 4646, /* FF18 (65304) */ + 4647, /* FF19 (65305) */ + 4648, /* FF1A (65306) */ + 4649, /* FF1B (65307) */ + 4650, /* FF1C (65308) */ + 4651, /* FF1D (65309) */ + 4652, /* FF1E (65310) */ + 4653, /* FF1F (65311) */ + 4654, /* FF20 (65312) */ + 4655, /* FF21 (65313) */ + 4656, /* FF22 (65314) */ + 4657, /* FF23 (65315) */ + 4658, /* FF24 (65316) */ + 4659, /* FF25 (65317) */ + 4660, /* FF26 (65318) */ + 4661, /* FF27 (65319) */ + 4662, /* FF28 (65320) */ + 4663, /* FF29 (65321) */ + 4664, /* FF2A (65322) */ + 4665, /* FF2B (65323) */ + 4666, /* FF2C (65324) */ + 4667, /* FF2D (65325) */ + 4668, /* FF2E (65326) */ + 4669, /* FF2F (65327) */ + 4670, /* FF30 (65328) */ + 4671, /* FF31 (65329) */ + 4672, /* FF32 (65330) */ + 4673, /* FF33 (65331) */ + 4674, /* FF34 (65332) */ + 4675, /* FF35 (65333) */ + 4676, /* FF36 (65334) */ + 4677, /* FF37 (65335) */ + 4678, /* FF38 (65336) */ + 4679, /* FF39 (65337) */ + 4680, /* FF3A (65338) */ + 4681, /* FF3B (65339) */ + 4682, /* FF3C (65340) */ + 4683, /* FF3D (65341) */ + 4684, /* FF3E (65342) */ + 4685, /* FF3F (65343) */ + 4686, /* FF40 (65344) */ + 4687, /* FF41 (65345) */ + 4688, /* FF42 (65346) */ + 4689, /* FF43 (65347) */ + 4690, /* FF44 (65348) */ + 4691, /* FF45 (65349) */ + 4692, /* FF46 (65350) */ + 4693, /* FF47 (65351) */ + 4694, /* FF48 (65352) */ + 4695, /* FF49 (65353) */ + 4696, /* FF4A (65354) */ + 4697, /* FF4B (65355) */ + 4698, /* FF4C (65356) */ + 4699, /* FF4D (65357) */ + 4700, /* FF4E (65358) */ + 4701, /* FF4F (65359) */ + 4702, /* FF50 (65360) */ + 4703, /* FF51 (65361) */ + 4704, /* FF52 (65362) */ + 4705, /* FF53 (65363) */ + 4706, /* FF54 (65364) */ + 4707, /* FF55 (65365) */ + 4708, /* FF56 (65366) */ + 4709, /* FF57 (65367) */ + 4710, /* FF58 (65368) */ + 4711, /* FF59 (65369) */ + 4712, /* FF5A (65370) */ + 4713, /* FF5B (65371) */ + 4714, /* FF5C (65372) */ + 4715, /* FF5D (65373) */ + 4716, /* FF5E (65374) */ + 4717, /* FF5F (65375) */ + 4718, /* FF60 (65376) */ + 4719, /* FF61 (65377) */ + 4720, /* FF62 (65378) */ + 4721, /* FF63 (65379) */ + 4722, /* FF64 (65380) */ + 4723, /* FF65 (65381) */ + 4724, /* FF66 (65382) */ + 4725, /* FF67 (65383) */ + 4726, /* FF68 (65384) */ + 4727, /* FF69 (65385) */ + 4728, /* FF6A (65386) */ + 4729, /* FF6B (65387) */ + 4730, /* FF6C (65388) */ + 4731, /* FF6D (65389) */ + 4732, /* FF6E (65390) */ + 4733, /* FF6F (65391) */ + 4734, /* FF70 (65392) */ + 4735, /* FF71 (65393) */ + 4736, /* FF72 (65394) */ + 4737, /* FF73 (65395) */ + 4738, /* FF74 (65396) */ + 4739, /* FF75 (65397) */ + 4740, /* FF76 (65398) */ + 4741, /* FF77 (65399) */ + 4742, /* FF78 (65400) */ + 4743, /* FF79 (65401) */ + 4744, /* FF7A (65402) */ + 4745, /* FF7B (65403) */ + 4746, /* FF7C (65404) */ + 4747, /* FF7D (65405) */ + 4748, /* FF7E (65406) */ + 4749, /* FF7F (65407) */ + 4750, /* FF80 (65408) */ + 4751, /* FF81 (65409) */ + 4752, /* FF82 (65410) */ + 4753, /* FF83 (65411) */ + 4754, /* FF84 (65412) */ + 4755, /* FF85 (65413) */ + 4756, /* FF86 (65414) */ + 4757, /* FF87 (65415) */ + 4758, /* FF88 (65416) */ + 4759, /* FF89 (65417) */ + 4760, /* FF8A (65418) */ + 4761, /* FF8B (65419) */ + 4762, /* FF8C (65420) */ + 4763, /* FF8D (65421) */ + 4764, /* FF8E (65422) */ + 4765, /* FF8F (65423) */ + 4766, /* FF90 (65424) */ + 4767, /* FF91 (65425) */ + 4768, /* FF92 (65426) */ + 4769, /* FF93 (65427) */ + 4770, /* FF94 (65428) */ + 4771, /* FF95 (65429) */ + 4772, /* FF96 (65430) */ + 4773, /* FF97 (65431) */ + 4774, /* FF98 (65432) */ + 4775, /* FF99 (65433) */ + 4776, /* FF9A (65434) */ + 4777, /* FF9B (65435) */ + 4778, /* FF9C (65436) */ + 4779, /* FF9D (65437) */ + 4780, /* FF9E (65438) */ + 4781, /* FF9F (65439) */ + 4782, /* FFA0 (65440) */ + 4783, /* FFA1 (65441) */ + 4784, /* FFA2 (65442) */ + 4785, /* FFA3 (65443) */ + 4786, /* FFA4 (65444) */ + 4787, /* FFA5 (65445) */ + 4788, /* FFA6 (65446) */ + 4789, /* FFA7 (65447) */ + 4790, /* FFA8 (65448) */ + 4791, /* FFA9 (65449) */ + 4792, /* FFAA (65450) */ + 4793, /* FFAB (65451) */ + 4794, /* FFAC (65452) */ + 4795, /* FFAD (65453) */ + 4796, /* FFAE (65454) */ + 4797, /* FFAF (65455) */ + 4798, /* FFB0 (65456) */ + 4799, /* FFB1 (65457) */ + 4800, /* FFB2 (65458) */ + 4801, /* FFB3 (65459) */ + 4802, /* FFB4 (65460) */ + 4803, /* FFB5 (65461) */ + 4804, /* FFB6 (65462) */ + 4805, /* FFB7 (65463) */ + 4806, /* FFB8 (65464) */ + 4807, /* FFB9 (65465) */ + 4808, /* FFBA (65466) */ + 4809, /* FFBB (65467) */ + 4810, /* FFBC (65468) */ + 4811, /* FFBD (65469) */ + 4812, /* FFBE (65470) */ 56, /* FFBF (65471) */ 56, /* FFC0 (65472) */ 56, /* FFC1 (65473) */ - 4809, /* FFC2 (65474) */ - 4810, /* FFC3 (65475) */ - 4811, /* FFC4 (65476) */ - 4812, /* FFC5 (65477) */ - 4813, /* FFC6 (65478) */ - 4814, /* FFC7 (65479) */ + 4813, /* FFC2 (65474) */ + 4814, /* FFC3 (65475) */ + 4815, /* FFC4 (65476) */ + 4816, /* FFC5 (65477) */ + 4817, /* FFC6 (65478) */ + 4818, /* FFC7 (65479) */ 56, /* FFC8 (65480) */ 56, /* FFC9 (65481) */ - 4815, /* FFCA (65482) */ - 4816, /* FFCB (65483) */ - 4817, /* FFCC (65484) */ - 4818, /* FFCD (65485) */ - 4819, /* FFCE (65486) */ - 4820, /* FFCF (65487) */ + 4819, /* FFCA (65482) */ + 4820, /* FFCB (65483) */ + 4821, /* FFCC (65484) */ + 4822, /* FFCD (65485) */ + 4823, /* FFCE (65486) */ + 4824, /* FFCF (65487) */ 56, /* FFD0 (65488) */ 56, /* FFD1 (65489) */ - 4821, /* FFD2 (65490) */ - 4822, /* FFD3 (65491) */ - 4823, /* FFD4 (65492) */ - 4824, /* FFD5 (65493) */ - 4825, /* FFD6 (65494) */ - 4826, /* FFD7 (65495) */ + 4825, /* FFD2 (65490) */ + 4826, /* FFD3 (65491) */ + 4827, /* FFD4 (65492) */ + 4828, /* FFD5 (65493) */ + 4829, /* FFD6 (65494) */ + 4830, /* FFD7 (65495) */ 56, /* FFD8 (65496) */ 56, /* FFD9 (65497) */ - 4827, /* FFDA (65498) */ - 4828, /* FFDB (65499) */ - 4829, /* FFDC (65500) */ + 4831, /* FFDA (65498) */ + 4832, /* FFDB (65499) */ + 4833, /* FFDC (65500) */ 56, /* FFDD (65501) */ 56, /* FFDE (65502) */ 56, /* FFDF (65503) */ - 4830, /* FFE0 (65504) */ - 4831, /* FFE1 (65505) */ - 4832, /* FFE2 (65506) */ - 4833, /* FFE3 (65507) */ - 4834, /* FFE4 (65508) */ - 4835, /* FFE5 (65509) */ - 4836, /* FFE6 (65510) */ + 4834, /* FFE0 (65504) */ + 4835, /* FFE1 (65505) */ + 4836, /* FFE2 (65506) */ + 4837, /* FFE3 (65507) */ + 4838, /* FFE4 (65508) */ + 4839, /* FFE5 (65509) */ + 4840, /* FFE6 (65510) */ 56, /* FFE7 (65511) */ - 4837, /* FFE8 (65512) */ - 4838, /* FFE9 (65513) */ - 4839, /* FFEA (65514) */ - 4840, /* FFEB (65515) */ - 4841, /* FFEC (65516) */ - 4842, /* FFED (65517) */ - 4843, /* FFEE (65518) */ + 4841, /* FFE8 (65512) */ + 4842, /* FFE9 (65513) */ + 4843, /* FFEA (65514) */ + 4844, /* FFEB (65515) */ + 4845, /* FFEC (65516) */ + 4846, /* FFED (65517) */ + 4847, /* FFEE (65518) */ 56, /* FFEF (65519) */ 56, /* FFF0 (65520) */ 56, /* FFF1 (65521) */ @@ -60188,46 +60188,46 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 103FD (66557) */ 56, /* 103FE (66558) */ 56, /* 103FF (66559) */ - 4844, /* 10400 (66560) */ - 4845, /* 10401 (66561) */ - 4846, /* 10402 (66562) */ - 4847, /* 10403 (66563) */ - 4848, /* 10404 (66564) */ - 4849, /* 10405 (66565) */ - 4850, /* 10406 (66566) */ - 4851, /* 10407 (66567) */ - 4852, /* 10408 (66568) */ - 4853, /* 10409 (66569) */ - 4854, /* 1040A (66570) */ - 4855, /* 1040B (66571) */ - 4856, /* 1040C (66572) */ - 4857, /* 1040D (66573) */ - 4858, /* 1040E (66574) */ - 4859, /* 1040F (66575) */ - 4860, /* 10410 (66576) */ - 4861, /* 10411 (66577) */ - 4862, /* 10412 (66578) */ - 4863, /* 10413 (66579) */ - 4864, /* 10414 (66580) */ - 4865, /* 10415 (66581) */ - 4866, /* 10416 (66582) */ - 4867, /* 10417 (66583) */ - 4868, /* 10418 (66584) */ - 4869, /* 10419 (66585) */ - 4870, /* 1041A (66586) */ - 4871, /* 1041B (66587) */ - 4872, /* 1041C (66588) */ - 4873, /* 1041D (66589) */ - 4874, /* 1041E (66590) */ - 4875, /* 1041F (66591) */ - 4876, /* 10420 (66592) */ - 4877, /* 10421 (66593) */ - 4878, /* 10422 (66594) */ - 4879, /* 10423 (66595) */ - 4880, /* 10424 (66596) */ - 4881, /* 10425 (66597) */ - 4882, /* 10426 (66598) */ - 4883, /* 10427 (66599) */ + 4848, /* 10400 (66560) */ + 4849, /* 10401 (66561) */ + 4850, /* 10402 (66562) */ + 4851, /* 10403 (66563) */ + 4852, /* 10404 (66564) */ + 4853, /* 10405 (66565) */ + 4854, /* 10406 (66566) */ + 4855, /* 10407 (66567) */ + 4856, /* 10408 (66568) */ + 4857, /* 10409 (66569) */ + 4858, /* 1040A (66570) */ + 4859, /* 1040B (66571) */ + 4860, /* 1040C (66572) */ + 4861, /* 1040D (66573) */ + 4862, /* 1040E (66574) */ + 4863, /* 1040F (66575) */ + 4864, /* 10410 (66576) */ + 4865, /* 10411 (66577) */ + 4866, /* 10412 (66578) */ + 4867, /* 10413 (66579) */ + 4868, /* 10414 (66580) */ + 4869, /* 10415 (66581) */ + 4870, /* 10416 (66582) */ + 4871, /* 10417 (66583) */ + 4872, /* 10418 (66584) */ + 4873, /* 10419 (66585) */ + 4874, /* 1041A (66586) */ + 4875, /* 1041B (66587) */ + 4876, /* 1041C (66588) */ + 4877, /* 1041D (66589) */ + 4878, /* 1041E (66590) */ + 4879, /* 1041F (66591) */ + 4880, /* 10420 (66592) */ + 4881, /* 10421 (66593) */ + 4882, /* 10422 (66594) */ + 4883, /* 10423 (66595) */ + 4884, /* 10424 (66596) */ + 4885, /* 10425 (66597) */ + 4886, /* 10426 (66598) */ + 4887, /* 10427 (66599) */ 1, /* 10428 (66600) */ 1, /* 10429 (66601) */ 1, /* 1042A (66602) */ @@ -60364,42 +60364,42 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 104AD (66733) */ 56, /* 104AE (66734) */ 56, /* 104AF (66735) */ - 4884, /* 104B0 (66736) */ - 4885, /* 104B1 (66737) */ - 4886, /* 104B2 (66738) */ - 4887, /* 104B3 (66739) */ - 4888, /* 104B4 (66740) */ - 4889, /* 104B5 (66741) */ - 4890, /* 104B6 (66742) */ - 4891, /* 104B7 (66743) */ - 4892, /* 104B8 (66744) */ - 4893, /* 104B9 (66745) */ - 4894, /* 104BA (66746) */ - 4895, /* 104BB (66747) */ - 4896, /* 104BC (66748) */ - 4897, /* 104BD (66749) */ - 4898, /* 104BE (66750) */ - 4899, /* 104BF (66751) */ - 4900, /* 104C0 (66752) */ - 4901, /* 104C1 (66753) */ - 4902, /* 104C2 (66754) */ - 4903, /* 104C3 (66755) */ - 4904, /* 104C4 (66756) */ - 4905, /* 104C5 (66757) */ - 4906, /* 104C6 (66758) */ - 4907, /* 104C7 (66759) */ - 4908, /* 104C8 (66760) */ - 4909, /* 104C9 (66761) */ - 4910, /* 104CA (66762) */ - 4911, /* 104CB (66763) */ - 4912, /* 104CC (66764) */ - 4913, /* 104CD (66765) */ - 4914, /* 104CE (66766) */ - 4915, /* 104CF (66767) */ - 4916, /* 104D0 (66768) */ - 4917, /* 104D1 (66769) */ - 4918, /* 104D2 (66770) */ - 4919, /* 104D3 (66771) */ + 4888, /* 104B0 (66736) */ + 4889, /* 104B1 (66737) */ + 4890, /* 104B2 (66738) */ + 4891, /* 104B3 (66739) */ + 4892, /* 104B4 (66740) */ + 4893, /* 104B5 (66741) */ + 4894, /* 104B6 (66742) */ + 4895, /* 104B7 (66743) */ + 4896, /* 104B8 (66744) */ + 4897, /* 104B9 (66745) */ + 4898, /* 104BA (66746) */ + 4899, /* 104BB (66747) */ + 4900, /* 104BC (66748) */ + 4901, /* 104BD (66749) */ + 4902, /* 104BE (66750) */ + 4903, /* 104BF (66751) */ + 4904, /* 104C0 (66752) */ + 4905, /* 104C1 (66753) */ + 4906, /* 104C2 (66754) */ + 4907, /* 104C3 (66755) */ + 4908, /* 104C4 (66756) */ + 4909, /* 104C5 (66757) */ + 4910, /* 104C6 (66758) */ + 4911, /* 104C7 (66759) */ + 4912, /* 104C8 (66760) */ + 4913, /* 104C9 (66761) */ + 4914, /* 104CA (66762) */ + 4915, /* 104CB (66763) */ + 4916, /* 104CC (66764) */ + 4917, /* 104CD (66765) */ + 4918, /* 104CE (66766) */ + 4919, /* 104CF (66767) */ + 4920, /* 104D0 (66768) */ + 4921, /* 104D1 (66769) */ + 4922, /* 104D2 (66770) */ + 4923, /* 104D3 (66771) */ 56, /* 104D4 (66772) */ 56, /* 104D5 (66773) */ 56, /* 104D6 (66774) */ @@ -60556,44 +60556,44 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 1056D (66925) */ 56, /* 1056E (66926) */ 1, /* 1056F (66927) */ - 4920, /* 10570 (66928) */ - 4921, /* 10571 (66929) */ - 4922, /* 10572 (66930) */ - 4923, /* 10573 (66931) */ - 4924, /* 10574 (66932) */ - 4925, /* 10575 (66933) */ - 4926, /* 10576 (66934) */ - 4927, /* 10577 (66935) */ - 4928, /* 10578 (66936) */ - 4929, /* 10579 (66937) */ - 4930, /* 1057A (66938) */ + 4924, /* 10570 (66928) */ + 4925, /* 10571 (66929) */ + 4926, /* 10572 (66930) */ + 4927, /* 10573 (66931) */ + 4928, /* 10574 (66932) */ + 4929, /* 10575 (66933) */ + 4930, /* 10576 (66934) */ + 4931, /* 10577 (66935) */ + 4932, /* 10578 (66936) */ + 4933, /* 10579 (66937) */ + 4934, /* 1057A (66938) */ 56, /* 1057B (66939) */ - 4931, /* 1057C (66940) */ - 4932, /* 1057D (66941) */ - 4933, /* 1057E (66942) */ - 4934, /* 1057F (66943) */ - 4935, /* 10580 (66944) */ - 4936, /* 10581 (66945) */ - 4937, /* 10582 (66946) */ - 4938, /* 10583 (66947) */ - 4939, /* 10584 (66948) */ - 4940, /* 10585 (66949) */ - 4941, /* 10586 (66950) */ - 4942, /* 10587 (66951) */ - 4943, /* 10588 (66952) */ - 4944, /* 10589 (66953) */ - 4945, /* 1058A (66954) */ + 4935, /* 1057C (66940) */ + 4936, /* 1057D (66941) */ + 4937, /* 1057E (66942) */ + 4938, /* 1057F (66943) */ + 4939, /* 10580 (66944) */ + 4940, /* 10581 (66945) */ + 4941, /* 10582 (66946) */ + 4942, /* 10583 (66947) */ + 4943, /* 10584 (66948) */ + 4944, /* 10585 (66949) */ + 4945, /* 10586 (66950) */ + 4946, /* 10587 (66951) */ + 4947, /* 10588 (66952) */ + 4948, /* 10589 (66953) */ + 4949, /* 1058A (66954) */ 56, /* 1058B (66955) */ - 4946, /* 1058C (66956) */ - 4947, /* 1058D (66957) */ - 4948, /* 1058E (66958) */ - 4949, /* 1058F (66959) */ - 4950, /* 10590 (66960) */ - 4951, /* 10591 (66961) */ - 4952, /* 10592 (66962) */ + 4950, /* 1058C (66956) */ + 4951, /* 1058D (66957) */ + 4952, /* 1058E (66958) */ + 4953, /* 1058F (66959) */ + 4954, /* 10590 (66960) */ + 4955, /* 10591 (66961) */ + 4956, /* 10592 (66962) */ 56, /* 10593 (66963) */ - 4953, /* 10594 (66964) */ - 4954, /* 10595 (66965) */ + 4957, /* 10594 (66964) */ + 4958, /* 10595 (66965) */ 56, /* 10596 (66966) */ 1, /* 10597 (66967) */ 1, /* 10598 (66968) */ @@ -60645,7 +60645,7 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 105C6 (67014) */ 1, /* 105C7 (67015) */ 1, /* 105C8 (67016) */ - 4955, /* 105C9 (67017) */ + 4959, /* 105C9 (67017) */ 1, /* 105CA (67018) */ 1, /* 105CB (67019) */ 1, /* 105CC (67020) */ @@ -60654,7 +60654,7 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 105CF (67023) */ 1, /* 105D0 (67024) */ 1, /* 105D1 (67025) */ - 4956, /* 105D2 (67026) */ + 4960, /* 105D2 (67026) */ 1, /* 105D3 (67027) */ 1, /* 105D4 (67028) */ 1, /* 105D5 (67029) */ @@ -60662,7 +60662,7 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 105D7 (67031) */ 1, /* 105D8 (67032) */ 1, /* 105D9 (67033) */ - 4957, /* 105DA (67034) */ + 4961, /* 105DA (67034) */ 1, /* 105DB (67035) */ 1, /* 105DC (67036) */ 1, /* 105DD (67037) */ @@ -60672,7 +60672,7 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 105E1 (67041) */ 1, /* 105E2 (67042) */ 1, /* 105E3 (67043) */ - 4958, /* 105E4 (67044) */ + 4962, /* 105E4 (67044) */ 1, /* 105E5 (67045) */ 1, /* 105E6 (67046) */ 1, /* 105E7 (67047) */ @@ -61085,64 +61085,64 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 1077E (67454) */ 56, /* 1077F (67455) */ 1, /* 10780 (67456) */ - 4959, /* 10781 (67457) */ - 4960, /* 10782 (67458) */ - 4961, /* 10783 (67459) */ - 4962, /* 10784 (67460) */ - 4963, /* 10785 (67461) */ + 4963, /* 10781 (67457) */ + 4964, /* 10782 (67458) */ + 4965, /* 10783 (67459) */ + 4966, /* 10784 (67460) */ + 4967, /* 10785 (67461) */ 56, /* 10786 (67462) */ - 4964, /* 10787 (67463) */ - 4965, /* 10788 (67464) */ - 4966, /* 10789 (67465) */ - 4967, /* 1078A (67466) */ - 4968, /* 1078B (67467) */ - 4969, /* 1078C (67468) */ - 4970, /* 1078D (67469) */ - 4971, /* 1078E (67470) */ - 4972, /* 1078F (67471) */ - 4973, /* 10790 (67472) */ - 4974, /* 10791 (67473) */ - 4975, /* 10792 (67474) */ - 4976, /* 10793 (67475) */ - 4977, /* 10794 (67476) */ - 4978, /* 10795 (67477) */ - 4979, /* 10796 (67478) */ - 4980, /* 10797 (67479) */ - 4981, /* 10798 (67480) */ - 4982, /* 10799 (67481) */ - 4983, /* 1079A (67482) */ - 4984, /* 1079B (67483) */ - 4985, /* 1079C (67484) */ - 4986, /* 1079D (67485) */ - 4987, /* 1079E (67486) */ - 4988, /* 1079F (67487) */ - 4989, /* 107A0 (67488) */ - 4990, /* 107A1 (67489) */ - 4991, /* 107A2 (67490) */ - 4992, /* 107A3 (67491) */ - 4993, /* 107A4 (67492) */ - 4994, /* 107A5 (67493) */ - 4995, /* 107A6 (67494) */ - 4996, /* 107A7 (67495) */ - 4997, /* 107A8 (67496) */ - 4998, /* 107A9 (67497) */ - 4999, /* 107AA (67498) */ - 5000, /* 107AB (67499) */ - 5001, /* 107AC (67500) */ - 5002, /* 107AD (67501) */ - 5003, /* 107AE (67502) */ - 5004, /* 107AF (67503) */ - 5005, /* 107B0 (67504) */ + 4968, /* 10787 (67463) */ + 4969, /* 10788 (67464) */ + 4970, /* 10789 (67465) */ + 4971, /* 1078A (67466) */ + 4972, /* 1078B (67467) */ + 4973, /* 1078C (67468) */ + 4974, /* 1078D (67469) */ + 4975, /* 1078E (67470) */ + 4976, /* 1078F (67471) */ + 4977, /* 10790 (67472) */ + 4978, /* 10791 (67473) */ + 4979, /* 10792 (67474) */ + 4980, /* 10793 (67475) */ + 4981, /* 10794 (67476) */ + 4982, /* 10795 (67477) */ + 4983, /* 10796 (67478) */ + 4984, /* 10797 (67479) */ + 4985, /* 10798 (67480) */ + 4986, /* 10799 (67481) */ + 4987, /* 1079A (67482) */ + 4988, /* 1079B (67483) */ + 4989, /* 1079C (67484) */ + 4990, /* 1079D (67485) */ + 4991, /* 1079E (67486) */ + 4992, /* 1079F (67487) */ + 4993, /* 107A0 (67488) */ + 4994, /* 107A1 (67489) */ + 4995, /* 107A2 (67490) */ + 4996, /* 107A3 (67491) */ + 4997, /* 107A4 (67492) */ + 4998, /* 107A5 (67493) */ + 4999, /* 107A6 (67494) */ + 5000, /* 107A7 (67495) */ + 5001, /* 107A8 (67496) */ + 5002, /* 107A9 (67497) */ + 5003, /* 107AA (67498) */ + 5004, /* 107AB (67499) */ + 5005, /* 107AC (67500) */ + 5006, /* 107AD (67501) */ + 5007, /* 107AE (67502) */ + 5008, /* 107AF (67503) */ + 5009, /* 107B0 (67504) */ 56, /* 107B1 (67505) */ - 5006, /* 107B2 (67506) */ - 5007, /* 107B3 (67507) */ - 5008, /* 107B4 (67508) */ - 5009, /* 107B5 (67509) */ - 5010, /* 107B6 (67510) */ - 5011, /* 107B7 (67511) */ - 5012, /* 107B8 (67512) */ - 5013, /* 107B9 (67513) */ - 5014, /* 107BA (67514) */ + 5010, /* 107B2 (67506) */ + 5011, /* 107B3 (67507) */ + 5012, /* 107B4 (67508) */ + 5013, /* 107B5 (67509) */ + 5014, /* 107B6 (67510) */ + 5015, /* 107B7 (67511) */ + 5016, /* 107B8 (67512) */ + 5017, /* 107B9 (67513) */ + 5018, /* 107BA (67514) */ 56, /* 107BB (67515) */ 56, /* 107BC (67516) */ 56, /* 107BD (67517) */ @@ -61532,32 +61532,32 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 1093D (67901) */ 56, /* 1093E (67902) */ 1, /* 1093F (67903) */ - 56, /* 10940 (67904) */ - 56, /* 10941 (67905) */ - 56, /* 10942 (67906) */ - 56, /* 10943 (67907) */ - 56, /* 10944 (67908) */ - 56, /* 10945 (67909) */ - 56, /* 10946 (67910) */ - 56, /* 10947 (67911) */ - 56, /* 10948 (67912) */ - 56, /* 10949 (67913) */ - 56, /* 1094A (67914) */ - 56, /* 1094B (67915) */ - 56, /* 1094C (67916) */ - 56, /* 1094D (67917) */ - 56, /* 1094E (67918) */ - 56, /* 1094F (67919) */ - 56, /* 10950 (67920) */ - 56, /* 10951 (67921) */ - 56, /* 10952 (67922) */ - 56, /* 10953 (67923) */ - 56, /* 10954 (67924) */ - 56, /* 10955 (67925) */ - 56, /* 10956 (67926) */ - 56, /* 10957 (67927) */ - 56, /* 10958 (67928) */ - 56, /* 10959 (67929) */ + 1, /* 10940 (67904) */ + 1, /* 10941 (67905) */ + 1, /* 10942 (67906) */ + 1, /* 10943 (67907) */ + 1, /* 10944 (67908) */ + 1, /* 10945 (67909) */ + 1, /* 10946 (67910) */ + 1, /* 10947 (67911) */ + 1, /* 10948 (67912) */ + 1, /* 10949 (67913) */ + 1, /* 1094A (67914) */ + 1, /* 1094B (67915) */ + 1, /* 1094C (67916) */ + 1, /* 1094D (67917) */ + 1, /* 1094E (67918) */ + 1, /* 1094F (67919) */ + 1, /* 10950 (67920) */ + 1, /* 10951 (67921) */ + 1, /* 10952 (67922) */ + 1, /* 10953 (67923) */ + 1, /* 10954 (67924) */ + 1, /* 10955 (67925) */ + 1, /* 10956 (67926) */ + 1, /* 10957 (67927) */ + 1, /* 10958 (67928) */ + 1, /* 10959 (67929) */ 56, /* 1095A (67930) */ 56, /* 1095B (67931) */ 56, /* 1095C (67932) */ @@ -62364,57 +62364,57 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 10C7D (68733) */ 56, /* 10C7E (68734) */ 56, /* 10C7F (68735) */ - 5015, /* 10C80 (68736) */ - 5016, /* 10C81 (68737) */ - 5017, /* 10C82 (68738) */ - 5018, /* 10C83 (68739) */ - 5019, /* 10C84 (68740) */ - 5020, /* 10C85 (68741) */ - 5021, /* 10C86 (68742) */ - 5022, /* 10C87 (68743) */ - 5023, /* 10C88 (68744) */ - 5024, /* 10C89 (68745) */ - 5025, /* 10C8A (68746) */ - 5026, /* 10C8B (68747) */ - 5027, /* 10C8C (68748) */ - 5028, /* 10C8D (68749) */ - 5029, /* 10C8E (68750) */ - 5030, /* 10C8F (68751) */ - 5031, /* 10C90 (68752) */ - 5032, /* 10C91 (68753) */ - 5033, /* 10C92 (68754) */ - 5034, /* 10C93 (68755) */ - 5035, /* 10C94 (68756) */ - 5036, /* 10C95 (68757) */ - 5037, /* 10C96 (68758) */ - 5038, /* 10C97 (68759) */ - 5039, /* 10C98 (68760) */ - 5040, /* 10C99 (68761) */ - 5041, /* 10C9A (68762) */ - 5042, /* 10C9B (68763) */ - 5043, /* 10C9C (68764) */ - 5044, /* 10C9D (68765) */ - 5045, /* 10C9E (68766) */ - 5046, /* 10C9F (68767) */ - 5047, /* 10CA0 (68768) */ - 5048, /* 10CA1 (68769) */ - 5049, /* 10CA2 (68770) */ - 5050, /* 10CA3 (68771) */ - 5051, /* 10CA4 (68772) */ - 5052, /* 10CA5 (68773) */ - 5053, /* 10CA6 (68774) */ - 5054, /* 10CA7 (68775) */ - 5055, /* 10CA8 (68776) */ - 5056, /* 10CA9 (68777) */ - 5057, /* 10CAA (68778) */ - 5058, /* 10CAB (68779) */ - 5059, /* 10CAC (68780) */ - 5060, /* 10CAD (68781) */ - 5061, /* 10CAE (68782) */ - 5062, /* 10CAF (68783) */ - 5063, /* 10CB0 (68784) */ - 5064, /* 10CB1 (68785) */ - 5065, /* 10CB2 (68786) */ + 5019, /* 10C80 (68736) */ + 5020, /* 10C81 (68737) */ + 5021, /* 10C82 (68738) */ + 5022, /* 10C83 (68739) */ + 5023, /* 10C84 (68740) */ + 5024, /* 10C85 (68741) */ + 5025, /* 10C86 (68742) */ + 5026, /* 10C87 (68743) */ + 5027, /* 10C88 (68744) */ + 5028, /* 10C89 (68745) */ + 5029, /* 10C8A (68746) */ + 5030, /* 10C8B (68747) */ + 5031, /* 10C8C (68748) */ + 5032, /* 10C8D (68749) */ + 5033, /* 10C8E (68750) */ + 5034, /* 10C8F (68751) */ + 5035, /* 10C90 (68752) */ + 5036, /* 10C91 (68753) */ + 5037, /* 10C92 (68754) */ + 5038, /* 10C93 (68755) */ + 5039, /* 10C94 (68756) */ + 5040, /* 10C95 (68757) */ + 5041, /* 10C96 (68758) */ + 5042, /* 10C97 (68759) */ + 5043, /* 10C98 (68760) */ + 5044, /* 10C99 (68761) */ + 5045, /* 10C9A (68762) */ + 5046, /* 10C9B (68763) */ + 5047, /* 10C9C (68764) */ + 5048, /* 10C9D (68765) */ + 5049, /* 10C9E (68766) */ + 5050, /* 10C9F (68767) */ + 5051, /* 10CA0 (68768) */ + 5052, /* 10CA1 (68769) */ + 5053, /* 10CA2 (68770) */ + 5054, /* 10CA3 (68771) */ + 5055, /* 10CA4 (68772) */ + 5056, /* 10CA5 (68773) */ + 5057, /* 10CA6 (68774) */ + 5058, /* 10CA7 (68775) */ + 5059, /* 10CA8 (68776) */ + 5060, /* 10CA9 (68777) */ + 5061, /* 10CAA (68778) */ + 5062, /* 10CAB (68779) */ + 5063, /* 10CAC (68780) */ + 5064, /* 10CAD (68781) */ + 5065, /* 10CAE (68782) */ + 5066, /* 10CAF (68783) */ + 5067, /* 10CB0 (68784) */ + 5068, /* 10CB1 (68785) */ + 5069, /* 10CB2 (68786) */ 56, /* 10CB3 (68787) */ 56, /* 10CB4 (68788) */ 56, /* 10CB5 (68789) */ @@ -62572,28 +62572,28 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 10D4D (68941) */ 1, /* 10D4E (68942) */ 1, /* 10D4F (68943) */ - 5066, /* 10D50 (68944) */ - 5067, /* 10D51 (68945) */ - 5068, /* 10D52 (68946) */ - 5069, /* 10D53 (68947) */ - 5070, /* 10D54 (68948) */ - 5071, /* 10D55 (68949) */ - 5072, /* 10D56 (68950) */ - 5073, /* 10D57 (68951) */ - 5074, /* 10D58 (68952) */ - 5075, /* 10D59 (68953) */ - 5076, /* 10D5A (68954) */ - 5077, /* 10D5B (68955) */ - 5078, /* 10D5C (68956) */ - 5079, /* 10D5D (68957) */ - 5080, /* 10D5E (68958) */ - 5081, /* 10D5F (68959) */ - 5082, /* 10D60 (68960) */ - 5083, /* 10D61 (68961) */ - 5084, /* 10D62 (68962) */ - 5085, /* 10D63 (68963) */ - 5086, /* 10D64 (68964) */ - 5087, /* 10D65 (68965) */ + 5070, /* 10D50 (68944) */ + 5071, /* 10D51 (68945) */ + 5072, /* 10D52 (68946) */ + 5073, /* 10D53 (68947) */ + 5074, /* 10D54 (68948) */ + 5075, /* 10D55 (68949) */ + 5076, /* 10D56 (68950) */ + 5077, /* 10D57 (68951) */ + 5078, /* 10D58 (68952) */ + 5079, /* 10D59 (68953) */ + 5080, /* 10D5A (68954) */ + 5081, /* 10D5B (68955) */ + 5082, /* 10D5C (68956) */ + 5083, /* 10D5D (68957) */ + 5084, /* 10D5E (68958) */ + 5085, /* 10D5F (68959) */ + 5086, /* 10D60 (68960) */ + 5087, /* 10D61 (68961) */ + 5088, /* 10D62 (68962) */ + 5089, /* 10D63 (68963) */ + 5090, /* 10D64 (68964) */ + 5091, /* 10D65 (68965) */ 56, /* 10D66 (68966) */ 56, /* 10D67 (68967) */ 56, /* 10D68 (68968) */ @@ -62945,9 +62945,9 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 10EC2 (69314) */ 1, /* 10EC3 (69315) */ 1, /* 10EC4 (69316) */ - 56, /* 10EC5 (69317) */ - 56, /* 10EC6 (69318) */ - 56, /* 10EC7 (69319) */ + 1, /* 10EC5 (69317) */ + 1, /* 10EC6 (69318) */ + 1, /* 10EC7 (69319) */ 56, /* 10EC8 (69320) */ 56, /* 10EC9 (69321) */ 56, /* 10ECA (69322) */ @@ -62956,15 +62956,15 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 10ECD (69325) */ 56, /* 10ECE (69326) */ 56, /* 10ECF (69327) */ - 56, /* 10ED0 (69328) */ - 56, /* 10ED1 (69329) */ - 56, /* 10ED2 (69330) */ - 56, /* 10ED3 (69331) */ - 56, /* 10ED4 (69332) */ - 56, /* 10ED5 (69333) */ - 56, /* 10ED6 (69334) */ - 56, /* 10ED7 (69335) */ - 56, /* 10ED8 (69336) */ + 1, /* 10ED0 (69328) */ + 1, /* 10ED1 (69329) */ + 1, /* 10ED2 (69330) */ + 1, /* 10ED3 (69331) */ + 1, /* 10ED4 (69332) */ + 1, /* 10ED5 (69333) */ + 1, /* 10ED6 (69334) */ + 1, /* 10ED7 (69335) */ + 1, /* 10ED8 (69336) */ 56, /* 10ED9 (69337) */ 56, /* 10EDA (69338) */ 56, /* 10EDB (69339) */ @@ -62998,8 +62998,8 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 10EF7 (69367) */ 56, /* 10EF8 (69368) */ 56, /* 10EF9 (69369) */ - 56, /* 10EFA (69370) */ - 56, /* 10EFB (69371) */ + 433, /* 10EFA (69370) */ + 433, /* 10EFB (69371) */ 1, /* 10EFC (69372) */ 433, /* 10EFD (69373) */ 433, /* 10EFE (69374) */ @@ -63413,10 +63413,10 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 11096 (69782) */ 1, /* 11097 (69783) */ 1, /* 11098 (69784) */ - 5088, /* 11099 (69785) */ - 5089, /* 1109A (69786) */ - 5090, /* 1109B (69787) */ - 5091, /* 1109C (69788) */ + 5092, /* 11099 (69785) */ + 5093, /* 1109A (69786) */ + 5094, /* 1109B (69787) */ + 5095, /* 1109C (69788) */ 1, /* 1109D (69789) */ 1, /* 1109E (69790) */ 1, /* 1109F (69791) */ @@ -63425,13 +63425,13 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 110A2 (69794) */ 1, /* 110A3 (69795) */ 1, /* 110A4 (69796) */ - 5092, /* 110A5 (69797) */ + 5096, /* 110A5 (69797) */ 1, /* 110A6 (69798) */ 1, /* 110A7 (69799) */ 1, /* 110A8 (69800) */ 1, /* 110A9 (69801) */ 1, /* 110AA (69802) */ - 5093, /* 110AB (69803) */ + 5097, /* 110AB (69803) */ 1, /* 110AC (69804) */ 1, /* 110AD (69805) */ 1, /* 110AE (69806) */ @@ -63562,11 +63562,11 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 1112B (69931) */ 1, /* 1112C (69932) */ 1, /* 1112D (69933) */ - 5094, /* 1112E (69934) */ - 5095, /* 1112F (69935) */ + 5098, /* 1112E (69934) */ + 5099, /* 1112F (69935) */ 1, /* 11130 (69936) */ - 5096, /* 11131 (69937) */ - 5097, /* 11132 (69938) */ + 5100, /* 11131 (69937) */ + 5101, /* 11132 (69938) */ 852, /* 11133 (69939) */ 852, /* 11134 (69940) */ 56, /* 11135 (69941) */ @@ -64099,12 +64099,12 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 11344 (70468) */ 56, /* 11345 (70469) */ 56, /* 11346 (70470) */ - 5098, /* 11347 (70471) */ + 5102, /* 11347 (70471) */ 1, /* 11348 (70472) */ 56, /* 11349 (70473) */ 56, /* 1134A (70474) */ - 5099, /* 1134B (70475) */ - 5100, /* 1134C (70476) */ + 5103, /* 1134B (70475) */ + 5104, /* 1134C (70476) */ 852, /* 1134D (70477) */ 56, /* 1134E (70478) */ 56, /* 1134F (70479) */ @@ -64158,22 +64158,22 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 1137F (70527) */ 1, /* 11380 (70528) */ 1, /* 11381 (70529) */ - 5101, /* 11382 (70530) */ - 5102, /* 11383 (70531) */ - 5103, /* 11384 (70532) */ - 5104, /* 11385 (70533) */ + 5105, /* 11382 (70530) */ + 5106, /* 11383 (70531) */ + 5107, /* 11384 (70532) */ + 5108, /* 11385 (70533) */ 1, /* 11386 (70534) */ 1, /* 11387 (70535) */ 1, /* 11388 (70536) */ 1, /* 11389 (70537) */ 56, /* 1138A (70538) */ - 5105, /* 1138B (70539) */ + 5109, /* 1138B (70539) */ 56, /* 1138C (70540) */ 56, /* 1138D (70541) */ - 5106, /* 1138E (70542) */ + 5110, /* 1138E (70542) */ 56, /* 1138F (70543) */ - 5107, /* 11390 (70544) */ - 5108, /* 11391 (70545) */ + 5111, /* 11390 (70544) */ + 5112, /* 11391 (70545) */ 1, /* 11392 (70546) */ 1, /* 11393 (70547) */ 1, /* 11394 (70548) */ @@ -64222,13 +64222,13 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 113BF (70591) */ 1, /* 113C0 (70592) */ 56, /* 113C1 (70593) */ - 5109, /* 113C2 (70594) */ + 5113, /* 113C2 (70594) */ 56, /* 113C3 (70595) */ 56, /* 113C4 (70596) */ - 5110, /* 113C5 (70597) */ + 5114, /* 113C5 (70597) */ 56, /* 113C6 (70598) */ - 5111, /* 113C7 (70599) */ - 5112, /* 113C8 (70600) */ + 5115, /* 113C7 (70599) */ + 5116, /* 113C8 (70600) */ 865, /* 113C9 (70601) */ 1, /* 113CA (70602) */ 56, /* 113CB (70603) */ @@ -64469,12 +64469,12 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 114B6 (70838) */ 1, /* 114B7 (70839) */ 1, /* 114B8 (70840) */ - 5113, /* 114B9 (70841) */ + 5117, /* 114B9 (70841) */ 865, /* 114BA (70842) */ - 5114, /* 114BB (70843) */ - 5115, /* 114BC (70844) */ + 5118, /* 114BB (70843) */ + 5119, /* 114BC (70844) */ 865, /* 114BD (70845) */ - 5116, /* 114BE (70846) */ + 5120, /* 114BE (70846) */ 1, /* 114BF (70847) */ 1, /* 114C0 (70848) */ 1, /* 114C1 (70849) */ @@ -64724,10 +64724,10 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 115B5 (71093) */ 56, /* 115B6 (71094) */ 56, /* 115B7 (71095) */ - 5117, /* 115B8 (71096) */ - 5118, /* 115B9 (71097) */ - 5119, /* 115BA (71098) */ - 5120, /* 115BB (71099) */ + 5121, /* 115B8 (71096) */ + 5122, /* 115B9 (71097) */ + 5123, /* 115BA (71098) */ + 5124, /* 115BB (71099) */ 1, /* 115BC (71100) */ 1, /* 115BD (71101) */ 1, /* 115BE (71102) */ @@ -65468,38 +65468,38 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 1189D (71837) */ 56, /* 1189E (71838) */ 56, /* 1189F (71839) */ - 5121, /* 118A0 (71840) */ - 5122, /* 118A1 (71841) */ - 5123, /* 118A2 (71842) */ - 5124, /* 118A3 (71843) */ - 5125, /* 118A4 (71844) */ - 5126, /* 118A5 (71845) */ - 5127, /* 118A6 (71846) */ - 5128, /* 118A7 (71847) */ - 5129, /* 118A8 (71848) */ - 5130, /* 118A9 (71849) */ - 5131, /* 118AA (71850) */ - 5132, /* 118AB (71851) */ - 5133, /* 118AC (71852) */ - 5134, /* 118AD (71853) */ - 5135, /* 118AE (71854) */ - 5136, /* 118AF (71855) */ - 5137, /* 118B0 (71856) */ - 5138, /* 118B1 (71857) */ - 5139, /* 118B2 (71858) */ - 5140, /* 118B3 (71859) */ - 5141, /* 118B4 (71860) */ - 5142, /* 118B5 (71861) */ - 5143, /* 118B6 (71862) */ - 5144, /* 118B7 (71863) */ - 5145, /* 118B8 (71864) */ - 5146, /* 118B9 (71865) */ - 5147, /* 118BA (71866) */ - 5148, /* 118BB (71867) */ - 5149, /* 118BC (71868) */ - 5150, /* 118BD (71869) */ - 5151, /* 118BE (71870) */ - 5152, /* 118BF (71871) */ + 5125, /* 118A0 (71840) */ + 5126, /* 118A1 (71841) */ + 5127, /* 118A2 (71842) */ + 5128, /* 118A3 (71843) */ + 5129, /* 118A4 (71844) */ + 5130, /* 118A5 (71845) */ + 5131, /* 118A6 (71846) */ + 5132, /* 118A7 (71847) */ + 5133, /* 118A8 (71848) */ + 5134, /* 118A9 (71849) */ + 5135, /* 118AA (71850) */ + 5136, /* 118AB (71851) */ + 5137, /* 118AC (71852) */ + 5138, /* 118AD (71853) */ + 5139, /* 118AE (71854) */ + 5140, /* 118AF (71855) */ + 5141, /* 118B0 (71856) */ + 5142, /* 118B1 (71857) */ + 5143, /* 118B2 (71858) */ + 5144, /* 118B3 (71859) */ + 5145, /* 118B4 (71860) */ + 5146, /* 118B5 (71861) */ + 5147, /* 118B6 (71862) */ + 5148, /* 118B7 (71863) */ + 5149, /* 118B8 (71864) */ + 5150, /* 118B9 (71865) */ + 5151, /* 118BA (71866) */ + 5152, /* 118BB (71867) */ + 5153, /* 118BC (71868) */ + 5154, /* 118BD (71869) */ + 5155, /* 118BE (71870) */ + 5156, /* 118BF (71871) */ 1, /* 118C0 (71872) */ 1, /* 118C1 (71873) */ 1, /* 118C2 (71874) */ @@ -65617,10 +65617,10 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 11932 (71986) */ 1, /* 11933 (71987) */ 1, /* 11934 (71988) */ - 5153, /* 11935 (71989) */ + 5157, /* 11935 (71989) */ 56, /* 11936 (71990) */ 1, /* 11937 (71991) */ - 5154, /* 11938 (71992) */ + 5158, /* 11938 (71992) */ 56, /* 11939 (71993) */ 56, /* 1193A (71994) */ 1, /* 1193B (71995) */ @@ -66172,14 +66172,14 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 11B5D (72541) */ 56, /* 11B5E (72542) */ 56, /* 11B5F (72543) */ - 56, /* 11B60 (72544) */ - 56, /* 11B61 (72545) */ - 56, /* 11B62 (72546) */ - 56, /* 11B63 (72547) */ - 56, /* 11B64 (72548) */ - 56, /* 11B65 (72549) */ - 56, /* 11B66 (72550) */ - 56, /* 11B67 (72551) */ + 1, /* 11B60 (72544) */ + 1, /* 11B61 (72545) */ + 1, /* 11B62 (72546) */ + 1, /* 11B63 (72547) */ + 1, /* 11B64 (72548) */ + 1, /* 11B65 (72549) */ + 1, /* 11B66 (72550) */ + 1, /* 11B67 (72551) */ 56, /* 11B68 (72552) */ 56, /* 11B69 (72553) */ 56, /* 11B6A (72554) */ @@ -66764,64 +66764,64 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 56, /* 11DAD (73133) */ 56, /* 11DAE (73134) */ 56, /* 11DAF (73135) */ - 56, /* 11DB0 (73136) */ - 56, /* 11DB1 (73137) */ - 56, /* 11DB2 (73138) */ - 56, /* 11DB3 (73139) */ - 56, /* 11DB4 (73140) */ - 56, /* 11DB5 (73141) */ - 56, /* 11DB6 (73142) */ - 56, /* 11DB7 (73143) */ - 56, /* 11DB8 (73144) */ - 56, /* 11DB9 (73145) */ - 56, /* 11DBA (73146) */ - 56, /* 11DBB (73147) */ - 56, /* 11DBC (73148) */ - 56, /* 11DBD (73149) */ - 56, /* 11DBE (73150) */ - 56, /* 11DBF (73151) */ - 56, /* 11DC0 (73152) */ - 56, /* 11DC1 (73153) */ - 56, /* 11DC2 (73154) */ - 56, /* 11DC3 (73155) */ - 56, /* 11DC4 (73156) */ - 56, /* 11DC5 (73157) */ - 56, /* 11DC6 (73158) */ - 56, /* 11DC7 (73159) */ - 56, /* 11DC8 (73160) */ - 56, /* 11DC9 (73161) */ - 56, /* 11DCA (73162) */ - 56, /* 11DCB (73163) */ - 56, /* 11DCC (73164) */ - 56, /* 11DCD (73165) */ - 56, /* 11DCE (73166) */ - 56, /* 11DCF (73167) */ - 56, /* 11DD0 (73168) */ - 56, /* 11DD1 (73169) */ - 56, /* 11DD2 (73170) */ - 56, /* 11DD3 (73171) */ - 56, /* 11DD4 (73172) */ - 56, /* 11DD5 (73173) */ - 56, /* 11DD6 (73174) */ - 56, /* 11DD7 (73175) */ - 56, /* 11DD8 (73176) */ - 56, /* 11DD9 (73177) */ - 56, /* 11DDA (73178) */ - 56, /* 11DDB (73179) */ + 1, /* 11DB0 (73136) */ + 1, /* 11DB1 (73137) */ + 1, /* 11DB2 (73138) */ + 1, /* 11DB3 (73139) */ + 1, /* 11DB4 (73140) */ + 1, /* 11DB5 (73141) */ + 1, /* 11DB6 (73142) */ + 1, /* 11DB7 (73143) */ + 1, /* 11DB8 (73144) */ + 1, /* 11DB9 (73145) */ + 1, /* 11DBA (73146) */ + 1, /* 11DBB (73147) */ + 1, /* 11DBC (73148) */ + 1, /* 11DBD (73149) */ + 1, /* 11DBE (73150) */ + 1, /* 11DBF (73151) */ + 1, /* 11DC0 (73152) */ + 1, /* 11DC1 (73153) */ + 1, /* 11DC2 (73154) */ + 1, /* 11DC3 (73155) */ + 1, /* 11DC4 (73156) */ + 1, /* 11DC5 (73157) */ + 1, /* 11DC6 (73158) */ + 1, /* 11DC7 (73159) */ + 1, /* 11DC8 (73160) */ + 1, /* 11DC9 (73161) */ + 1, /* 11DCA (73162) */ + 1, /* 11DCB (73163) */ + 1, /* 11DCC (73164) */ + 1, /* 11DCD (73165) */ + 1, /* 11DCE (73166) */ + 1, /* 11DCF (73167) */ + 1, /* 11DD0 (73168) */ + 1, /* 11DD1 (73169) */ + 1, /* 11DD2 (73170) */ + 1, /* 11DD3 (73171) */ + 1, /* 11DD4 (73172) */ + 1, /* 11DD5 (73173) */ + 1, /* 11DD6 (73174) */ + 1, /* 11DD7 (73175) */ + 1, /* 11DD8 (73176) */ + 1, /* 11DD9 (73177) */ + 1, /* 11DDA (73178) */ + 1, /* 11DDB (73179) */ 56, /* 11DDC (73180) */ 56, /* 11DDD (73181) */ 56, /* 11DDE (73182) */ 56, /* 11DDF (73183) */ - 56, /* 11DE0 (73184) */ - 56, /* 11DE1 (73185) */ - 56, /* 11DE2 (73186) */ - 56, /* 11DE3 (73187) */ - 56, /* 11DE4 (73188) */ - 56, /* 11DE5 (73189) */ - 56, /* 11DE6 (73190) */ - 56, /* 11DE7 (73191) */ - 56, /* 11DE8 (73192) */ - 56, /* 11DE9 (73193) */ + 1, /* 11DE0 (73184) */ + 1, /* 11DE1 (73185) */ + 1, /* 11DE2 (73186) */ + 1, /* 11DE3 (73187) */ + 1, /* 11DE4 (73188) */ + 1, /* 11DE5 (73189) */ + 1, /* 11DE6 (73190) */ + 1, /* 11DE7 (73191) */ + 1, /* 11DE8 (73192) */ + 1, /* 11DE9 (73193) */ 56, /* 11DEA (73194) */ 56, /* 11DEB (73195) */ 56, /* 11DEC (73196) */ @@ -77157,8 +77157,8 @@ static const uint16_t lxb_unicode_table_map_63743_83527[19784] = 1, /* 14646 (83526) */ }; -/* From: 16100; To: 18D08 */ -static const uint16_t lxb_unicode_table_map_90368_101641[11273] = +/* From: 16100; To: 18DF2 */ +static const uint16_t lxb_unicode_table_map_90368_101875[11507] = { 1, /* 16100 (90368) */ 1, /* 16101 (90369) */ @@ -77190,18 +77190,18 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 1, /* 1611B (90395) */ 1, /* 1611C (90396) */ 1, /* 1611D (90397) */ - 5155, /* 1611E (90398) */ + 5159, /* 1611E (90398) */ 865, /* 1611F (90399) */ 865, /* 16120 (90400) */ - 5156, /* 16121 (90401) */ - 5157, /* 16122 (90402) */ - 5158, /* 16123 (90403) */ - 5159, /* 16124 (90404) */ - 5160, /* 16125 (90405) */ - 5161, /* 16126 (90406) */ - 5162, /* 16127 (90407) */ - 5163, /* 16128 (90408) */ - 5164, /* 16129 (90409) */ + 5160, /* 16121 (90401) */ + 5161, /* 16122 (90402) */ + 5162, /* 16123 (90403) */ + 5163, /* 16124 (90404) */ + 5164, /* 16125 (90405) */ + 5165, /* 16126 (90406) */ + 5166, /* 16127 (90407) */ + 5167, /* 16128 (90408) */ + 5168, /* 16129 (90409) */ 1, /* 1612A (90410) */ 1, /* 1612B (90411) */ 1, /* 1612C (90412) */ @@ -80331,14 +80331,14 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 1, /* 16D60 (93536) */ 1, /* 16D61 (93537) */ 1, /* 16D62 (93538) */ - 5165, /* 16D63 (93539) */ + 5169, /* 16D63 (93539) */ 1, /* 16D64 (93540) */ 1, /* 16D65 (93541) */ 1, /* 16D66 (93542) */ - 5166, /* 16D67 (93543) */ - 5167, /* 16D68 (93544) */ - 5168, /* 16D69 (93545) */ - 5169, /* 16D6A (93546) */ + 5170, /* 16D67 (93543) */ + 5171, /* 16D68 (93544) */ + 5172, /* 16D69 (93545) */ + 5173, /* 16D6A (93546) */ 1, /* 16D6B (93547) */ 1, /* 16D6C (93548) */ 1, /* 16D6D (93549) */ @@ -80552,38 +80552,38 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 56, /* 16E3D (93757) */ 56, /* 16E3E (93758) */ 56, /* 16E3F (93759) */ - 5170, /* 16E40 (93760) */ - 5171, /* 16E41 (93761) */ - 5172, /* 16E42 (93762) */ - 5173, /* 16E43 (93763) */ - 5174, /* 16E44 (93764) */ - 5175, /* 16E45 (93765) */ - 5176, /* 16E46 (93766) */ - 5177, /* 16E47 (93767) */ - 5178, /* 16E48 (93768) */ - 5179, /* 16E49 (93769) */ - 5180, /* 16E4A (93770) */ - 5181, /* 16E4B (93771) */ - 5182, /* 16E4C (93772) */ - 5183, /* 16E4D (93773) */ - 5184, /* 16E4E (93774) */ - 5185, /* 16E4F (93775) */ - 5186, /* 16E50 (93776) */ - 5187, /* 16E51 (93777) */ - 5188, /* 16E52 (93778) */ - 5189, /* 16E53 (93779) */ - 5190, /* 16E54 (93780) */ - 5191, /* 16E55 (93781) */ - 5192, /* 16E56 (93782) */ - 5193, /* 16E57 (93783) */ - 5194, /* 16E58 (93784) */ - 5195, /* 16E59 (93785) */ - 5196, /* 16E5A (93786) */ - 5197, /* 16E5B (93787) */ - 5198, /* 16E5C (93788) */ - 5199, /* 16E5D (93789) */ - 5200, /* 16E5E (93790) */ - 5201, /* 16E5F (93791) */ + 5174, /* 16E40 (93760) */ + 5175, /* 16E41 (93761) */ + 5176, /* 16E42 (93762) */ + 5177, /* 16E43 (93763) */ + 5178, /* 16E44 (93764) */ + 5179, /* 16E45 (93765) */ + 5180, /* 16E46 (93766) */ + 5181, /* 16E47 (93767) */ + 5182, /* 16E48 (93768) */ + 5183, /* 16E49 (93769) */ + 5184, /* 16E4A (93770) */ + 5185, /* 16E4B (93771) */ + 5186, /* 16E4C (93772) */ + 5187, /* 16E4D (93773) */ + 5188, /* 16E4E (93774) */ + 5189, /* 16E4F (93775) */ + 5190, /* 16E50 (93776) */ + 5191, /* 16E51 (93777) */ + 5192, /* 16E52 (93778) */ + 5193, /* 16E53 (93779) */ + 5194, /* 16E54 (93780) */ + 5195, /* 16E55 (93781) */ + 5196, /* 16E56 (93782) */ + 5197, /* 16E57 (93783) */ + 5198, /* 16E58 (93784) */ + 5199, /* 16E59 (93785) */ + 5200, /* 16E5A (93786) */ + 5201, /* 16E5B (93787) */ + 5202, /* 16E5C (93788) */ + 5203, /* 16E5D (93789) */ + 5204, /* 16E5E (93790) */ + 5205, /* 16E5F (93791) */ 1, /* 16E60 (93792) */ 1, /* 16E61 (93793) */ 1, /* 16E62 (93794) */ @@ -80648,58 +80648,58 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 56, /* 16E9D (93853) */ 56, /* 16E9E (93854) */ 56, /* 16E9F (93855) */ - 56, /* 16EA0 (93856) */ - 56, /* 16EA1 (93857) */ - 56, /* 16EA2 (93858) */ - 56, /* 16EA3 (93859) */ - 56, /* 16EA4 (93860) */ - 56, /* 16EA5 (93861) */ - 56, /* 16EA6 (93862) */ - 56, /* 16EA7 (93863) */ - 56, /* 16EA8 (93864) */ - 56, /* 16EA9 (93865) */ - 56, /* 16EAA (93866) */ - 56, /* 16EAB (93867) */ - 56, /* 16EAC (93868) */ - 56, /* 16EAD (93869) */ - 56, /* 16EAE (93870) */ - 56, /* 16EAF (93871) */ - 56, /* 16EB0 (93872) */ - 56, /* 16EB1 (93873) */ - 56, /* 16EB2 (93874) */ - 56, /* 16EB3 (93875) */ - 56, /* 16EB4 (93876) */ - 56, /* 16EB5 (93877) */ - 56, /* 16EB6 (93878) */ - 56, /* 16EB7 (93879) */ - 56, /* 16EB8 (93880) */ + 5206, /* 16EA0 (93856) */ + 5207, /* 16EA1 (93857) */ + 5208, /* 16EA2 (93858) */ + 5209, /* 16EA3 (93859) */ + 5210, /* 16EA4 (93860) */ + 5211, /* 16EA5 (93861) */ + 5212, /* 16EA6 (93862) */ + 5213, /* 16EA7 (93863) */ + 5214, /* 16EA8 (93864) */ + 5215, /* 16EA9 (93865) */ + 5216, /* 16EAA (93866) */ + 5217, /* 16EAB (93867) */ + 5218, /* 16EAC (93868) */ + 5219, /* 16EAD (93869) */ + 5220, /* 16EAE (93870) */ + 5221, /* 16EAF (93871) */ + 5222, /* 16EB0 (93872) */ + 5223, /* 16EB1 (93873) */ + 5224, /* 16EB2 (93874) */ + 5225, /* 16EB3 (93875) */ + 5226, /* 16EB4 (93876) */ + 5227, /* 16EB5 (93877) */ + 5228, /* 16EB6 (93878) */ + 5229, /* 16EB7 (93879) */ + 5230, /* 16EB8 (93880) */ 56, /* 16EB9 (93881) */ 56, /* 16EBA (93882) */ - 56, /* 16EBB (93883) */ - 56, /* 16EBC (93884) */ - 56, /* 16EBD (93885) */ - 56, /* 16EBE (93886) */ - 56, /* 16EBF (93887) */ - 56, /* 16EC0 (93888) */ - 56, /* 16EC1 (93889) */ - 56, /* 16EC2 (93890) */ - 56, /* 16EC3 (93891) */ - 56, /* 16EC4 (93892) */ - 56, /* 16EC5 (93893) */ - 56, /* 16EC6 (93894) */ - 56, /* 16EC7 (93895) */ - 56, /* 16EC8 (93896) */ - 56, /* 16EC9 (93897) */ - 56, /* 16ECA (93898) */ - 56, /* 16ECB (93899) */ - 56, /* 16ECC (93900) */ - 56, /* 16ECD (93901) */ - 56, /* 16ECE (93902) */ - 56, /* 16ECF (93903) */ - 56, /* 16ED0 (93904) */ - 56, /* 16ED1 (93905) */ - 56, /* 16ED2 (93906) */ - 56, /* 16ED3 (93907) */ + 1, /* 16EBB (93883) */ + 1, /* 16EBC (93884) */ + 1, /* 16EBD (93885) */ + 1, /* 16EBE (93886) */ + 1, /* 16EBF (93887) */ + 1, /* 16EC0 (93888) */ + 1, /* 16EC1 (93889) */ + 1, /* 16EC2 (93890) */ + 1, /* 16EC3 (93891) */ + 1, /* 16EC4 (93892) */ + 1, /* 16EC5 (93893) */ + 1, /* 16EC6 (93894) */ + 1, /* 16EC7 (93895) */ + 1, /* 16EC8 (93896) */ + 1, /* 16EC9 (93897) */ + 1, /* 16ECA (93898) */ + 1, /* 16ECB (93899) */ + 1, /* 16ECC (93900) */ + 1, /* 16ECD (93901) */ + 1, /* 16ECE (93902) */ + 1, /* 16ECF (93903) */ + 1, /* 16ED0 (93904) */ + 1, /* 16ED1 (93905) */ + 1, /* 16ED2 (93906) */ + 1, /* 16ED3 (93907) */ 56, /* 16ED4 (93908) */ 56, /* 16ED5 (93909) */ 56, /* 16ED6 (93910) */ @@ -80984,13 +80984,13 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 56, /* 16FED (94189) */ 56, /* 16FEE (94190) */ 56, /* 16FEF (94191) */ - 5202, /* 16FF0 (94192) */ - 5202, /* 16FF1 (94193) */ - 56, /* 16FF2 (94194) */ - 56, /* 16FF3 (94195) */ - 56, /* 16FF4 (94196) */ - 56, /* 16FF5 (94197) */ - 56, /* 16FF6 (94198) */ + 5231, /* 16FF0 (94192) */ + 5231, /* 16FF1 (94193) */ + 1, /* 16FF2 (94194) */ + 1, /* 16FF3 (94195) */ + 1, /* 16FF4 (94196) */ + 1, /* 16FF5 (94197) */ + 1, /* 16FF6 (94198) */ 56, /* 16FF7 (94199) */ 56, /* 16FF8 (94200) */ 56, /* 16FF9 (94201) */ @@ -87136,14 +87136,14 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 1, /* 187F5 (100341) */ 1, /* 187F6 (100342) */ 1, /* 187F7 (100343) */ - 56, /* 187F8 (100344) */ - 56, /* 187F9 (100345) */ - 56, /* 187FA (100346) */ - 56, /* 187FB (100347) */ - 56, /* 187FC (100348) */ - 56, /* 187FD (100349) */ - 56, /* 187FE (100350) */ - 56, /* 187FF (100351) */ + 1, /* 187F8 (100344) */ + 1, /* 187F9 (100345) */ + 1, /* 187FA (100346) */ + 1, /* 187FB (100347) */ + 1, /* 187FC (100348) */ + 1, /* 187FD (100349) */ + 1, /* 187FE (100350) */ + 1, /* 187FF (100351) */ 1, /* 18800 (100352) */ 1, /* 18801 (100353) */ 1, /* 18802 (100354) */ @@ -88433,10 +88433,244 @@ static const uint16_t lxb_unicode_table_map_90368_101641[11273] = 1, /* 18D06 (101638) */ 1, /* 18D07 (101639) */ 1, /* 18D08 (101640) */ + 1, /* 18D09 (101641) */ + 1, /* 18D0A (101642) */ + 1, /* 18D0B (101643) */ + 1, /* 18D0C (101644) */ + 1, /* 18D0D (101645) */ + 1, /* 18D0E (101646) */ + 1, /* 18D0F (101647) */ + 1, /* 18D10 (101648) */ + 1, /* 18D11 (101649) */ + 1, /* 18D12 (101650) */ + 1, /* 18D13 (101651) */ + 1, /* 18D14 (101652) */ + 1, /* 18D15 (101653) */ + 1, /* 18D16 (101654) */ + 1, /* 18D17 (101655) */ + 1, /* 18D18 (101656) */ + 1, /* 18D19 (101657) */ + 1, /* 18D1A (101658) */ + 1, /* 18D1B (101659) */ + 1, /* 18D1C (101660) */ + 1, /* 18D1D (101661) */ + 1, /* 18D1E (101662) */ + 56, /* 18D1F (101663) */ + 56, /* 18D20 (101664) */ + 56, /* 18D21 (101665) */ + 56, /* 18D22 (101666) */ + 56, /* 18D23 (101667) */ + 56, /* 18D24 (101668) */ + 56, /* 18D25 (101669) */ + 56, /* 18D26 (101670) */ + 56, /* 18D27 (101671) */ + 56, /* 18D28 (101672) */ + 56, /* 18D29 (101673) */ + 56, /* 18D2A (101674) */ + 56, /* 18D2B (101675) */ + 56, /* 18D2C (101676) */ + 56, /* 18D2D (101677) */ + 56, /* 18D2E (101678) */ + 56, /* 18D2F (101679) */ + 56, /* 18D30 (101680) */ + 56, /* 18D31 (101681) */ + 56, /* 18D32 (101682) */ + 56, /* 18D33 (101683) */ + 56, /* 18D34 (101684) */ + 56, /* 18D35 (101685) */ + 56, /* 18D36 (101686) */ + 56, /* 18D37 (101687) */ + 56, /* 18D38 (101688) */ + 56, /* 18D39 (101689) */ + 56, /* 18D3A (101690) */ + 56, /* 18D3B (101691) */ + 56, /* 18D3C (101692) */ + 56, /* 18D3D (101693) */ + 56, /* 18D3E (101694) */ + 56, /* 18D3F (101695) */ + 56, /* 18D40 (101696) */ + 56, /* 18D41 (101697) */ + 56, /* 18D42 (101698) */ + 56, /* 18D43 (101699) */ + 56, /* 18D44 (101700) */ + 56, /* 18D45 (101701) */ + 56, /* 18D46 (101702) */ + 56, /* 18D47 (101703) */ + 56, /* 18D48 (101704) */ + 56, /* 18D49 (101705) */ + 56, /* 18D4A (101706) */ + 56, /* 18D4B (101707) */ + 56, /* 18D4C (101708) */ + 56, /* 18D4D (101709) */ + 56, /* 18D4E (101710) */ + 56, /* 18D4F (101711) */ + 56, /* 18D50 (101712) */ + 56, /* 18D51 (101713) */ + 56, /* 18D52 (101714) */ + 56, /* 18D53 (101715) */ + 56, /* 18D54 (101716) */ + 56, /* 18D55 (101717) */ + 56, /* 18D56 (101718) */ + 56, /* 18D57 (101719) */ + 56, /* 18D58 (101720) */ + 56, /* 18D59 (101721) */ + 56, /* 18D5A (101722) */ + 56, /* 18D5B (101723) */ + 56, /* 18D5C (101724) */ + 56, /* 18D5D (101725) */ + 56, /* 18D5E (101726) */ + 56, /* 18D5F (101727) */ + 56, /* 18D60 (101728) */ + 56, /* 18D61 (101729) */ + 56, /* 18D62 (101730) */ + 56, /* 18D63 (101731) */ + 56, /* 18D64 (101732) */ + 56, /* 18D65 (101733) */ + 56, /* 18D66 (101734) */ + 56, /* 18D67 (101735) */ + 56, /* 18D68 (101736) */ + 56, /* 18D69 (101737) */ + 56, /* 18D6A (101738) */ + 56, /* 18D6B (101739) */ + 56, /* 18D6C (101740) */ + 56, /* 18D6D (101741) */ + 56, /* 18D6E (101742) */ + 56, /* 18D6F (101743) */ + 56, /* 18D70 (101744) */ + 56, /* 18D71 (101745) */ + 56, /* 18D72 (101746) */ + 56, /* 18D73 (101747) */ + 56, /* 18D74 (101748) */ + 56, /* 18D75 (101749) */ + 56, /* 18D76 (101750) */ + 56, /* 18D77 (101751) */ + 56, /* 18D78 (101752) */ + 56, /* 18D79 (101753) */ + 56, /* 18D7A (101754) */ + 56, /* 18D7B (101755) */ + 56, /* 18D7C (101756) */ + 56, /* 18D7D (101757) */ + 56, /* 18D7E (101758) */ + 56, /* 18D7F (101759) */ + 1, /* 18D80 (101760) */ + 1, /* 18D81 (101761) */ + 1, /* 18D82 (101762) */ + 1, /* 18D83 (101763) */ + 1, /* 18D84 (101764) */ + 1, /* 18D85 (101765) */ + 1, /* 18D86 (101766) */ + 1, /* 18D87 (101767) */ + 1, /* 18D88 (101768) */ + 1, /* 18D89 (101769) */ + 1, /* 18D8A (101770) */ + 1, /* 18D8B (101771) */ + 1, /* 18D8C (101772) */ + 1, /* 18D8D (101773) */ + 1, /* 18D8E (101774) */ + 1, /* 18D8F (101775) */ + 1, /* 18D90 (101776) */ + 1, /* 18D91 (101777) */ + 1, /* 18D92 (101778) */ + 1, /* 18D93 (101779) */ + 1, /* 18D94 (101780) */ + 1, /* 18D95 (101781) */ + 1, /* 18D96 (101782) */ + 1, /* 18D97 (101783) */ + 1, /* 18D98 (101784) */ + 1, /* 18D99 (101785) */ + 1, /* 18D9A (101786) */ + 1, /* 18D9B (101787) */ + 1, /* 18D9C (101788) */ + 1, /* 18D9D (101789) */ + 1, /* 18D9E (101790) */ + 1, /* 18D9F (101791) */ + 1, /* 18DA0 (101792) */ + 1, /* 18DA1 (101793) */ + 1, /* 18DA2 (101794) */ + 1, /* 18DA3 (101795) */ + 1, /* 18DA4 (101796) */ + 1, /* 18DA5 (101797) */ + 1, /* 18DA6 (101798) */ + 1, /* 18DA7 (101799) */ + 1, /* 18DA8 (101800) */ + 1, /* 18DA9 (101801) */ + 1, /* 18DAA (101802) */ + 1, /* 18DAB (101803) */ + 1, /* 18DAC (101804) */ + 1, /* 18DAD (101805) */ + 1, /* 18DAE (101806) */ + 1, /* 18DAF (101807) */ + 1, /* 18DB0 (101808) */ + 1, /* 18DB1 (101809) */ + 1, /* 18DB2 (101810) */ + 1, /* 18DB3 (101811) */ + 1, /* 18DB4 (101812) */ + 1, /* 18DB5 (101813) */ + 1, /* 18DB6 (101814) */ + 1, /* 18DB7 (101815) */ + 1, /* 18DB8 (101816) */ + 1, /* 18DB9 (101817) */ + 1, /* 18DBA (101818) */ + 1, /* 18DBB (101819) */ + 1, /* 18DBC (101820) */ + 1, /* 18DBD (101821) */ + 1, /* 18DBE (101822) */ + 1, /* 18DBF (101823) */ + 1, /* 18DC0 (101824) */ + 1, /* 18DC1 (101825) */ + 1, /* 18DC2 (101826) */ + 1, /* 18DC3 (101827) */ + 1, /* 18DC4 (101828) */ + 1, /* 18DC5 (101829) */ + 1, /* 18DC6 (101830) */ + 1, /* 18DC7 (101831) */ + 1, /* 18DC8 (101832) */ + 1, /* 18DC9 (101833) */ + 1, /* 18DCA (101834) */ + 1, /* 18DCB (101835) */ + 1, /* 18DCC (101836) */ + 1, /* 18DCD (101837) */ + 1, /* 18DCE (101838) */ + 1, /* 18DCF (101839) */ + 1, /* 18DD0 (101840) */ + 1, /* 18DD1 (101841) */ + 1, /* 18DD2 (101842) */ + 1, /* 18DD3 (101843) */ + 1, /* 18DD4 (101844) */ + 1, /* 18DD5 (101845) */ + 1, /* 18DD6 (101846) */ + 1, /* 18DD7 (101847) */ + 1, /* 18DD8 (101848) */ + 1, /* 18DD9 (101849) */ + 1, /* 18DDA (101850) */ + 1, /* 18DDB (101851) */ + 1, /* 18DDC (101852) */ + 1, /* 18DDD (101853) */ + 1, /* 18DDE (101854) */ + 1, /* 18DDF (101855) */ + 1, /* 18DE0 (101856) */ + 1, /* 18DE1 (101857) */ + 1, /* 18DE2 (101858) */ + 1, /* 18DE3 (101859) */ + 1, /* 18DE4 (101860) */ + 1, /* 18DE5 (101861) */ + 1, /* 18DE6 (101862) */ + 1, /* 18DE7 (101863) */ + 1, /* 18DE8 (101864) */ + 1, /* 18DE9 (101865) */ + 1, /* 18DEA (101866) */ + 1, /* 18DEB (101867) */ + 1, /* 18DEC (101868) */ + 1, /* 18DED (101869) */ + 1, /* 18DEE (101870) */ + 1, /* 18DEF (101871) */ + 1, /* 18DF0 (101872) */ + 1, /* 18DF1 (101873) */ + 1, /* 18DF2 (101874) */ }; -/* From: 1AFF0; To: 323AF */ -static const uint32_t lxb_unicode_table_map_110576_205744[95168] = +/* From: 1AFF0; To: 33479 */ +static const uint32_t lxb_unicode_table_map_110576_210042[99466] = { 1, /* 1AFF0 (110576) */ 1, /* 1AFF1 (110577) */ @@ -95836,45 +96070,45 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1CCD3 (117971) */ 1, /* 1CCD4 (117972) */ 1, /* 1CCD5 (117973) */ - 5203, /* 1CCD6 (117974) */ + 5232, /* 1CCD6 (117974) */ 1755, /* 1CCD7 (117975) */ 1730, /* 1CCD8 (117976) */ 1773, /* 1CCD9 (117977) */ 1757, /* 1CCDA (117978) */ 1758, /* 1CCDB (117979) */ - 5204, /* 1CCDC (117980) */ + 5233, /* 1CCDC (117980) */ 1737, /* 1CCDD (117981) */ 1740, /* 1CCDE (117982) */ - 5205, /* 1CCDF (117983) */ - 5206, /* 1CCE0 (117984) */ + 5234, /* 1CCDF (117983) */ + 5235, /* 1CCE0 (117984) */ 1741, /* 1CCE1 (117985) */ 1760, /* 1CCE2 (117986) */ 1743, /* 1CCE3 (117987) */ - 5207, /* 1CCE4 (117988) */ + 5236, /* 1CCE4 (117988) */ 1745, /* 1CCE5 (117989) */ 1746, /* 1CCE6 (117990) */ 1747, /* 1CCE7 (117991) */ - 5208, /* 1CCE8 (117992) */ - 5209, /* 1CCE9 (117993) */ - 5210, /* 1CCEA (117994) */ - 5211, /* 1CCEB (117995) */ - 5212, /* 1CCEC (117996) */ - 5213, /* 1CCED (117997) */ - 5214, /* 1CCEE (117998) */ + 5237, /* 1CCE8 (117992) */ + 5238, /* 1CCE9 (117993) */ + 5239, /* 1CCEA (117994) */ + 5240, /* 1CCEB (117995) */ + 5241, /* 1CCEC (117996) */ + 5242, /* 1CCED (117997) */ + 5243, /* 1CCEE (117998) */ 1751, /* 1CCEF (117999) */ - 5215, /* 1CCF0 (118000) */ - 5216, /* 1CCF1 (118001) */ - 5217, /* 1CCF2 (118002) */ - 5218, /* 1CCF3 (118003) */ - 5219, /* 1CCF4 (118004) */ - 5220, /* 1CCF5 (118005) */ - 5221, /* 1CCF6 (118006) */ - 5222, /* 1CCF7 (118007) */ - 5223, /* 1CCF8 (118008) */ - 5224, /* 1CCF9 (118009) */ - 56, /* 1CCFA (118010) */ - 56, /* 1CCFB (118011) */ - 56, /* 1CCFC (118012) */ + 5244, /* 1CCF0 (118000) */ + 5245, /* 1CCF1 (118001) */ + 5246, /* 1CCF2 (118002) */ + 5247, /* 1CCF3 (118003) */ + 5248, /* 1CCF4 (118004) */ + 5249, /* 1CCF5 (118005) */ + 5250, /* 1CCF6 (118006) */ + 5251, /* 1CCF7 (118007) */ + 5252, /* 1CCF8 (118008) */ + 5253, /* 1CCF9 (118009) */ + 1, /* 1CCFA (118010) */ + 1, /* 1CCFB (118011) */ + 1, /* 1CCFC (118012) */ 56, /* 1CCFD (118013) */ 56, /* 1CCFE (118014) */ 56, /* 1CCFF (118015) */ @@ -96320,29 +96554,29 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1CEB7 (118455) */ 56, /* 1CEB8 (118456) */ 56, /* 1CEB9 (118457) */ - 56, /* 1CEBA (118458) */ - 56, /* 1CEBB (118459) */ - 56, /* 1CEBC (118460) */ - 56, /* 1CEBD (118461) */ - 56, /* 1CEBE (118462) */ - 56, /* 1CEBF (118463) */ - 56, /* 1CEC0 (118464) */ - 56, /* 1CEC1 (118465) */ - 56, /* 1CEC2 (118466) */ - 56, /* 1CEC3 (118467) */ - 56, /* 1CEC4 (118468) */ - 56, /* 1CEC5 (118469) */ - 56, /* 1CEC6 (118470) */ - 56, /* 1CEC7 (118471) */ - 56, /* 1CEC8 (118472) */ - 56, /* 1CEC9 (118473) */ - 56, /* 1CECA (118474) */ - 56, /* 1CECB (118475) */ - 56, /* 1CECC (118476) */ - 56, /* 1CECD (118477) */ - 56, /* 1CECE (118478) */ - 56, /* 1CECF (118479) */ - 56, /* 1CED0 (118480) */ + 1, /* 1CEBA (118458) */ + 1, /* 1CEBB (118459) */ + 1, /* 1CEBC (118460) */ + 1, /* 1CEBD (118461) */ + 1, /* 1CEBE (118462) */ + 1, /* 1CEBF (118463) */ + 1, /* 1CEC0 (118464) */ + 1, /* 1CEC1 (118465) */ + 1, /* 1CEC2 (118466) */ + 1, /* 1CEC3 (118467) */ + 1, /* 1CEC4 (118468) */ + 1, /* 1CEC5 (118469) */ + 1, /* 1CEC6 (118470) */ + 1, /* 1CEC7 (118471) */ + 1, /* 1CEC8 (118472) */ + 1, /* 1CEC9 (118473) */ + 1, /* 1CECA (118474) */ + 1, /* 1CECB (118475) */ + 1, /* 1CECC (118476) */ + 1, /* 1CECD (118477) */ + 1, /* 1CECE (118478) */ + 1, /* 1CECF (118479) */ + 1, /* 1CED0 (118480) */ 56, /* 1CED1 (118481) */ 56, /* 1CED2 (118482) */ 56, /* 1CED3 (118483) */ @@ -96358,23 +96592,23 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1CEDD (118493) */ 56, /* 1CEDE (118494) */ 56, /* 1CEDF (118495) */ - 56, /* 1CEE0 (118496) */ - 56, /* 1CEE1 (118497) */ - 56, /* 1CEE2 (118498) */ - 56, /* 1CEE3 (118499) */ - 56, /* 1CEE4 (118500) */ - 56, /* 1CEE5 (118501) */ - 56, /* 1CEE6 (118502) */ - 56, /* 1CEE7 (118503) */ - 56, /* 1CEE8 (118504) */ - 56, /* 1CEE9 (118505) */ - 56, /* 1CEEA (118506) */ - 56, /* 1CEEB (118507) */ - 56, /* 1CEEC (118508) */ - 56, /* 1CEED (118509) */ - 56, /* 1CEEE (118510) */ - 56, /* 1CEEF (118511) */ - 56, /* 1CEF0 (118512) */ + 1, /* 1CEE0 (118496) */ + 1, /* 1CEE1 (118497) */ + 1, /* 1CEE2 (118498) */ + 1, /* 1CEE3 (118499) */ + 1, /* 1CEE4 (118500) */ + 1, /* 1CEE5 (118501) */ + 1, /* 1CEE6 (118502) */ + 1, /* 1CEE7 (118503) */ + 1, /* 1CEE8 (118504) */ + 1, /* 1CEE9 (118505) */ + 1, /* 1CEEA (118506) */ + 1, /* 1CEEB (118507) */ + 1, /* 1CEEC (118508) */ + 1, /* 1CEED (118509) */ + 1, /* 1CEEE (118510) */ + 1, /* 1CEEF (118511) */ + 1, /* 1CEF0 (118512) */ 56, /* 1CEF1 (118513) */ 56, /* 1CEF2 (118514) */ 56, /* 1CEF3 (118515) */ @@ -96989,20 +97223,20 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1D154 (119124) */ 1, /* 1D155 (119125) */ 1, /* 1D156 (119126) */ - 5225, /* 1D157 (119127) */ - 5226, /* 1D158 (119128) */ + 5254, /* 1D157 (119127) */ + 5255, /* 1D158 (119128) */ 1, /* 1D159 (119129) */ 1, /* 1D15A (119130) */ 1, /* 1D15B (119131) */ 1, /* 1D15C (119132) */ 1, /* 1D15D (119133) */ - 5227, /* 1D15E (119134) */ - 5228, /* 1D15F (119135) */ - 5229, /* 1D160 (119136) */ - 5230, /* 1D161 (119137) */ - 5231, /* 1D162 (119138) */ - 5232, /* 1D163 (119139) */ - 5233, /* 1D164 (119140) */ + 5256, /* 1D15E (119134) */ + 5257, /* 1D15F (119135) */ + 5258, /* 1D160 (119136) */ + 5259, /* 1D161 (119137) */ + 5260, /* 1D162 (119138) */ + 5261, /* 1D163 (119139) */ + 5262, /* 1D164 (119140) */ 930, /* 1D165 (119141) */ 930, /* 1D166 (119142) */ 438, /* 1D167 (119143) */ @@ -97011,7 +97245,7 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1D16A (119146) */ 1, /* 1D16B (119147) */ 1, /* 1D16C (119148) */ - 5234, /* 1D16D (119149) */ + 5263, /* 1D16D (119149) */ 930, /* 1D16E (119150) */ 930, /* 1D16F (119151) */ 930, /* 1D170 (119152) */ @@ -97087,14 +97321,14 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1D1B6 (119222) */ 1, /* 1D1B7 (119223) */ 1, /* 1D1B8 (119224) */ - 5235, /* 1D1B9 (119225) */ - 5236, /* 1D1BA (119226) */ - 5237, /* 1D1BB (119227) */ - 5238, /* 1D1BC (119228) */ - 5239, /* 1D1BD (119229) */ - 5240, /* 1D1BE (119230) */ - 5241, /* 1D1BF (119231) */ - 5242, /* 1D1C0 (119232) */ + 5264, /* 1D1B9 (119225) */ + 5265, /* 1D1BA (119226) */ + 5266, /* 1D1BB (119227) */ + 5267, /* 1D1BC (119228) */ + 5268, /* 1D1BD (119229) */ + 5269, /* 1D1BE (119230) */ + 5270, /* 1D1BF (119231) */ + 5271, /* 1D1C0 (119232) */ 1, /* 1D1C1 (119233) */ 1, /* 1D1C2 (119234) */ 1, /* 1D1C3 (119235) */ @@ -97670,1030 +97904,1030 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1D3FD (119805) */ 56, /* 1D3FE (119806) */ 56, /* 1D3FF (119807) */ - 5203, /* 1D400 (119808) */ + 5232, /* 1D400 (119808) */ 1755, /* 1D401 (119809) */ 1730, /* 1D402 (119810) */ 1773, /* 1D403 (119811) */ 1757, /* 1D404 (119812) */ 1758, /* 1D405 (119813) */ - 5204, /* 1D406 (119814) */ + 5233, /* 1D406 (119814) */ 1737, /* 1D407 (119815) */ 1740, /* 1D408 (119816) */ - 5205, /* 1D409 (119817) */ - 5206, /* 1D40A (119818) */ + 5234, /* 1D409 (119817) */ + 5235, /* 1D40A (119818) */ 1741, /* 1D40B (119819) */ 1760, /* 1D40C (119820) */ 1743, /* 1D40D (119821) */ - 5207, /* 1D40E (119822) */ + 5236, /* 1D40E (119822) */ 1745, /* 1D40F (119823) */ 1746, /* 1D410 (119824) */ 1747, /* 1D411 (119825) */ - 5208, /* 1D412 (119826) */ - 5209, /* 1D413 (119827) */ - 5210, /* 1D414 (119828) */ - 5211, /* 1D415 (119829) */ - 5212, /* 1D416 (119830) */ - 5213, /* 1D417 (119831) */ - 5214, /* 1D418 (119832) */ + 5237, /* 1D412 (119826) */ + 5238, /* 1D413 (119827) */ + 5239, /* 1D414 (119828) */ + 5240, /* 1D415 (119829) */ + 5241, /* 1D416 (119830) */ + 5242, /* 1D417 (119831) */ + 5243, /* 1D418 (119832) */ 1751, /* 1D419 (119833) */ - 5243, /* 1D41A (119834) */ - 5244, /* 1D41B (119835) */ - 5245, /* 1D41C (119836) */ + 5272, /* 1D41A (119834) */ + 5273, /* 1D41B (119835) */ + 5274, /* 1D41C (119836) */ 1774, /* 1D41D (119837) */ 1756, /* 1D41E (119838) */ - 5246, /* 1D41F (119839) */ + 5275, /* 1D41F (119839) */ 1736, /* 1D420 (119840) */ 1738, /* 1D421 (119841) */ 1766, /* 1D422 (119842) */ 1775, /* 1D423 (119843) */ - 5247, /* 1D424 (119844) */ + 5276, /* 1D424 (119844) */ 1742, /* 1D425 (119845) */ - 5248, /* 1D426 (119846) */ - 5249, /* 1D427 (119847) */ + 5277, /* 1D426 (119846) */ + 5278, /* 1D427 (119847) */ 1761, /* 1D428 (119848) */ - 5250, /* 1D429 (119849) */ - 5251, /* 1D42A (119850) */ - 5252, /* 1D42B (119851) */ - 5253, /* 1D42C (119852) */ - 5254, /* 1D42D (119853) */ - 5255, /* 1D42E (119854) */ - 5256, /* 1D42F (119855) */ - 5257, /* 1D430 (119856) */ - 5258, /* 1D431 (119857) */ - 5259, /* 1D432 (119858) */ - 5260, /* 1D433 (119859) */ - 5203, /* 1D434 (119860) */ + 5279, /* 1D429 (119849) */ + 5280, /* 1D42A (119850) */ + 5281, /* 1D42B (119851) */ + 5282, /* 1D42C (119852) */ + 5283, /* 1D42D (119853) */ + 5284, /* 1D42E (119854) */ + 5285, /* 1D42F (119855) */ + 5286, /* 1D430 (119856) */ + 5287, /* 1D431 (119857) */ + 5288, /* 1D432 (119858) */ + 5289, /* 1D433 (119859) */ + 5232, /* 1D434 (119860) */ 1755, /* 1D435 (119861) */ 1730, /* 1D436 (119862) */ 1773, /* 1D437 (119863) */ 1757, /* 1D438 (119864) */ 1758, /* 1D439 (119865) */ - 5204, /* 1D43A (119866) */ + 5233, /* 1D43A (119866) */ 1737, /* 1D43B (119867) */ 1740, /* 1D43C (119868) */ - 5205, /* 1D43D (119869) */ - 5206, /* 1D43E (119870) */ + 5234, /* 1D43D (119869) */ + 5235, /* 1D43E (119870) */ 1741, /* 1D43F (119871) */ 1760, /* 1D440 (119872) */ 1743, /* 1D441 (119873) */ - 5207, /* 1D442 (119874) */ + 5236, /* 1D442 (119874) */ 1745, /* 1D443 (119875) */ 1746, /* 1D444 (119876) */ 1747, /* 1D445 (119877) */ - 5208, /* 1D446 (119878) */ - 5209, /* 1D447 (119879) */ - 5210, /* 1D448 (119880) */ - 5211, /* 1D449 (119881) */ - 5212, /* 1D44A (119882) */ - 5213, /* 1D44B (119883) */ - 5214, /* 1D44C (119884) */ + 5237, /* 1D446 (119878) */ + 5238, /* 1D447 (119879) */ + 5239, /* 1D448 (119880) */ + 5240, /* 1D449 (119881) */ + 5241, /* 1D44A (119882) */ + 5242, /* 1D44B (119883) */ + 5243, /* 1D44C (119884) */ 1751, /* 1D44D (119885) */ - 5243, /* 1D44E (119886) */ - 5244, /* 1D44F (119887) */ - 5245, /* 1D450 (119888) */ + 5272, /* 1D44E (119886) */ + 5273, /* 1D44F (119887) */ + 5274, /* 1D450 (119888) */ 1774, /* 1D451 (119889) */ 1756, /* 1D452 (119890) */ - 5246, /* 1D453 (119891) */ + 5275, /* 1D453 (119891) */ 1736, /* 1D454 (119892) */ 56, /* 1D455 (119893) */ 1766, /* 1D456 (119894) */ 1775, /* 1D457 (119895) */ - 5247, /* 1D458 (119896) */ + 5276, /* 1D458 (119896) */ 1742, /* 1D459 (119897) */ - 5248, /* 1D45A (119898) */ - 5249, /* 1D45B (119899) */ + 5277, /* 1D45A (119898) */ + 5278, /* 1D45B (119899) */ 1761, /* 1D45C (119900) */ - 5250, /* 1D45D (119901) */ - 5251, /* 1D45E (119902) */ - 5252, /* 1D45F (119903) */ - 5253, /* 1D460 (119904) */ - 5254, /* 1D461 (119905) */ - 5255, /* 1D462 (119906) */ - 5256, /* 1D463 (119907) */ - 5257, /* 1D464 (119908) */ - 5258, /* 1D465 (119909) */ - 5259, /* 1D466 (119910) */ - 5260, /* 1D467 (119911) */ - 5203, /* 1D468 (119912) */ + 5279, /* 1D45D (119901) */ + 5280, /* 1D45E (119902) */ + 5281, /* 1D45F (119903) */ + 5282, /* 1D460 (119904) */ + 5283, /* 1D461 (119905) */ + 5284, /* 1D462 (119906) */ + 5285, /* 1D463 (119907) */ + 5286, /* 1D464 (119908) */ + 5287, /* 1D465 (119909) */ + 5288, /* 1D466 (119910) */ + 5289, /* 1D467 (119911) */ + 5232, /* 1D468 (119912) */ 1755, /* 1D469 (119913) */ 1730, /* 1D46A (119914) */ 1773, /* 1D46B (119915) */ 1757, /* 1D46C (119916) */ 1758, /* 1D46D (119917) */ - 5204, /* 1D46E (119918) */ + 5233, /* 1D46E (119918) */ 1737, /* 1D46F (119919) */ 1740, /* 1D470 (119920) */ - 5205, /* 1D471 (119921) */ - 5206, /* 1D472 (119922) */ + 5234, /* 1D471 (119921) */ + 5235, /* 1D472 (119922) */ 1741, /* 1D473 (119923) */ 1760, /* 1D474 (119924) */ 1743, /* 1D475 (119925) */ - 5207, /* 1D476 (119926) */ + 5236, /* 1D476 (119926) */ 1745, /* 1D477 (119927) */ 1746, /* 1D478 (119928) */ 1747, /* 1D479 (119929) */ - 5208, /* 1D47A (119930) */ - 5209, /* 1D47B (119931) */ - 5210, /* 1D47C (119932) */ - 5211, /* 1D47D (119933) */ - 5212, /* 1D47E (119934) */ - 5213, /* 1D47F (119935) */ - 5214, /* 1D480 (119936) */ + 5237, /* 1D47A (119930) */ + 5238, /* 1D47B (119931) */ + 5239, /* 1D47C (119932) */ + 5240, /* 1D47D (119933) */ + 5241, /* 1D47E (119934) */ + 5242, /* 1D47F (119935) */ + 5243, /* 1D480 (119936) */ 1751, /* 1D481 (119937) */ - 5243, /* 1D482 (119938) */ - 5244, /* 1D483 (119939) */ - 5245, /* 1D484 (119940) */ + 5272, /* 1D482 (119938) */ + 5273, /* 1D483 (119939) */ + 5274, /* 1D484 (119940) */ 1774, /* 1D485 (119941) */ 1756, /* 1D486 (119942) */ - 5246, /* 1D487 (119943) */ + 5275, /* 1D487 (119943) */ 1736, /* 1D488 (119944) */ 1738, /* 1D489 (119945) */ 1766, /* 1D48A (119946) */ 1775, /* 1D48B (119947) */ - 5247, /* 1D48C (119948) */ + 5276, /* 1D48C (119948) */ 1742, /* 1D48D (119949) */ - 5248, /* 1D48E (119950) */ - 5249, /* 1D48F (119951) */ + 5277, /* 1D48E (119950) */ + 5278, /* 1D48F (119951) */ 1761, /* 1D490 (119952) */ - 5250, /* 1D491 (119953) */ - 5251, /* 1D492 (119954) */ - 5252, /* 1D493 (119955) */ - 5253, /* 1D494 (119956) */ - 5254, /* 1D495 (119957) */ - 5255, /* 1D496 (119958) */ - 5256, /* 1D497 (119959) */ - 5257, /* 1D498 (119960) */ - 5258, /* 1D499 (119961) */ - 5259, /* 1D49A (119962) */ - 5260, /* 1D49B (119963) */ - 5203, /* 1D49C (119964) */ + 5279, /* 1D491 (119953) */ + 5280, /* 1D492 (119954) */ + 5281, /* 1D493 (119955) */ + 5282, /* 1D494 (119956) */ + 5283, /* 1D495 (119957) */ + 5284, /* 1D496 (119958) */ + 5285, /* 1D497 (119959) */ + 5286, /* 1D498 (119960) */ + 5287, /* 1D499 (119961) */ + 5288, /* 1D49A (119962) */ + 5289, /* 1D49B (119963) */ + 5232, /* 1D49C (119964) */ 56, /* 1D49D (119965) */ 1730, /* 1D49E (119966) */ 1773, /* 1D49F (119967) */ 56, /* 1D4A0 (119968) */ 56, /* 1D4A1 (119969) */ - 5204, /* 1D4A2 (119970) */ + 5233, /* 1D4A2 (119970) */ 56, /* 1D4A3 (119971) */ 56, /* 1D4A4 (119972) */ - 5205, /* 1D4A5 (119973) */ - 5206, /* 1D4A6 (119974) */ + 5234, /* 1D4A5 (119973) */ + 5235, /* 1D4A6 (119974) */ 56, /* 1D4A7 (119975) */ 56, /* 1D4A8 (119976) */ 1743, /* 1D4A9 (119977) */ - 5207, /* 1D4AA (119978) */ + 5236, /* 1D4AA (119978) */ 1745, /* 1D4AB (119979) */ 1746, /* 1D4AC (119980) */ 56, /* 1D4AD (119981) */ - 5208, /* 1D4AE (119982) */ - 5209, /* 1D4AF (119983) */ - 5210, /* 1D4B0 (119984) */ - 5211, /* 1D4B1 (119985) */ - 5212, /* 1D4B2 (119986) */ - 5213, /* 1D4B3 (119987) */ - 5214, /* 1D4B4 (119988) */ + 5237, /* 1D4AE (119982) */ + 5238, /* 1D4AF (119983) */ + 5239, /* 1D4B0 (119984) */ + 5240, /* 1D4B1 (119985) */ + 5241, /* 1D4B2 (119986) */ + 5242, /* 1D4B3 (119987) */ + 5243, /* 1D4B4 (119988) */ 1751, /* 1D4B5 (119989) */ - 5243, /* 1D4B6 (119990) */ - 5244, /* 1D4B7 (119991) */ - 5245, /* 1D4B8 (119992) */ + 5272, /* 1D4B6 (119990) */ + 5273, /* 1D4B7 (119991) */ + 5274, /* 1D4B8 (119992) */ 1774, /* 1D4B9 (119993) */ 56, /* 1D4BA (119994) */ - 5246, /* 1D4BB (119995) */ + 5275, /* 1D4BB (119995) */ 56, /* 1D4BC (119996) */ 1738, /* 1D4BD (119997) */ 1766, /* 1D4BE (119998) */ 1775, /* 1D4BF (119999) */ - 5247, /* 1D4C0 (120000) */ + 5276, /* 1D4C0 (120000) */ 1742, /* 1D4C1 (120001) */ - 5248, /* 1D4C2 (120002) */ - 5249, /* 1D4C3 (120003) */ + 5277, /* 1D4C2 (120002) */ + 5278, /* 1D4C3 (120003) */ 56, /* 1D4C4 (120004) */ - 5250, /* 1D4C5 (120005) */ - 5251, /* 1D4C6 (120006) */ - 5252, /* 1D4C7 (120007) */ - 5253, /* 1D4C8 (120008) */ - 5254, /* 1D4C9 (120009) */ - 5255, /* 1D4CA (120010) */ - 5256, /* 1D4CB (120011) */ - 5257, /* 1D4CC (120012) */ - 5258, /* 1D4CD (120013) */ - 5259, /* 1D4CE (120014) */ - 5260, /* 1D4CF (120015) */ - 5203, /* 1D4D0 (120016) */ + 5279, /* 1D4C5 (120005) */ + 5280, /* 1D4C6 (120006) */ + 5281, /* 1D4C7 (120007) */ + 5282, /* 1D4C8 (120008) */ + 5283, /* 1D4C9 (120009) */ + 5284, /* 1D4CA (120010) */ + 5285, /* 1D4CB (120011) */ + 5286, /* 1D4CC (120012) */ + 5287, /* 1D4CD (120013) */ + 5288, /* 1D4CE (120014) */ + 5289, /* 1D4CF (120015) */ + 5232, /* 1D4D0 (120016) */ 1755, /* 1D4D1 (120017) */ 1730, /* 1D4D2 (120018) */ 1773, /* 1D4D3 (120019) */ 1757, /* 1D4D4 (120020) */ 1758, /* 1D4D5 (120021) */ - 5204, /* 1D4D6 (120022) */ + 5233, /* 1D4D6 (120022) */ 1737, /* 1D4D7 (120023) */ 1740, /* 1D4D8 (120024) */ - 5205, /* 1D4D9 (120025) */ - 5206, /* 1D4DA (120026) */ + 5234, /* 1D4D9 (120025) */ + 5235, /* 1D4DA (120026) */ 1741, /* 1D4DB (120027) */ 1760, /* 1D4DC (120028) */ 1743, /* 1D4DD (120029) */ - 5207, /* 1D4DE (120030) */ + 5236, /* 1D4DE (120030) */ 1745, /* 1D4DF (120031) */ 1746, /* 1D4E0 (120032) */ 1747, /* 1D4E1 (120033) */ - 5208, /* 1D4E2 (120034) */ - 5209, /* 1D4E3 (120035) */ - 5210, /* 1D4E4 (120036) */ - 5211, /* 1D4E5 (120037) */ - 5212, /* 1D4E6 (120038) */ - 5213, /* 1D4E7 (120039) */ - 5214, /* 1D4E8 (120040) */ + 5237, /* 1D4E2 (120034) */ + 5238, /* 1D4E3 (120035) */ + 5239, /* 1D4E4 (120036) */ + 5240, /* 1D4E5 (120037) */ + 5241, /* 1D4E6 (120038) */ + 5242, /* 1D4E7 (120039) */ + 5243, /* 1D4E8 (120040) */ 1751, /* 1D4E9 (120041) */ - 5243, /* 1D4EA (120042) */ - 5244, /* 1D4EB (120043) */ - 5245, /* 1D4EC (120044) */ + 5272, /* 1D4EA (120042) */ + 5273, /* 1D4EB (120043) */ + 5274, /* 1D4EC (120044) */ 1774, /* 1D4ED (120045) */ 1756, /* 1D4EE (120046) */ - 5246, /* 1D4EF (120047) */ + 5275, /* 1D4EF (120047) */ 1736, /* 1D4F0 (120048) */ 1738, /* 1D4F1 (120049) */ 1766, /* 1D4F2 (120050) */ 1775, /* 1D4F3 (120051) */ - 5247, /* 1D4F4 (120052) */ + 5276, /* 1D4F4 (120052) */ 1742, /* 1D4F5 (120053) */ - 5248, /* 1D4F6 (120054) */ - 5249, /* 1D4F7 (120055) */ + 5277, /* 1D4F6 (120054) */ + 5278, /* 1D4F7 (120055) */ 1761, /* 1D4F8 (120056) */ - 5250, /* 1D4F9 (120057) */ - 5251, /* 1D4FA (120058) */ - 5252, /* 1D4FB (120059) */ - 5253, /* 1D4FC (120060) */ - 5254, /* 1D4FD (120061) */ - 5255, /* 1D4FE (120062) */ - 5256, /* 1D4FF (120063) */ - 5257, /* 1D500 (120064) */ - 5258, /* 1D501 (120065) */ - 5259, /* 1D502 (120066) */ - 5260, /* 1D503 (120067) */ - 5203, /* 1D504 (120068) */ + 5279, /* 1D4F9 (120057) */ + 5280, /* 1D4FA (120058) */ + 5281, /* 1D4FB (120059) */ + 5282, /* 1D4FC (120060) */ + 5283, /* 1D4FD (120061) */ + 5284, /* 1D4FE (120062) */ + 5285, /* 1D4FF (120063) */ + 5286, /* 1D500 (120064) */ + 5287, /* 1D501 (120065) */ + 5288, /* 1D502 (120066) */ + 5289, /* 1D503 (120067) */ + 5232, /* 1D504 (120068) */ 1755, /* 1D505 (120069) */ 56, /* 1D506 (120070) */ 1773, /* 1D507 (120071) */ 1757, /* 1D508 (120072) */ 1758, /* 1D509 (120073) */ - 5204, /* 1D50A (120074) */ + 5233, /* 1D50A (120074) */ 56, /* 1D50B (120075) */ 56, /* 1D50C (120076) */ - 5205, /* 1D50D (120077) */ - 5206, /* 1D50E (120078) */ + 5234, /* 1D50D (120077) */ + 5235, /* 1D50E (120078) */ 1741, /* 1D50F (120079) */ 1760, /* 1D510 (120080) */ 1743, /* 1D511 (120081) */ - 5207, /* 1D512 (120082) */ + 5236, /* 1D512 (120082) */ 1745, /* 1D513 (120083) */ 1746, /* 1D514 (120084) */ 56, /* 1D515 (120085) */ - 5208, /* 1D516 (120086) */ - 5209, /* 1D517 (120087) */ - 5210, /* 1D518 (120088) */ - 5211, /* 1D519 (120089) */ - 5212, /* 1D51A (120090) */ - 5213, /* 1D51B (120091) */ - 5214, /* 1D51C (120092) */ + 5237, /* 1D516 (120086) */ + 5238, /* 1D517 (120087) */ + 5239, /* 1D518 (120088) */ + 5240, /* 1D519 (120089) */ + 5241, /* 1D51A (120090) */ + 5242, /* 1D51B (120091) */ + 5243, /* 1D51C (120092) */ 56, /* 1D51D (120093) */ - 5243, /* 1D51E (120094) */ - 5244, /* 1D51F (120095) */ - 5245, /* 1D520 (120096) */ + 5272, /* 1D51E (120094) */ + 5273, /* 1D51F (120095) */ + 5274, /* 1D520 (120096) */ 1774, /* 1D521 (120097) */ 1756, /* 1D522 (120098) */ - 5246, /* 1D523 (120099) */ + 5275, /* 1D523 (120099) */ 1736, /* 1D524 (120100) */ 1738, /* 1D525 (120101) */ 1766, /* 1D526 (120102) */ 1775, /* 1D527 (120103) */ - 5247, /* 1D528 (120104) */ + 5276, /* 1D528 (120104) */ 1742, /* 1D529 (120105) */ - 5248, /* 1D52A (120106) */ - 5249, /* 1D52B (120107) */ + 5277, /* 1D52A (120106) */ + 5278, /* 1D52B (120107) */ 1761, /* 1D52C (120108) */ - 5250, /* 1D52D (120109) */ - 5251, /* 1D52E (120110) */ - 5252, /* 1D52F (120111) */ - 5253, /* 1D530 (120112) */ - 5254, /* 1D531 (120113) */ - 5255, /* 1D532 (120114) */ - 5256, /* 1D533 (120115) */ - 5257, /* 1D534 (120116) */ - 5258, /* 1D535 (120117) */ - 5259, /* 1D536 (120118) */ - 5260, /* 1D537 (120119) */ - 5203, /* 1D538 (120120) */ + 5279, /* 1D52D (120109) */ + 5280, /* 1D52E (120110) */ + 5281, /* 1D52F (120111) */ + 5282, /* 1D530 (120112) */ + 5283, /* 1D531 (120113) */ + 5284, /* 1D532 (120114) */ + 5285, /* 1D533 (120115) */ + 5286, /* 1D534 (120116) */ + 5287, /* 1D535 (120117) */ + 5288, /* 1D536 (120118) */ + 5289, /* 1D537 (120119) */ + 5232, /* 1D538 (120120) */ 1755, /* 1D539 (120121) */ 56, /* 1D53A (120122) */ 1773, /* 1D53B (120123) */ 1757, /* 1D53C (120124) */ 1758, /* 1D53D (120125) */ - 5204, /* 1D53E (120126) */ + 5233, /* 1D53E (120126) */ 56, /* 1D53F (120127) */ 1740, /* 1D540 (120128) */ - 5205, /* 1D541 (120129) */ - 5206, /* 1D542 (120130) */ + 5234, /* 1D541 (120129) */ + 5235, /* 1D542 (120130) */ 1741, /* 1D543 (120131) */ 1760, /* 1D544 (120132) */ 56, /* 1D545 (120133) */ - 5207, /* 1D546 (120134) */ + 5236, /* 1D546 (120134) */ 56, /* 1D547 (120135) */ 56, /* 1D548 (120136) */ 56, /* 1D549 (120137) */ - 5208, /* 1D54A (120138) */ - 5209, /* 1D54B (120139) */ - 5210, /* 1D54C (120140) */ - 5211, /* 1D54D (120141) */ - 5212, /* 1D54E (120142) */ - 5213, /* 1D54F (120143) */ - 5214, /* 1D550 (120144) */ + 5237, /* 1D54A (120138) */ + 5238, /* 1D54B (120139) */ + 5239, /* 1D54C (120140) */ + 5240, /* 1D54D (120141) */ + 5241, /* 1D54E (120142) */ + 5242, /* 1D54F (120143) */ + 5243, /* 1D550 (120144) */ 56, /* 1D551 (120145) */ - 5243, /* 1D552 (120146) */ - 5244, /* 1D553 (120147) */ - 5245, /* 1D554 (120148) */ + 5272, /* 1D552 (120146) */ + 5273, /* 1D553 (120147) */ + 5274, /* 1D554 (120148) */ 1774, /* 1D555 (120149) */ 1756, /* 1D556 (120150) */ - 5246, /* 1D557 (120151) */ + 5275, /* 1D557 (120151) */ 1736, /* 1D558 (120152) */ 1738, /* 1D559 (120153) */ 1766, /* 1D55A (120154) */ 1775, /* 1D55B (120155) */ - 5247, /* 1D55C (120156) */ + 5276, /* 1D55C (120156) */ 1742, /* 1D55D (120157) */ - 5248, /* 1D55E (120158) */ - 5249, /* 1D55F (120159) */ + 5277, /* 1D55E (120158) */ + 5278, /* 1D55F (120159) */ 1761, /* 1D560 (120160) */ - 5250, /* 1D561 (120161) */ - 5251, /* 1D562 (120162) */ - 5252, /* 1D563 (120163) */ - 5253, /* 1D564 (120164) */ - 5254, /* 1D565 (120165) */ - 5255, /* 1D566 (120166) */ - 5256, /* 1D567 (120167) */ - 5257, /* 1D568 (120168) */ - 5258, /* 1D569 (120169) */ - 5259, /* 1D56A (120170) */ - 5260, /* 1D56B (120171) */ - 5203, /* 1D56C (120172) */ + 5279, /* 1D561 (120161) */ + 5280, /* 1D562 (120162) */ + 5281, /* 1D563 (120163) */ + 5282, /* 1D564 (120164) */ + 5283, /* 1D565 (120165) */ + 5284, /* 1D566 (120166) */ + 5285, /* 1D567 (120167) */ + 5286, /* 1D568 (120168) */ + 5287, /* 1D569 (120169) */ + 5288, /* 1D56A (120170) */ + 5289, /* 1D56B (120171) */ + 5232, /* 1D56C (120172) */ 1755, /* 1D56D (120173) */ 1730, /* 1D56E (120174) */ 1773, /* 1D56F (120175) */ 1757, /* 1D570 (120176) */ 1758, /* 1D571 (120177) */ - 5204, /* 1D572 (120178) */ + 5233, /* 1D572 (120178) */ 1737, /* 1D573 (120179) */ 1740, /* 1D574 (120180) */ - 5205, /* 1D575 (120181) */ - 5206, /* 1D576 (120182) */ + 5234, /* 1D575 (120181) */ + 5235, /* 1D576 (120182) */ 1741, /* 1D577 (120183) */ 1760, /* 1D578 (120184) */ 1743, /* 1D579 (120185) */ - 5207, /* 1D57A (120186) */ + 5236, /* 1D57A (120186) */ 1745, /* 1D57B (120187) */ 1746, /* 1D57C (120188) */ 1747, /* 1D57D (120189) */ - 5208, /* 1D57E (120190) */ - 5209, /* 1D57F (120191) */ - 5210, /* 1D580 (120192) */ - 5211, /* 1D581 (120193) */ - 5212, /* 1D582 (120194) */ - 5213, /* 1D583 (120195) */ - 5214, /* 1D584 (120196) */ + 5237, /* 1D57E (120190) */ + 5238, /* 1D57F (120191) */ + 5239, /* 1D580 (120192) */ + 5240, /* 1D581 (120193) */ + 5241, /* 1D582 (120194) */ + 5242, /* 1D583 (120195) */ + 5243, /* 1D584 (120196) */ 1751, /* 1D585 (120197) */ - 5243, /* 1D586 (120198) */ - 5244, /* 1D587 (120199) */ - 5245, /* 1D588 (120200) */ + 5272, /* 1D586 (120198) */ + 5273, /* 1D587 (120199) */ + 5274, /* 1D588 (120200) */ 1774, /* 1D589 (120201) */ 1756, /* 1D58A (120202) */ - 5246, /* 1D58B (120203) */ + 5275, /* 1D58B (120203) */ 1736, /* 1D58C (120204) */ 1738, /* 1D58D (120205) */ 1766, /* 1D58E (120206) */ 1775, /* 1D58F (120207) */ - 5247, /* 1D590 (120208) */ + 5276, /* 1D590 (120208) */ 1742, /* 1D591 (120209) */ - 5248, /* 1D592 (120210) */ - 5249, /* 1D593 (120211) */ + 5277, /* 1D592 (120210) */ + 5278, /* 1D593 (120211) */ 1761, /* 1D594 (120212) */ - 5250, /* 1D595 (120213) */ - 5251, /* 1D596 (120214) */ - 5252, /* 1D597 (120215) */ - 5253, /* 1D598 (120216) */ - 5254, /* 1D599 (120217) */ - 5255, /* 1D59A (120218) */ - 5256, /* 1D59B (120219) */ - 5257, /* 1D59C (120220) */ - 5258, /* 1D59D (120221) */ - 5259, /* 1D59E (120222) */ - 5260, /* 1D59F (120223) */ - 5203, /* 1D5A0 (120224) */ + 5279, /* 1D595 (120213) */ + 5280, /* 1D596 (120214) */ + 5281, /* 1D597 (120215) */ + 5282, /* 1D598 (120216) */ + 5283, /* 1D599 (120217) */ + 5284, /* 1D59A (120218) */ + 5285, /* 1D59B (120219) */ + 5286, /* 1D59C (120220) */ + 5287, /* 1D59D (120221) */ + 5288, /* 1D59E (120222) */ + 5289, /* 1D59F (120223) */ + 5232, /* 1D5A0 (120224) */ 1755, /* 1D5A1 (120225) */ 1730, /* 1D5A2 (120226) */ 1773, /* 1D5A3 (120227) */ 1757, /* 1D5A4 (120228) */ 1758, /* 1D5A5 (120229) */ - 5204, /* 1D5A6 (120230) */ + 5233, /* 1D5A6 (120230) */ 1737, /* 1D5A7 (120231) */ 1740, /* 1D5A8 (120232) */ - 5205, /* 1D5A9 (120233) */ - 5206, /* 1D5AA (120234) */ + 5234, /* 1D5A9 (120233) */ + 5235, /* 1D5AA (120234) */ 1741, /* 1D5AB (120235) */ 1760, /* 1D5AC (120236) */ 1743, /* 1D5AD (120237) */ - 5207, /* 1D5AE (120238) */ + 5236, /* 1D5AE (120238) */ 1745, /* 1D5AF (120239) */ 1746, /* 1D5B0 (120240) */ 1747, /* 1D5B1 (120241) */ - 5208, /* 1D5B2 (120242) */ - 5209, /* 1D5B3 (120243) */ - 5210, /* 1D5B4 (120244) */ - 5211, /* 1D5B5 (120245) */ - 5212, /* 1D5B6 (120246) */ - 5213, /* 1D5B7 (120247) */ - 5214, /* 1D5B8 (120248) */ + 5237, /* 1D5B2 (120242) */ + 5238, /* 1D5B3 (120243) */ + 5239, /* 1D5B4 (120244) */ + 5240, /* 1D5B5 (120245) */ + 5241, /* 1D5B6 (120246) */ + 5242, /* 1D5B7 (120247) */ + 5243, /* 1D5B8 (120248) */ 1751, /* 1D5B9 (120249) */ - 5243, /* 1D5BA (120250) */ - 5244, /* 1D5BB (120251) */ - 5245, /* 1D5BC (120252) */ + 5272, /* 1D5BA (120250) */ + 5273, /* 1D5BB (120251) */ + 5274, /* 1D5BC (120252) */ 1774, /* 1D5BD (120253) */ 1756, /* 1D5BE (120254) */ - 5246, /* 1D5BF (120255) */ + 5275, /* 1D5BF (120255) */ 1736, /* 1D5C0 (120256) */ 1738, /* 1D5C1 (120257) */ 1766, /* 1D5C2 (120258) */ 1775, /* 1D5C3 (120259) */ - 5247, /* 1D5C4 (120260) */ + 5276, /* 1D5C4 (120260) */ 1742, /* 1D5C5 (120261) */ - 5248, /* 1D5C6 (120262) */ - 5249, /* 1D5C7 (120263) */ + 5277, /* 1D5C6 (120262) */ + 5278, /* 1D5C7 (120263) */ 1761, /* 1D5C8 (120264) */ - 5250, /* 1D5C9 (120265) */ - 5251, /* 1D5CA (120266) */ - 5252, /* 1D5CB (120267) */ - 5253, /* 1D5CC (120268) */ - 5254, /* 1D5CD (120269) */ - 5255, /* 1D5CE (120270) */ - 5256, /* 1D5CF (120271) */ - 5257, /* 1D5D0 (120272) */ - 5258, /* 1D5D1 (120273) */ - 5259, /* 1D5D2 (120274) */ - 5260, /* 1D5D3 (120275) */ - 5203, /* 1D5D4 (120276) */ + 5279, /* 1D5C9 (120265) */ + 5280, /* 1D5CA (120266) */ + 5281, /* 1D5CB (120267) */ + 5282, /* 1D5CC (120268) */ + 5283, /* 1D5CD (120269) */ + 5284, /* 1D5CE (120270) */ + 5285, /* 1D5CF (120271) */ + 5286, /* 1D5D0 (120272) */ + 5287, /* 1D5D1 (120273) */ + 5288, /* 1D5D2 (120274) */ + 5289, /* 1D5D3 (120275) */ + 5232, /* 1D5D4 (120276) */ 1755, /* 1D5D5 (120277) */ 1730, /* 1D5D6 (120278) */ 1773, /* 1D5D7 (120279) */ 1757, /* 1D5D8 (120280) */ 1758, /* 1D5D9 (120281) */ - 5204, /* 1D5DA (120282) */ + 5233, /* 1D5DA (120282) */ 1737, /* 1D5DB (120283) */ 1740, /* 1D5DC (120284) */ - 5205, /* 1D5DD (120285) */ - 5206, /* 1D5DE (120286) */ + 5234, /* 1D5DD (120285) */ + 5235, /* 1D5DE (120286) */ 1741, /* 1D5DF (120287) */ 1760, /* 1D5E0 (120288) */ 1743, /* 1D5E1 (120289) */ - 5207, /* 1D5E2 (120290) */ + 5236, /* 1D5E2 (120290) */ 1745, /* 1D5E3 (120291) */ 1746, /* 1D5E4 (120292) */ 1747, /* 1D5E5 (120293) */ - 5208, /* 1D5E6 (120294) */ - 5209, /* 1D5E7 (120295) */ - 5210, /* 1D5E8 (120296) */ - 5211, /* 1D5E9 (120297) */ - 5212, /* 1D5EA (120298) */ - 5213, /* 1D5EB (120299) */ - 5214, /* 1D5EC (120300) */ + 5237, /* 1D5E6 (120294) */ + 5238, /* 1D5E7 (120295) */ + 5239, /* 1D5E8 (120296) */ + 5240, /* 1D5E9 (120297) */ + 5241, /* 1D5EA (120298) */ + 5242, /* 1D5EB (120299) */ + 5243, /* 1D5EC (120300) */ 1751, /* 1D5ED (120301) */ - 5243, /* 1D5EE (120302) */ - 5244, /* 1D5EF (120303) */ - 5245, /* 1D5F0 (120304) */ + 5272, /* 1D5EE (120302) */ + 5273, /* 1D5EF (120303) */ + 5274, /* 1D5F0 (120304) */ 1774, /* 1D5F1 (120305) */ 1756, /* 1D5F2 (120306) */ - 5246, /* 1D5F3 (120307) */ + 5275, /* 1D5F3 (120307) */ 1736, /* 1D5F4 (120308) */ 1738, /* 1D5F5 (120309) */ 1766, /* 1D5F6 (120310) */ 1775, /* 1D5F7 (120311) */ - 5247, /* 1D5F8 (120312) */ + 5276, /* 1D5F8 (120312) */ 1742, /* 1D5F9 (120313) */ - 5248, /* 1D5FA (120314) */ - 5249, /* 1D5FB (120315) */ + 5277, /* 1D5FA (120314) */ + 5278, /* 1D5FB (120315) */ 1761, /* 1D5FC (120316) */ - 5250, /* 1D5FD (120317) */ - 5251, /* 1D5FE (120318) */ - 5252, /* 1D5FF (120319) */ - 5253, /* 1D600 (120320) */ - 5254, /* 1D601 (120321) */ - 5255, /* 1D602 (120322) */ - 5256, /* 1D603 (120323) */ - 5257, /* 1D604 (120324) */ - 5258, /* 1D605 (120325) */ - 5259, /* 1D606 (120326) */ - 5260, /* 1D607 (120327) */ - 5203, /* 1D608 (120328) */ + 5279, /* 1D5FD (120317) */ + 5280, /* 1D5FE (120318) */ + 5281, /* 1D5FF (120319) */ + 5282, /* 1D600 (120320) */ + 5283, /* 1D601 (120321) */ + 5284, /* 1D602 (120322) */ + 5285, /* 1D603 (120323) */ + 5286, /* 1D604 (120324) */ + 5287, /* 1D605 (120325) */ + 5288, /* 1D606 (120326) */ + 5289, /* 1D607 (120327) */ + 5232, /* 1D608 (120328) */ 1755, /* 1D609 (120329) */ 1730, /* 1D60A (120330) */ 1773, /* 1D60B (120331) */ 1757, /* 1D60C (120332) */ 1758, /* 1D60D (120333) */ - 5204, /* 1D60E (120334) */ + 5233, /* 1D60E (120334) */ 1737, /* 1D60F (120335) */ 1740, /* 1D610 (120336) */ - 5205, /* 1D611 (120337) */ - 5206, /* 1D612 (120338) */ + 5234, /* 1D611 (120337) */ + 5235, /* 1D612 (120338) */ 1741, /* 1D613 (120339) */ 1760, /* 1D614 (120340) */ 1743, /* 1D615 (120341) */ - 5207, /* 1D616 (120342) */ + 5236, /* 1D616 (120342) */ 1745, /* 1D617 (120343) */ 1746, /* 1D618 (120344) */ 1747, /* 1D619 (120345) */ - 5208, /* 1D61A (120346) */ - 5209, /* 1D61B (120347) */ - 5210, /* 1D61C (120348) */ - 5211, /* 1D61D (120349) */ - 5212, /* 1D61E (120350) */ - 5213, /* 1D61F (120351) */ - 5214, /* 1D620 (120352) */ + 5237, /* 1D61A (120346) */ + 5238, /* 1D61B (120347) */ + 5239, /* 1D61C (120348) */ + 5240, /* 1D61D (120349) */ + 5241, /* 1D61E (120350) */ + 5242, /* 1D61F (120351) */ + 5243, /* 1D620 (120352) */ 1751, /* 1D621 (120353) */ - 5243, /* 1D622 (120354) */ - 5244, /* 1D623 (120355) */ - 5245, /* 1D624 (120356) */ + 5272, /* 1D622 (120354) */ + 5273, /* 1D623 (120355) */ + 5274, /* 1D624 (120356) */ 1774, /* 1D625 (120357) */ 1756, /* 1D626 (120358) */ - 5246, /* 1D627 (120359) */ + 5275, /* 1D627 (120359) */ 1736, /* 1D628 (120360) */ 1738, /* 1D629 (120361) */ 1766, /* 1D62A (120362) */ 1775, /* 1D62B (120363) */ - 5247, /* 1D62C (120364) */ + 5276, /* 1D62C (120364) */ 1742, /* 1D62D (120365) */ - 5248, /* 1D62E (120366) */ - 5249, /* 1D62F (120367) */ + 5277, /* 1D62E (120366) */ + 5278, /* 1D62F (120367) */ 1761, /* 1D630 (120368) */ - 5250, /* 1D631 (120369) */ - 5251, /* 1D632 (120370) */ - 5252, /* 1D633 (120371) */ - 5253, /* 1D634 (120372) */ - 5254, /* 1D635 (120373) */ - 5255, /* 1D636 (120374) */ - 5256, /* 1D637 (120375) */ - 5257, /* 1D638 (120376) */ - 5258, /* 1D639 (120377) */ - 5259, /* 1D63A (120378) */ - 5260, /* 1D63B (120379) */ - 5203, /* 1D63C (120380) */ + 5279, /* 1D631 (120369) */ + 5280, /* 1D632 (120370) */ + 5281, /* 1D633 (120371) */ + 5282, /* 1D634 (120372) */ + 5283, /* 1D635 (120373) */ + 5284, /* 1D636 (120374) */ + 5285, /* 1D637 (120375) */ + 5286, /* 1D638 (120376) */ + 5287, /* 1D639 (120377) */ + 5288, /* 1D63A (120378) */ + 5289, /* 1D63B (120379) */ + 5232, /* 1D63C (120380) */ 1755, /* 1D63D (120381) */ 1730, /* 1D63E (120382) */ 1773, /* 1D63F (120383) */ 1757, /* 1D640 (120384) */ 1758, /* 1D641 (120385) */ - 5204, /* 1D642 (120386) */ + 5233, /* 1D642 (120386) */ 1737, /* 1D643 (120387) */ 1740, /* 1D644 (120388) */ - 5205, /* 1D645 (120389) */ - 5206, /* 1D646 (120390) */ + 5234, /* 1D645 (120389) */ + 5235, /* 1D646 (120390) */ 1741, /* 1D647 (120391) */ 1760, /* 1D648 (120392) */ 1743, /* 1D649 (120393) */ - 5207, /* 1D64A (120394) */ + 5236, /* 1D64A (120394) */ 1745, /* 1D64B (120395) */ 1746, /* 1D64C (120396) */ 1747, /* 1D64D (120397) */ - 5208, /* 1D64E (120398) */ - 5209, /* 1D64F (120399) */ - 5210, /* 1D650 (120400) */ - 5211, /* 1D651 (120401) */ - 5212, /* 1D652 (120402) */ - 5213, /* 1D653 (120403) */ - 5214, /* 1D654 (120404) */ + 5237, /* 1D64E (120398) */ + 5238, /* 1D64F (120399) */ + 5239, /* 1D650 (120400) */ + 5240, /* 1D651 (120401) */ + 5241, /* 1D652 (120402) */ + 5242, /* 1D653 (120403) */ + 5243, /* 1D654 (120404) */ 1751, /* 1D655 (120405) */ - 5243, /* 1D656 (120406) */ - 5244, /* 1D657 (120407) */ - 5245, /* 1D658 (120408) */ + 5272, /* 1D656 (120406) */ + 5273, /* 1D657 (120407) */ + 5274, /* 1D658 (120408) */ 1774, /* 1D659 (120409) */ 1756, /* 1D65A (120410) */ - 5246, /* 1D65B (120411) */ + 5275, /* 1D65B (120411) */ 1736, /* 1D65C (120412) */ 1738, /* 1D65D (120413) */ 1766, /* 1D65E (120414) */ 1775, /* 1D65F (120415) */ - 5247, /* 1D660 (120416) */ + 5276, /* 1D660 (120416) */ 1742, /* 1D661 (120417) */ - 5248, /* 1D662 (120418) */ - 5249, /* 1D663 (120419) */ + 5277, /* 1D662 (120418) */ + 5278, /* 1D663 (120419) */ 1761, /* 1D664 (120420) */ - 5250, /* 1D665 (120421) */ - 5251, /* 1D666 (120422) */ - 5252, /* 1D667 (120423) */ - 5253, /* 1D668 (120424) */ - 5254, /* 1D669 (120425) */ - 5255, /* 1D66A (120426) */ - 5256, /* 1D66B (120427) */ - 5257, /* 1D66C (120428) */ - 5258, /* 1D66D (120429) */ - 5259, /* 1D66E (120430) */ - 5260, /* 1D66F (120431) */ - 5203, /* 1D670 (120432) */ + 5279, /* 1D665 (120421) */ + 5280, /* 1D666 (120422) */ + 5281, /* 1D667 (120423) */ + 5282, /* 1D668 (120424) */ + 5283, /* 1D669 (120425) */ + 5284, /* 1D66A (120426) */ + 5285, /* 1D66B (120427) */ + 5286, /* 1D66C (120428) */ + 5287, /* 1D66D (120429) */ + 5288, /* 1D66E (120430) */ + 5289, /* 1D66F (120431) */ + 5232, /* 1D670 (120432) */ 1755, /* 1D671 (120433) */ 1730, /* 1D672 (120434) */ 1773, /* 1D673 (120435) */ 1757, /* 1D674 (120436) */ 1758, /* 1D675 (120437) */ - 5204, /* 1D676 (120438) */ + 5233, /* 1D676 (120438) */ 1737, /* 1D677 (120439) */ 1740, /* 1D678 (120440) */ - 5205, /* 1D679 (120441) */ - 5206, /* 1D67A (120442) */ + 5234, /* 1D679 (120441) */ + 5235, /* 1D67A (120442) */ 1741, /* 1D67B (120443) */ 1760, /* 1D67C (120444) */ 1743, /* 1D67D (120445) */ - 5207, /* 1D67E (120446) */ + 5236, /* 1D67E (120446) */ 1745, /* 1D67F (120447) */ 1746, /* 1D680 (120448) */ 1747, /* 1D681 (120449) */ - 5208, /* 1D682 (120450) */ - 5209, /* 1D683 (120451) */ - 5210, /* 1D684 (120452) */ - 5211, /* 1D685 (120453) */ - 5212, /* 1D686 (120454) */ - 5213, /* 1D687 (120455) */ - 5214, /* 1D688 (120456) */ + 5237, /* 1D682 (120450) */ + 5238, /* 1D683 (120451) */ + 5239, /* 1D684 (120452) */ + 5240, /* 1D685 (120453) */ + 5241, /* 1D686 (120454) */ + 5242, /* 1D687 (120455) */ + 5243, /* 1D688 (120456) */ 1751, /* 1D689 (120457) */ - 5243, /* 1D68A (120458) */ - 5244, /* 1D68B (120459) */ - 5245, /* 1D68C (120460) */ + 5272, /* 1D68A (120458) */ + 5273, /* 1D68B (120459) */ + 5274, /* 1D68C (120460) */ 1774, /* 1D68D (120461) */ 1756, /* 1D68E (120462) */ - 5246, /* 1D68F (120463) */ + 5275, /* 1D68F (120463) */ 1736, /* 1D690 (120464) */ 1738, /* 1D691 (120465) */ 1766, /* 1D692 (120466) */ 1775, /* 1D693 (120467) */ - 5247, /* 1D694 (120468) */ + 5276, /* 1D694 (120468) */ 1742, /* 1D695 (120469) */ - 5248, /* 1D696 (120470) */ - 5249, /* 1D697 (120471) */ + 5277, /* 1D696 (120470) */ + 5278, /* 1D697 (120471) */ 1761, /* 1D698 (120472) */ - 5250, /* 1D699 (120473) */ - 5251, /* 1D69A (120474) */ - 5252, /* 1D69B (120475) */ - 5253, /* 1D69C (120476) */ - 5254, /* 1D69D (120477) */ - 5255, /* 1D69E (120478) */ - 5256, /* 1D69F (120479) */ - 5257, /* 1D6A0 (120480) */ - 5258, /* 1D6A1 (120481) */ - 5259, /* 1D6A2 (120482) */ - 5260, /* 1D6A3 (120483) */ - 5261, /* 1D6A4 (120484) */ - 5262, /* 1D6A5 (120485) */ + 5279, /* 1D699 (120473) */ + 5280, /* 1D69A (120474) */ + 5281, /* 1D69B (120475) */ + 5282, /* 1D69C (120476) */ + 5283, /* 1D69D (120477) */ + 5284, /* 1D69E (120478) */ + 5285, /* 1D69F (120479) */ + 5286, /* 1D6A0 (120480) */ + 5287, /* 1D6A1 (120481) */ + 5288, /* 1D6A2 (120482) */ + 5289, /* 1D6A3 (120483) */ + 5290, /* 1D6A4 (120484) */ + 5291, /* 1D6A5 (120485) */ 56, /* 1D6A6 (120486) */ 56, /* 1D6A7 (120487) */ - 5263, /* 1D6A8 (120488) */ - 5264, /* 1D6A9 (120489) */ + 5292, /* 1D6A8 (120488) */ + 5293, /* 1D6A9 (120489) */ 1770, /* 1D6AA (120490) */ - 5265, /* 1D6AB (120491) */ - 5266, /* 1D6AC (120492) */ - 5267, /* 1D6AD (120493) */ - 5268, /* 1D6AE (120494) */ - 5269, /* 1D6AF (120495) */ - 5270, /* 1D6B0 (120496) */ - 5271, /* 1D6B1 (120497) */ - 5272, /* 1D6B2 (120498) */ - 5273, /* 1D6B3 (120499) */ - 5274, /* 1D6B4 (120500) */ - 5275, /* 1D6B5 (120501) */ - 5276, /* 1D6B6 (120502) */ + 5294, /* 1D6AB (120491) */ + 5295, /* 1D6AC (120492) */ + 5296, /* 1D6AD (120493) */ + 5297, /* 1D6AE (120494) */ + 5298, /* 1D6AF (120495) */ + 5299, /* 1D6B0 (120496) */ + 5300, /* 1D6B1 (120497) */ + 5301, /* 1D6B2 (120498) */ + 5302, /* 1D6B3 (120499) */ + 5303, /* 1D6B4 (120500) */ + 5304, /* 1D6B5 (120501) */ + 5305, /* 1D6B6 (120502) */ 1771, /* 1D6B7 (120503) */ - 5277, /* 1D6B8 (120504) */ - 5278, /* 1D6B9 (120505) */ - 5279, /* 1D6BA (120506) */ - 5280, /* 1D6BB (120507) */ - 5281, /* 1D6BC (120508) */ - 5282, /* 1D6BD (120509) */ - 5283, /* 1D6BE (120510) */ - 5284, /* 1D6BF (120511) */ - 5285, /* 1D6C0 (120512) */ - 5286, /* 1D6C1 (120513) */ - 5287, /* 1D6C2 (120514) */ - 5288, /* 1D6C3 (120515) */ + 5306, /* 1D6B8 (120504) */ + 5307, /* 1D6B9 (120505) */ + 5308, /* 1D6BA (120506) */ + 5309, /* 1D6BB (120507) */ + 5310, /* 1D6BC (120508) */ + 5311, /* 1D6BD (120509) */ + 5312, /* 1D6BE (120510) */ + 5313, /* 1D6BF (120511) */ + 5314, /* 1D6C0 (120512) */ + 5315, /* 1D6C1 (120513) */ + 5316, /* 1D6C2 (120514) */ + 5317, /* 1D6C3 (120515) */ 1769, /* 1D6C4 (120516) */ - 5289, /* 1D6C5 (120517) */ - 5290, /* 1D6C6 (120518) */ - 5291, /* 1D6C7 (120519) */ - 5292, /* 1D6C8 (120520) */ - 5293, /* 1D6C9 (120521) */ - 5294, /* 1D6CA (120522) */ - 5295, /* 1D6CB (120523) */ - 5296, /* 1D6CC (120524) */ - 5297, /* 1D6CD (120525) */ - 5298, /* 1D6CE (120526) */ - 5299, /* 1D6CF (120527) */ - 5300, /* 1D6D0 (120528) */ + 5318, /* 1D6C5 (120517) */ + 5319, /* 1D6C6 (120518) */ + 5320, /* 1D6C7 (120519) */ + 5321, /* 1D6C8 (120520) */ + 5322, /* 1D6C9 (120521) */ + 5323, /* 1D6CA (120522) */ + 5324, /* 1D6CB (120523) */ + 5325, /* 1D6CC (120524) */ + 5326, /* 1D6CD (120525) */ + 5327, /* 1D6CE (120526) */ + 5328, /* 1D6CF (120527) */ + 5329, /* 1D6D0 (120528) */ 1768, /* 1D6D1 (120529) */ - 5301, /* 1D6D2 (120530) */ - 5302, /* 1D6D3 (120531) */ - 5303, /* 1D6D4 (120532) */ - 5304, /* 1D6D5 (120533) */ - 5305, /* 1D6D6 (120534) */ - 5306, /* 1D6D7 (120535) */ - 5307, /* 1D6D8 (120536) */ - 5308, /* 1D6D9 (120537) */ - 5309, /* 1D6DA (120538) */ - 5310, /* 1D6DB (120539) */ - 5311, /* 1D6DC (120540) */ - 5312, /* 1D6DD (120541) */ - 5313, /* 1D6DE (120542) */ - 5314, /* 1D6DF (120543) */ - 5315, /* 1D6E0 (120544) */ - 5316, /* 1D6E1 (120545) */ - 5263, /* 1D6E2 (120546) */ - 5264, /* 1D6E3 (120547) */ + 5330, /* 1D6D2 (120530) */ + 5331, /* 1D6D3 (120531) */ + 5332, /* 1D6D4 (120532) */ + 5333, /* 1D6D5 (120533) */ + 5334, /* 1D6D6 (120534) */ + 5335, /* 1D6D7 (120535) */ + 5336, /* 1D6D8 (120536) */ + 5337, /* 1D6D9 (120537) */ + 5338, /* 1D6DA (120538) */ + 5339, /* 1D6DB (120539) */ + 5340, /* 1D6DC (120540) */ + 5341, /* 1D6DD (120541) */ + 5342, /* 1D6DE (120542) */ + 5343, /* 1D6DF (120543) */ + 5344, /* 1D6E0 (120544) */ + 5345, /* 1D6E1 (120545) */ + 5292, /* 1D6E2 (120546) */ + 5293, /* 1D6E3 (120547) */ 1770, /* 1D6E4 (120548) */ - 5265, /* 1D6E5 (120549) */ - 5266, /* 1D6E6 (120550) */ - 5267, /* 1D6E7 (120551) */ - 5268, /* 1D6E8 (120552) */ - 5269, /* 1D6E9 (120553) */ - 5270, /* 1D6EA (120554) */ - 5271, /* 1D6EB (120555) */ - 5272, /* 1D6EC (120556) */ - 5273, /* 1D6ED (120557) */ - 5274, /* 1D6EE (120558) */ - 5275, /* 1D6EF (120559) */ - 5276, /* 1D6F0 (120560) */ + 5294, /* 1D6E5 (120549) */ + 5295, /* 1D6E6 (120550) */ + 5296, /* 1D6E7 (120551) */ + 5297, /* 1D6E8 (120552) */ + 5298, /* 1D6E9 (120553) */ + 5299, /* 1D6EA (120554) */ + 5300, /* 1D6EB (120555) */ + 5301, /* 1D6EC (120556) */ + 5302, /* 1D6ED (120557) */ + 5303, /* 1D6EE (120558) */ + 5304, /* 1D6EF (120559) */ + 5305, /* 1D6F0 (120560) */ 1771, /* 1D6F1 (120561) */ - 5277, /* 1D6F2 (120562) */ - 5317, /* 1D6F3 (120563) */ - 5279, /* 1D6F4 (120564) */ - 5280, /* 1D6F5 (120565) */ - 5281, /* 1D6F6 (120566) */ - 5282, /* 1D6F7 (120567) */ - 5283, /* 1D6F8 (120568) */ - 5284, /* 1D6F9 (120569) */ - 5285, /* 1D6FA (120570) */ - 5286, /* 1D6FB (120571) */ - 5287, /* 1D6FC (120572) */ - 5288, /* 1D6FD (120573) */ + 5306, /* 1D6F2 (120562) */ + 5346, /* 1D6F3 (120563) */ + 5308, /* 1D6F4 (120564) */ + 5309, /* 1D6F5 (120565) */ + 5310, /* 1D6F6 (120566) */ + 5311, /* 1D6F7 (120567) */ + 5312, /* 1D6F8 (120568) */ + 5313, /* 1D6F9 (120569) */ + 5314, /* 1D6FA (120570) */ + 5315, /* 1D6FB (120571) */ + 5316, /* 1D6FC (120572) */ + 5317, /* 1D6FD (120573) */ 1769, /* 1D6FE (120574) */ - 5289, /* 1D6FF (120575) */ - 5290, /* 1D700 (120576) */ - 5291, /* 1D701 (120577) */ - 5292, /* 1D702 (120578) */ - 5293, /* 1D703 (120579) */ - 5294, /* 1D704 (120580) */ - 5295, /* 1D705 (120581) */ - 5296, /* 1D706 (120582) */ - 5297, /* 1D707 (120583) */ - 5298, /* 1D708 (120584) */ - 5299, /* 1D709 (120585) */ - 5300, /* 1D70A (120586) */ + 5318, /* 1D6FF (120575) */ + 5319, /* 1D700 (120576) */ + 5320, /* 1D701 (120577) */ + 5321, /* 1D702 (120578) */ + 5322, /* 1D703 (120579) */ + 5323, /* 1D704 (120580) */ + 5324, /* 1D705 (120581) */ + 5325, /* 1D706 (120582) */ + 5326, /* 1D707 (120583) */ + 5327, /* 1D708 (120584) */ + 5328, /* 1D709 (120585) */ + 5329, /* 1D70A (120586) */ 1768, /* 1D70B (120587) */ - 5301, /* 1D70C (120588) */ - 5302, /* 1D70D (120589) */ - 5303, /* 1D70E (120590) */ - 5304, /* 1D70F (120591) */ - 5305, /* 1D710 (120592) */ - 5306, /* 1D711 (120593) */ - 5307, /* 1D712 (120594) */ - 5308, /* 1D713 (120595) */ - 5309, /* 1D714 (120596) */ - 5310, /* 1D715 (120597) */ - 5318, /* 1D716 (120598) */ - 5319, /* 1D717 (120599) */ - 5320, /* 1D718 (120600) */ - 5321, /* 1D719 (120601) */ - 5322, /* 1D71A (120602) */ - 5323, /* 1D71B (120603) */ - 5263, /* 1D71C (120604) */ - 5264, /* 1D71D (120605) */ + 5330, /* 1D70C (120588) */ + 5331, /* 1D70D (120589) */ + 5332, /* 1D70E (120590) */ + 5333, /* 1D70F (120591) */ + 5334, /* 1D710 (120592) */ + 5335, /* 1D711 (120593) */ + 5336, /* 1D712 (120594) */ + 5337, /* 1D713 (120595) */ + 5338, /* 1D714 (120596) */ + 5339, /* 1D715 (120597) */ + 5347, /* 1D716 (120598) */ + 5348, /* 1D717 (120599) */ + 5349, /* 1D718 (120600) */ + 5350, /* 1D719 (120601) */ + 5351, /* 1D71A (120602) */ + 5352, /* 1D71B (120603) */ + 5292, /* 1D71C (120604) */ + 5293, /* 1D71D (120605) */ 1770, /* 1D71E (120606) */ - 5265, /* 1D71F (120607) */ - 5266, /* 1D720 (120608) */ - 5267, /* 1D721 (120609) */ - 5268, /* 1D722 (120610) */ - 5269, /* 1D723 (120611) */ - 5270, /* 1D724 (120612) */ - 5271, /* 1D725 (120613) */ - 5272, /* 1D726 (120614) */ - 5273, /* 1D727 (120615) */ - 5274, /* 1D728 (120616) */ - 5275, /* 1D729 (120617) */ - 5276, /* 1D72A (120618) */ + 5294, /* 1D71F (120607) */ + 5295, /* 1D720 (120608) */ + 5296, /* 1D721 (120609) */ + 5297, /* 1D722 (120610) */ + 5298, /* 1D723 (120611) */ + 5299, /* 1D724 (120612) */ + 5300, /* 1D725 (120613) */ + 5301, /* 1D726 (120614) */ + 5302, /* 1D727 (120615) */ + 5303, /* 1D728 (120616) */ + 5304, /* 1D729 (120617) */ + 5305, /* 1D72A (120618) */ 1771, /* 1D72B (120619) */ - 5277, /* 1D72C (120620) */ - 5324, /* 1D72D (120621) */ - 5279, /* 1D72E (120622) */ - 5280, /* 1D72F (120623) */ - 5281, /* 1D730 (120624) */ - 5282, /* 1D731 (120625) */ - 5283, /* 1D732 (120626) */ - 5284, /* 1D733 (120627) */ - 5285, /* 1D734 (120628) */ - 5286, /* 1D735 (120629) */ - 5287, /* 1D736 (120630) */ - 5288, /* 1D737 (120631) */ + 5306, /* 1D72C (120620) */ + 5353, /* 1D72D (120621) */ + 5308, /* 1D72E (120622) */ + 5309, /* 1D72F (120623) */ + 5310, /* 1D730 (120624) */ + 5311, /* 1D731 (120625) */ + 5312, /* 1D732 (120626) */ + 5313, /* 1D733 (120627) */ + 5314, /* 1D734 (120628) */ + 5315, /* 1D735 (120629) */ + 5316, /* 1D736 (120630) */ + 5317, /* 1D737 (120631) */ 1769, /* 1D738 (120632) */ - 5289, /* 1D739 (120633) */ - 5290, /* 1D73A (120634) */ - 5291, /* 1D73B (120635) */ - 5292, /* 1D73C (120636) */ - 5293, /* 1D73D (120637) */ - 5294, /* 1D73E (120638) */ - 5295, /* 1D73F (120639) */ - 5296, /* 1D740 (120640) */ - 5297, /* 1D741 (120641) */ - 5298, /* 1D742 (120642) */ - 5299, /* 1D743 (120643) */ - 5300, /* 1D744 (120644) */ + 5318, /* 1D739 (120633) */ + 5319, /* 1D73A (120634) */ + 5320, /* 1D73B (120635) */ + 5321, /* 1D73C (120636) */ + 5322, /* 1D73D (120637) */ + 5323, /* 1D73E (120638) */ + 5324, /* 1D73F (120639) */ + 5325, /* 1D740 (120640) */ + 5326, /* 1D741 (120641) */ + 5327, /* 1D742 (120642) */ + 5328, /* 1D743 (120643) */ + 5329, /* 1D744 (120644) */ 1768, /* 1D745 (120645) */ - 5301, /* 1D746 (120646) */ - 5302, /* 1D747 (120647) */ - 5303, /* 1D748 (120648) */ - 5304, /* 1D749 (120649) */ - 5305, /* 1D74A (120650) */ - 5306, /* 1D74B (120651) */ - 5307, /* 1D74C (120652) */ - 5308, /* 1D74D (120653) */ - 5309, /* 1D74E (120654) */ - 5310, /* 1D74F (120655) */ - 5325, /* 1D750 (120656) */ - 5326, /* 1D751 (120657) */ - 5327, /* 1D752 (120658) */ - 5328, /* 1D753 (120659) */ - 5329, /* 1D754 (120660) */ - 5330, /* 1D755 (120661) */ - 5263, /* 1D756 (120662) */ - 5264, /* 1D757 (120663) */ + 5330, /* 1D746 (120646) */ + 5331, /* 1D747 (120647) */ + 5332, /* 1D748 (120648) */ + 5333, /* 1D749 (120649) */ + 5334, /* 1D74A (120650) */ + 5335, /* 1D74B (120651) */ + 5336, /* 1D74C (120652) */ + 5337, /* 1D74D (120653) */ + 5338, /* 1D74E (120654) */ + 5339, /* 1D74F (120655) */ + 5354, /* 1D750 (120656) */ + 5355, /* 1D751 (120657) */ + 5356, /* 1D752 (120658) */ + 5357, /* 1D753 (120659) */ + 5358, /* 1D754 (120660) */ + 5359, /* 1D755 (120661) */ + 5292, /* 1D756 (120662) */ + 5293, /* 1D757 (120663) */ 1770, /* 1D758 (120664) */ - 5265, /* 1D759 (120665) */ - 5266, /* 1D75A (120666) */ - 5267, /* 1D75B (120667) */ - 5268, /* 1D75C (120668) */ - 5269, /* 1D75D (120669) */ - 5270, /* 1D75E (120670) */ - 5271, /* 1D75F (120671) */ - 5272, /* 1D760 (120672) */ - 5273, /* 1D761 (120673) */ - 5274, /* 1D762 (120674) */ - 5275, /* 1D763 (120675) */ - 5276, /* 1D764 (120676) */ + 5294, /* 1D759 (120665) */ + 5295, /* 1D75A (120666) */ + 5296, /* 1D75B (120667) */ + 5297, /* 1D75C (120668) */ + 5298, /* 1D75D (120669) */ + 5299, /* 1D75E (120670) */ + 5300, /* 1D75F (120671) */ + 5301, /* 1D760 (120672) */ + 5302, /* 1D761 (120673) */ + 5303, /* 1D762 (120674) */ + 5304, /* 1D763 (120675) */ + 5305, /* 1D764 (120676) */ 1771, /* 1D765 (120677) */ - 5277, /* 1D766 (120678) */ - 5331, /* 1D767 (120679) */ - 5279, /* 1D768 (120680) */ - 5280, /* 1D769 (120681) */ - 5281, /* 1D76A (120682) */ - 5282, /* 1D76B (120683) */ - 5283, /* 1D76C (120684) */ - 5284, /* 1D76D (120685) */ - 5285, /* 1D76E (120686) */ - 5286, /* 1D76F (120687) */ - 5287, /* 1D770 (120688) */ - 5288, /* 1D771 (120689) */ + 5306, /* 1D766 (120678) */ + 5360, /* 1D767 (120679) */ + 5308, /* 1D768 (120680) */ + 5309, /* 1D769 (120681) */ + 5310, /* 1D76A (120682) */ + 5311, /* 1D76B (120683) */ + 5312, /* 1D76C (120684) */ + 5313, /* 1D76D (120685) */ + 5314, /* 1D76E (120686) */ + 5315, /* 1D76F (120687) */ + 5316, /* 1D770 (120688) */ + 5317, /* 1D771 (120689) */ 1769, /* 1D772 (120690) */ - 5289, /* 1D773 (120691) */ - 5290, /* 1D774 (120692) */ - 5291, /* 1D775 (120693) */ - 5292, /* 1D776 (120694) */ - 5293, /* 1D777 (120695) */ - 5294, /* 1D778 (120696) */ - 5295, /* 1D779 (120697) */ - 5296, /* 1D77A (120698) */ - 5297, /* 1D77B (120699) */ - 5298, /* 1D77C (120700) */ - 5299, /* 1D77D (120701) */ - 5300, /* 1D77E (120702) */ + 5318, /* 1D773 (120691) */ + 5319, /* 1D774 (120692) */ + 5320, /* 1D775 (120693) */ + 5321, /* 1D776 (120694) */ + 5322, /* 1D777 (120695) */ + 5323, /* 1D778 (120696) */ + 5324, /* 1D779 (120697) */ + 5325, /* 1D77A (120698) */ + 5326, /* 1D77B (120699) */ + 5327, /* 1D77C (120700) */ + 5328, /* 1D77D (120701) */ + 5329, /* 1D77E (120702) */ 1768, /* 1D77F (120703) */ - 5301, /* 1D780 (120704) */ - 5302, /* 1D781 (120705) */ - 5303, /* 1D782 (120706) */ - 5304, /* 1D783 (120707) */ - 5305, /* 1D784 (120708) */ - 5306, /* 1D785 (120709) */ - 5307, /* 1D786 (120710) */ - 5308, /* 1D787 (120711) */ - 5309, /* 1D788 (120712) */ - 5310, /* 1D789 (120713) */ - 5332, /* 1D78A (120714) */ - 5333, /* 1D78B (120715) */ - 5334, /* 1D78C (120716) */ - 5335, /* 1D78D (120717) */ - 5336, /* 1D78E (120718) */ - 5337, /* 1D78F (120719) */ - 5263, /* 1D790 (120720) */ - 5264, /* 1D791 (120721) */ + 5330, /* 1D780 (120704) */ + 5331, /* 1D781 (120705) */ + 5332, /* 1D782 (120706) */ + 5333, /* 1D783 (120707) */ + 5334, /* 1D784 (120708) */ + 5335, /* 1D785 (120709) */ + 5336, /* 1D786 (120710) */ + 5337, /* 1D787 (120711) */ + 5338, /* 1D788 (120712) */ + 5339, /* 1D789 (120713) */ + 5361, /* 1D78A (120714) */ + 5362, /* 1D78B (120715) */ + 5363, /* 1D78C (120716) */ + 5364, /* 1D78D (120717) */ + 5365, /* 1D78E (120718) */ + 5366, /* 1D78F (120719) */ + 5292, /* 1D790 (120720) */ + 5293, /* 1D791 (120721) */ 1770, /* 1D792 (120722) */ - 5265, /* 1D793 (120723) */ - 5266, /* 1D794 (120724) */ - 5267, /* 1D795 (120725) */ - 5268, /* 1D796 (120726) */ - 5269, /* 1D797 (120727) */ - 5270, /* 1D798 (120728) */ - 5271, /* 1D799 (120729) */ - 5272, /* 1D79A (120730) */ - 5273, /* 1D79B (120731) */ - 5274, /* 1D79C (120732) */ - 5275, /* 1D79D (120733) */ - 5276, /* 1D79E (120734) */ + 5294, /* 1D793 (120723) */ + 5295, /* 1D794 (120724) */ + 5296, /* 1D795 (120725) */ + 5297, /* 1D796 (120726) */ + 5298, /* 1D797 (120727) */ + 5299, /* 1D798 (120728) */ + 5300, /* 1D799 (120729) */ + 5301, /* 1D79A (120730) */ + 5302, /* 1D79B (120731) */ + 5303, /* 1D79C (120732) */ + 5304, /* 1D79D (120733) */ + 5305, /* 1D79E (120734) */ 1771, /* 1D79F (120735) */ - 5277, /* 1D7A0 (120736) */ - 5338, /* 1D7A1 (120737) */ - 5279, /* 1D7A2 (120738) */ - 5280, /* 1D7A3 (120739) */ - 5281, /* 1D7A4 (120740) */ - 5282, /* 1D7A5 (120741) */ - 5283, /* 1D7A6 (120742) */ - 5284, /* 1D7A7 (120743) */ - 5285, /* 1D7A8 (120744) */ - 5286, /* 1D7A9 (120745) */ - 5287, /* 1D7AA (120746) */ - 5288, /* 1D7AB (120747) */ + 5306, /* 1D7A0 (120736) */ + 5367, /* 1D7A1 (120737) */ + 5308, /* 1D7A2 (120738) */ + 5309, /* 1D7A3 (120739) */ + 5310, /* 1D7A4 (120740) */ + 5311, /* 1D7A5 (120741) */ + 5312, /* 1D7A6 (120742) */ + 5313, /* 1D7A7 (120743) */ + 5314, /* 1D7A8 (120744) */ + 5315, /* 1D7A9 (120745) */ + 5316, /* 1D7AA (120746) */ + 5317, /* 1D7AB (120747) */ 1769, /* 1D7AC (120748) */ - 5289, /* 1D7AD (120749) */ - 5290, /* 1D7AE (120750) */ - 5291, /* 1D7AF (120751) */ - 5292, /* 1D7B0 (120752) */ - 5293, /* 1D7B1 (120753) */ - 5294, /* 1D7B2 (120754) */ - 5295, /* 1D7B3 (120755) */ - 5296, /* 1D7B4 (120756) */ - 5297, /* 1D7B5 (120757) */ - 5298, /* 1D7B6 (120758) */ - 5299, /* 1D7B7 (120759) */ - 5300, /* 1D7B8 (120760) */ + 5318, /* 1D7AD (120749) */ + 5319, /* 1D7AE (120750) */ + 5320, /* 1D7AF (120751) */ + 5321, /* 1D7B0 (120752) */ + 5322, /* 1D7B1 (120753) */ + 5323, /* 1D7B2 (120754) */ + 5324, /* 1D7B3 (120755) */ + 5325, /* 1D7B4 (120756) */ + 5326, /* 1D7B5 (120757) */ + 5327, /* 1D7B6 (120758) */ + 5328, /* 1D7B7 (120759) */ + 5329, /* 1D7B8 (120760) */ 1768, /* 1D7B9 (120761) */ - 5301, /* 1D7BA (120762) */ - 5302, /* 1D7BB (120763) */ - 5303, /* 1D7BC (120764) */ - 5304, /* 1D7BD (120765) */ - 5305, /* 1D7BE (120766) */ - 5306, /* 1D7BF (120767) */ - 5307, /* 1D7C0 (120768) */ - 5308, /* 1D7C1 (120769) */ - 5309, /* 1D7C2 (120770) */ - 5310, /* 1D7C3 (120771) */ - 5339, /* 1D7C4 (120772) */ - 5340, /* 1D7C5 (120773) */ - 5341, /* 1D7C6 (120774) */ - 5342, /* 1D7C7 (120775) */ - 5343, /* 1D7C8 (120776) */ - 5344, /* 1D7C9 (120777) */ - 5345, /* 1D7CA (120778) */ - 5346, /* 1D7CB (120779) */ + 5330, /* 1D7BA (120762) */ + 5331, /* 1D7BB (120763) */ + 5332, /* 1D7BC (120764) */ + 5333, /* 1D7BD (120765) */ + 5334, /* 1D7BE (120766) */ + 5335, /* 1D7BF (120767) */ + 5336, /* 1D7C0 (120768) */ + 5337, /* 1D7C1 (120769) */ + 5338, /* 1D7C2 (120770) */ + 5339, /* 1D7C3 (120771) */ + 5368, /* 1D7C4 (120772) */ + 5369, /* 1D7C5 (120773) */ + 5370, /* 1D7C6 (120774) */ + 5371, /* 1D7C7 (120775) */ + 5372, /* 1D7C8 (120776) */ + 5373, /* 1D7C9 (120777) */ + 5374, /* 1D7CA (120778) */ + 5375, /* 1D7CB (120779) */ 56, /* 1D7CC (120780) */ 56, /* 1D7CD (120781) */ - 5215, /* 1D7CE (120782) */ - 5216, /* 1D7CF (120783) */ - 5217, /* 1D7D0 (120784) */ - 5218, /* 1D7D1 (120785) */ - 5219, /* 1D7D2 (120786) */ - 5220, /* 1D7D3 (120787) */ - 5221, /* 1D7D4 (120788) */ - 5222, /* 1D7D5 (120789) */ - 5223, /* 1D7D6 (120790) */ - 5224, /* 1D7D7 (120791) */ - 5215, /* 1D7D8 (120792) */ - 5216, /* 1D7D9 (120793) */ - 5217, /* 1D7DA (120794) */ - 5218, /* 1D7DB (120795) */ - 5219, /* 1D7DC (120796) */ - 5220, /* 1D7DD (120797) */ - 5221, /* 1D7DE (120798) */ - 5222, /* 1D7DF (120799) */ - 5223, /* 1D7E0 (120800) */ - 5224, /* 1D7E1 (120801) */ - 5215, /* 1D7E2 (120802) */ - 5216, /* 1D7E3 (120803) */ - 5217, /* 1D7E4 (120804) */ - 5218, /* 1D7E5 (120805) */ - 5219, /* 1D7E6 (120806) */ - 5220, /* 1D7E7 (120807) */ - 5221, /* 1D7E8 (120808) */ - 5222, /* 1D7E9 (120809) */ - 5223, /* 1D7EA (120810) */ - 5224, /* 1D7EB (120811) */ - 5215, /* 1D7EC (120812) */ - 5216, /* 1D7ED (120813) */ - 5217, /* 1D7EE (120814) */ - 5218, /* 1D7EF (120815) */ - 5219, /* 1D7F0 (120816) */ - 5220, /* 1D7F1 (120817) */ - 5221, /* 1D7F2 (120818) */ - 5222, /* 1D7F3 (120819) */ - 5223, /* 1D7F4 (120820) */ - 5224, /* 1D7F5 (120821) */ - 5215, /* 1D7F6 (120822) */ - 5216, /* 1D7F7 (120823) */ - 5217, /* 1D7F8 (120824) */ - 5218, /* 1D7F9 (120825) */ - 5219, /* 1D7FA (120826) */ - 5220, /* 1D7FB (120827) */ - 5221, /* 1D7FC (120828) */ - 5222, /* 1D7FD (120829) */ - 5223, /* 1D7FE (120830) */ - 5224, /* 1D7FF (120831) */ + 5244, /* 1D7CE (120782) */ + 5245, /* 1D7CF (120783) */ + 5246, /* 1D7D0 (120784) */ + 5247, /* 1D7D1 (120785) */ + 5248, /* 1D7D2 (120786) */ + 5249, /* 1D7D3 (120787) */ + 5250, /* 1D7D4 (120788) */ + 5251, /* 1D7D5 (120789) */ + 5252, /* 1D7D6 (120790) */ + 5253, /* 1D7D7 (120791) */ + 5244, /* 1D7D8 (120792) */ + 5245, /* 1D7D9 (120793) */ + 5246, /* 1D7DA (120794) */ + 5247, /* 1D7DB (120795) */ + 5248, /* 1D7DC (120796) */ + 5249, /* 1D7DD (120797) */ + 5250, /* 1D7DE (120798) */ + 5251, /* 1D7DF (120799) */ + 5252, /* 1D7E0 (120800) */ + 5253, /* 1D7E1 (120801) */ + 5244, /* 1D7E2 (120802) */ + 5245, /* 1D7E3 (120803) */ + 5246, /* 1D7E4 (120804) */ + 5247, /* 1D7E5 (120805) */ + 5248, /* 1D7E6 (120806) */ + 5249, /* 1D7E7 (120807) */ + 5250, /* 1D7E8 (120808) */ + 5251, /* 1D7E9 (120809) */ + 5252, /* 1D7EA (120810) */ + 5253, /* 1D7EB (120811) */ + 5244, /* 1D7EC (120812) */ + 5245, /* 1D7ED (120813) */ + 5246, /* 1D7EE (120814) */ + 5247, /* 1D7EF (120815) */ + 5248, /* 1D7F0 (120816) */ + 5249, /* 1D7F1 (120817) */ + 5250, /* 1D7F2 (120818) */ + 5251, /* 1D7F3 (120819) */ + 5252, /* 1D7F4 (120820) */ + 5253, /* 1D7F5 (120821) */ + 5244, /* 1D7F6 (120822) */ + 5245, /* 1D7F7 (120823) */ + 5246, /* 1D7F8 (120824) */ + 5247, /* 1D7F9 (120825) */ + 5248, /* 1D7FA (120826) */ + 5249, /* 1D7FB (120827) */ + 5250, /* 1D7FC (120828) */ + 5251, /* 1D7FD (120829) */ + 5252, /* 1D7FE (120830) */ + 5253, /* 1D7FF (120831) */ 1, /* 1D800 (120832) */ 1, /* 1D801 (120833) */ 1, /* 1D802 (120834) */ @@ -100790,68 +101024,68 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1E02D (122925) */ 56, /* 1E02E (122926) */ 56, /* 1E02F (122927) */ - 5347, /* 1E030 (122928) */ - 5348, /* 1E031 (122929) */ - 5349, /* 1E032 (122930) */ - 5350, /* 1E033 (122931) */ - 5351, /* 1E034 (122932) */ - 5352, /* 1E035 (122933) */ - 5353, /* 1E036 (122934) */ - 5354, /* 1E037 (122935) */ - 5355, /* 1E038 (122936) */ - 5356, /* 1E039 (122937) */ - 5357, /* 1E03A (122938) */ - 5358, /* 1E03B (122939) */ - 5359, /* 1E03C (122940) */ - 5360, /* 1E03D (122941) */ - 5361, /* 1E03E (122942) */ - 5362, /* 1E03F (122943) */ - 5363, /* 1E040 (122944) */ - 5364, /* 1E041 (122945) */ - 5365, /* 1E042 (122946) */ - 5366, /* 1E043 (122947) */ - 5367, /* 1E044 (122948) */ - 5368, /* 1E045 (122949) */ - 5369, /* 1E046 (122950) */ - 5370, /* 1E047 (122951) */ - 5371, /* 1E048 (122952) */ - 5372, /* 1E049 (122953) */ - 5373, /* 1E04A (122954) */ - 5374, /* 1E04B (122955) */ - 5375, /* 1E04C (122956) */ - 5376, /* 1E04D (122957) */ - 5377, /* 1E04E (122958) */ - 5378, /* 1E04F (122959) */ - 5379, /* 1E050 (122960) */ - 5380, /* 1E051 (122961) */ - 5381, /* 1E052 (122962) */ - 5382, /* 1E053 (122963) */ - 5383, /* 1E054 (122964) */ - 5384, /* 1E055 (122965) */ - 5385, /* 1E056 (122966) */ - 5386, /* 1E057 (122967) */ - 5387, /* 1E058 (122968) */ - 5388, /* 1E059 (122969) */ - 5389, /* 1E05A (122970) */ - 5390, /* 1E05B (122971) */ - 5391, /* 1E05C (122972) */ - 5392, /* 1E05D (122973) */ - 5393, /* 1E05E (122974) */ - 5394, /* 1E05F (122975) */ - 5395, /* 1E060 (122976) */ - 5396, /* 1E061 (122977) */ - 5397, /* 1E062 (122978) */ - 5398, /* 1E063 (122979) */ - 5399, /* 1E064 (122980) */ - 5400, /* 1E065 (122981) */ - 5401, /* 1E066 (122982) */ - 5402, /* 1E067 (122983) */ - 5403, /* 1E068 (122984) */ - 5404, /* 1E069 (122985) */ - 5405, /* 1E06A (122986) */ - 5406, /* 1E06B (122987) */ - 5407, /* 1E06C (122988) */ - 5408, /* 1E06D (122989) */ + 5376, /* 1E030 (122928) */ + 5377, /* 1E031 (122929) */ + 5378, /* 1E032 (122930) */ + 5379, /* 1E033 (122931) */ + 5380, /* 1E034 (122932) */ + 5381, /* 1E035 (122933) */ + 5382, /* 1E036 (122934) */ + 5383, /* 1E037 (122935) */ + 5384, /* 1E038 (122936) */ + 5385, /* 1E039 (122937) */ + 5386, /* 1E03A (122938) */ + 5387, /* 1E03B (122939) */ + 5388, /* 1E03C (122940) */ + 5389, /* 1E03D (122941) */ + 5390, /* 1E03E (122942) */ + 5391, /* 1E03F (122943) */ + 5392, /* 1E040 (122944) */ + 5393, /* 1E041 (122945) */ + 5394, /* 1E042 (122946) */ + 5395, /* 1E043 (122947) */ + 5396, /* 1E044 (122948) */ + 5397, /* 1E045 (122949) */ + 5398, /* 1E046 (122950) */ + 5399, /* 1E047 (122951) */ + 5400, /* 1E048 (122952) */ + 5401, /* 1E049 (122953) */ + 5402, /* 1E04A (122954) */ + 5403, /* 1E04B (122955) */ + 5404, /* 1E04C (122956) */ + 5405, /* 1E04D (122957) */ + 5406, /* 1E04E (122958) */ + 5407, /* 1E04F (122959) */ + 5408, /* 1E050 (122960) */ + 5409, /* 1E051 (122961) */ + 5410, /* 1E052 (122962) */ + 5411, /* 1E053 (122963) */ + 5412, /* 1E054 (122964) */ + 5413, /* 1E055 (122965) */ + 5414, /* 1E056 (122966) */ + 5415, /* 1E057 (122967) */ + 5416, /* 1E058 (122968) */ + 5417, /* 1E059 (122969) */ + 5418, /* 1E05A (122970) */ + 5419, /* 1E05B (122971) */ + 5420, /* 1E05C (122972) */ + 5421, /* 1E05D (122973) */ + 5422, /* 1E05E (122974) */ + 5423, /* 1E05F (122975) */ + 5424, /* 1E060 (122976) */ + 5425, /* 1E061 (122977) */ + 5426, /* 1E062 (122978) */ + 5427, /* 1E063 (122979) */ + 5428, /* 1E064 (122980) */ + 5429, /* 1E065 (122981) */ + 5430, /* 1E066 (122982) */ + 5431, /* 1E067 (122983) */ + 5432, /* 1E068 (122984) */ + 5433, /* 1E069 (122985) */ + 5434, /* 1E06A (122986) */ + 5435, /* 1E06B (122987) */ + 5436, /* 1E06C (122988) */ + 5437, /* 1E06D (122989) */ 56, /* 1E06E (122990) */ 56, /* 1E06F (122991) */ 56, /* 1E070 (122992) */ @@ -102470,60 +102704,60 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1E6BD (124605) */ 56, /* 1E6BE (124606) */ 56, /* 1E6BF (124607) */ - 56, /* 1E6C0 (124608) */ - 56, /* 1E6C1 (124609) */ - 56, /* 1E6C2 (124610) */ - 56, /* 1E6C3 (124611) */ - 56, /* 1E6C4 (124612) */ - 56, /* 1E6C5 (124613) */ - 56, /* 1E6C6 (124614) */ - 56, /* 1E6C7 (124615) */ - 56, /* 1E6C8 (124616) */ - 56, /* 1E6C9 (124617) */ - 56, /* 1E6CA (124618) */ - 56, /* 1E6CB (124619) */ - 56, /* 1E6CC (124620) */ - 56, /* 1E6CD (124621) */ - 56, /* 1E6CE (124622) */ - 56, /* 1E6CF (124623) */ - 56, /* 1E6D0 (124624) */ - 56, /* 1E6D1 (124625) */ - 56, /* 1E6D2 (124626) */ - 56, /* 1E6D3 (124627) */ - 56, /* 1E6D4 (124628) */ - 56, /* 1E6D5 (124629) */ - 56, /* 1E6D6 (124630) */ - 56, /* 1E6D7 (124631) */ - 56, /* 1E6D8 (124632) */ - 56, /* 1E6D9 (124633) */ - 56, /* 1E6DA (124634) */ - 56, /* 1E6DB (124635) */ - 56, /* 1E6DC (124636) */ - 56, /* 1E6DD (124637) */ - 56, /* 1E6DE (124638) */ + 1, /* 1E6C0 (124608) */ + 1, /* 1E6C1 (124609) */ + 1, /* 1E6C2 (124610) */ + 1, /* 1E6C3 (124611) */ + 1, /* 1E6C4 (124612) */ + 1, /* 1E6C5 (124613) */ + 1, /* 1E6C6 (124614) */ + 1, /* 1E6C7 (124615) */ + 1, /* 1E6C8 (124616) */ + 1, /* 1E6C9 (124617) */ + 1, /* 1E6CA (124618) */ + 1, /* 1E6CB (124619) */ + 1, /* 1E6CC (124620) */ + 1, /* 1E6CD (124621) */ + 1, /* 1E6CE (124622) */ + 1, /* 1E6CF (124623) */ + 1, /* 1E6D0 (124624) */ + 1, /* 1E6D1 (124625) */ + 1, /* 1E6D2 (124626) */ + 1, /* 1E6D3 (124627) */ + 1, /* 1E6D4 (124628) */ + 1, /* 1E6D5 (124629) */ + 1, /* 1E6D6 (124630) */ + 1, /* 1E6D7 (124631) */ + 1, /* 1E6D8 (124632) */ + 1, /* 1E6D9 (124633) */ + 1, /* 1E6DA (124634) */ + 1, /* 1E6DB (124635) */ + 1, /* 1E6DC (124636) */ + 1, /* 1E6DD (124637) */ + 1, /* 1E6DE (124638) */ 56, /* 1E6DF (124639) */ - 56, /* 1E6E0 (124640) */ - 56, /* 1E6E1 (124641) */ - 56, /* 1E6E2 (124642) */ - 56, /* 1E6E3 (124643) */ - 56, /* 1E6E4 (124644) */ - 56, /* 1E6E5 (124645) */ - 56, /* 1E6E6 (124646) */ - 56, /* 1E6E7 (124647) */ - 56, /* 1E6E8 (124648) */ - 56, /* 1E6E9 (124649) */ - 56, /* 1E6EA (124650) */ - 56, /* 1E6EB (124651) */ - 56, /* 1E6EC (124652) */ - 56, /* 1E6ED (124653) */ - 56, /* 1E6EE (124654) */ - 56, /* 1E6EF (124655) */ - 56, /* 1E6F0 (124656) */ - 56, /* 1E6F1 (124657) */ - 56, /* 1E6F2 (124658) */ - 56, /* 1E6F3 (124659) */ - 56, /* 1E6F4 (124660) */ - 56, /* 1E6F5 (124661) */ + 1, /* 1E6E0 (124640) */ + 1, /* 1E6E1 (124641) */ + 1, /* 1E6E2 (124642) */ + 431, /* 1E6E3 (124643) */ + 1, /* 1E6E4 (124644) */ + 1, /* 1E6E5 (124645) */ + 431, /* 1E6E6 (124646) */ + 1, /* 1E6E7 (124647) */ + 1, /* 1E6E8 (124648) */ + 1, /* 1E6E9 (124649) */ + 1, /* 1E6EA (124650) */ + 1, /* 1E6EB (124651) */ + 1, /* 1E6EC (124652) */ + 1, /* 1E6ED (124653) */ + 431, /* 1E6EE (124654) */ + 431, /* 1E6EF (124655) */ + 1, /* 1E6F0 (124656) */ + 1, /* 1E6F1 (124657) */ + 1, /* 1E6F2 (124658) */ + 1, /* 1E6F3 (124659) */ + 1, /* 1E6F4 (124660) */ + 431, /* 1E6F5 (124661) */ 56, /* 1E6F6 (124662) */ 56, /* 1E6F7 (124663) */ 56, /* 1E6F8 (124664) */ @@ -102532,8 +102766,8 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1E6FB (124667) */ 56, /* 1E6FC (124668) */ 56, /* 1E6FD (124669) */ - 56, /* 1E6FE (124670) */ - 56, /* 1E6FF (124671) */ + 1, /* 1E6FE (124670) */ + 1, /* 1E6FF (124671) */ 56, /* 1E700 (124672) */ 56, /* 1E701 (124673) */ 56, /* 1E702 (124674) */ @@ -103046,40 +103280,40 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1E8FD (125181) */ 56, /* 1E8FE (125182) */ 56, /* 1E8FF (125183) */ - 5409, /* 1E900 (125184) */ - 5410, /* 1E901 (125185) */ - 5411, /* 1E902 (125186) */ - 5412, /* 1E903 (125187) */ - 5413, /* 1E904 (125188) */ - 5414, /* 1E905 (125189) */ - 5415, /* 1E906 (125190) */ - 5416, /* 1E907 (125191) */ - 5417, /* 1E908 (125192) */ - 5418, /* 1E909 (125193) */ - 5419, /* 1E90A (125194) */ - 5420, /* 1E90B (125195) */ - 5421, /* 1E90C (125196) */ - 5422, /* 1E90D (125197) */ - 5423, /* 1E90E (125198) */ - 5424, /* 1E90F (125199) */ - 5425, /* 1E910 (125200) */ - 5426, /* 1E911 (125201) */ - 5427, /* 1E912 (125202) */ - 5428, /* 1E913 (125203) */ - 5429, /* 1E914 (125204) */ - 5430, /* 1E915 (125205) */ - 5431, /* 1E916 (125206) */ - 5432, /* 1E917 (125207) */ - 5433, /* 1E918 (125208) */ - 5434, /* 1E919 (125209) */ - 5435, /* 1E91A (125210) */ - 5436, /* 1E91B (125211) */ - 5437, /* 1E91C (125212) */ - 5438, /* 1E91D (125213) */ - 5439, /* 1E91E (125214) */ - 5440, /* 1E91F (125215) */ - 5441, /* 1E920 (125216) */ - 5442, /* 1E921 (125217) */ + 5438, /* 1E900 (125184) */ + 5439, /* 1E901 (125185) */ + 5440, /* 1E902 (125186) */ + 5441, /* 1E903 (125187) */ + 5442, /* 1E904 (125188) */ + 5443, /* 1E905 (125189) */ + 5444, /* 1E906 (125190) */ + 5445, /* 1E907 (125191) */ + 5446, /* 1E908 (125192) */ + 5447, /* 1E909 (125193) */ + 5448, /* 1E90A (125194) */ + 5449, /* 1E90B (125195) */ + 5450, /* 1E90C (125196) */ + 5451, /* 1E90D (125197) */ + 5452, /* 1E90E (125198) */ + 5453, /* 1E90F (125199) */ + 5454, /* 1E910 (125200) */ + 5455, /* 1E911 (125201) */ + 5456, /* 1E912 (125202) */ + 5457, /* 1E913 (125203) */ + 5458, /* 1E914 (125204) */ + 5459, /* 1E915 (125205) */ + 5460, /* 1E916 (125206) */ + 5461, /* 1E917 (125207) */ + 5462, /* 1E918 (125208) */ + 5463, /* 1E919 (125209) */ + 5464, /* 1E91A (125210) */ + 5465, /* 1E91B (125211) */ + 5466, /* 1E91C (125212) */ + 5467, /* 1E91D (125213) */ + 5468, /* 1E91E (125214) */ + 5469, /* 1E91F (125215) */ + 5470, /* 1E920 (125216) */ + 5471, /* 1E921 (125217) */ 1, /* 1E922 (125218) */ 1, /* 1E923 (125219) */ 1, /* 1E924 (125220) */ @@ -104326,194 +104560,194 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1EDFD (126461) */ 56, /* 1EDFE (126462) */ 56, /* 1EDFF (126463) */ - 5443, /* 1EE00 (126464) */ - 5444, /* 1EE01 (126465) */ - 5445, /* 1EE02 (126466) */ - 5446, /* 1EE03 (126467) */ + 5472, /* 1EE00 (126464) */ + 5473, /* 1EE01 (126465) */ + 5474, /* 1EE02 (126466) */ + 5475, /* 1EE03 (126467) */ 56, /* 1EE04 (126468) */ - 5447, /* 1EE05 (126469) */ - 5448, /* 1EE06 (126470) */ - 5449, /* 1EE07 (126471) */ - 5450, /* 1EE08 (126472) */ - 5451, /* 1EE09 (126473) */ - 5452, /* 1EE0A (126474) */ - 5453, /* 1EE0B (126475) */ - 5454, /* 1EE0C (126476) */ - 5455, /* 1EE0D (126477) */ - 5456, /* 1EE0E (126478) */ - 5457, /* 1EE0F (126479) */ - 5458, /* 1EE10 (126480) */ - 5459, /* 1EE11 (126481) */ - 5460, /* 1EE12 (126482) */ - 5461, /* 1EE13 (126483) */ - 5462, /* 1EE14 (126484) */ - 5463, /* 1EE15 (126485) */ - 5464, /* 1EE16 (126486) */ - 5465, /* 1EE17 (126487) */ - 5466, /* 1EE18 (126488) */ - 5467, /* 1EE19 (126489) */ - 5468, /* 1EE1A (126490) */ - 5469, /* 1EE1B (126491) */ - 5470, /* 1EE1C (126492) */ - 5471, /* 1EE1D (126493) */ - 5472, /* 1EE1E (126494) */ - 5473, /* 1EE1F (126495) */ + 5476, /* 1EE05 (126469) */ + 5477, /* 1EE06 (126470) */ + 5478, /* 1EE07 (126471) */ + 5479, /* 1EE08 (126472) */ + 5480, /* 1EE09 (126473) */ + 5481, /* 1EE0A (126474) */ + 5482, /* 1EE0B (126475) */ + 5483, /* 1EE0C (126476) */ + 5484, /* 1EE0D (126477) */ + 5485, /* 1EE0E (126478) */ + 5486, /* 1EE0F (126479) */ + 5487, /* 1EE10 (126480) */ + 5488, /* 1EE11 (126481) */ + 5489, /* 1EE12 (126482) */ + 5490, /* 1EE13 (126483) */ + 5491, /* 1EE14 (126484) */ + 5492, /* 1EE15 (126485) */ + 5493, /* 1EE16 (126486) */ + 5494, /* 1EE17 (126487) */ + 5495, /* 1EE18 (126488) */ + 5496, /* 1EE19 (126489) */ + 5497, /* 1EE1A (126490) */ + 5498, /* 1EE1B (126491) */ + 5499, /* 1EE1C (126492) */ + 5500, /* 1EE1D (126493) */ + 5501, /* 1EE1E (126494) */ + 5502, /* 1EE1F (126495) */ 56, /* 1EE20 (126496) */ - 5444, /* 1EE21 (126497) */ - 5445, /* 1EE22 (126498) */ + 5473, /* 1EE21 (126497) */ + 5474, /* 1EE22 (126498) */ 56, /* 1EE23 (126499) */ - 5474, /* 1EE24 (126500) */ + 5503, /* 1EE24 (126500) */ 56, /* 1EE25 (126501) */ 56, /* 1EE26 (126502) */ - 5449, /* 1EE27 (126503) */ + 5478, /* 1EE27 (126503) */ 56, /* 1EE28 (126504) */ - 5451, /* 1EE29 (126505) */ - 5452, /* 1EE2A (126506) */ - 5453, /* 1EE2B (126507) */ - 5454, /* 1EE2C (126508) */ - 5455, /* 1EE2D (126509) */ - 5456, /* 1EE2E (126510) */ - 5457, /* 1EE2F (126511) */ - 5458, /* 1EE30 (126512) */ - 5459, /* 1EE31 (126513) */ - 5460, /* 1EE32 (126514) */ + 5480, /* 1EE29 (126505) */ + 5481, /* 1EE2A (126506) */ + 5482, /* 1EE2B (126507) */ + 5483, /* 1EE2C (126508) */ + 5484, /* 1EE2D (126509) */ + 5485, /* 1EE2E (126510) */ + 5486, /* 1EE2F (126511) */ + 5487, /* 1EE30 (126512) */ + 5488, /* 1EE31 (126513) */ + 5489, /* 1EE32 (126514) */ 56, /* 1EE33 (126515) */ - 5462, /* 1EE34 (126516) */ - 5463, /* 1EE35 (126517) */ - 5464, /* 1EE36 (126518) */ - 5465, /* 1EE37 (126519) */ + 5491, /* 1EE34 (126516) */ + 5492, /* 1EE35 (126517) */ + 5493, /* 1EE36 (126518) */ + 5494, /* 1EE37 (126519) */ 56, /* 1EE38 (126520) */ - 5467, /* 1EE39 (126521) */ + 5496, /* 1EE39 (126521) */ 56, /* 1EE3A (126522) */ - 5469, /* 1EE3B (126523) */ + 5498, /* 1EE3B (126523) */ 56, /* 1EE3C (126524) */ 56, /* 1EE3D (126525) */ 56, /* 1EE3E (126526) */ 56, /* 1EE3F (126527) */ 56, /* 1EE40 (126528) */ 56, /* 1EE41 (126529) */ - 5445, /* 1EE42 (126530) */ + 5474, /* 1EE42 (126530) */ 56, /* 1EE43 (126531) */ 56, /* 1EE44 (126532) */ 56, /* 1EE45 (126533) */ 56, /* 1EE46 (126534) */ - 5449, /* 1EE47 (126535) */ + 5478, /* 1EE47 (126535) */ 56, /* 1EE48 (126536) */ - 5451, /* 1EE49 (126537) */ + 5480, /* 1EE49 (126537) */ 56, /* 1EE4A (126538) */ - 5453, /* 1EE4B (126539) */ + 5482, /* 1EE4B (126539) */ 56, /* 1EE4C (126540) */ - 5455, /* 1EE4D (126541) */ - 5456, /* 1EE4E (126542) */ - 5457, /* 1EE4F (126543) */ + 5484, /* 1EE4D (126541) */ + 5485, /* 1EE4E (126542) */ + 5486, /* 1EE4F (126543) */ 56, /* 1EE50 (126544) */ - 5459, /* 1EE51 (126545) */ - 5460, /* 1EE52 (126546) */ + 5488, /* 1EE51 (126545) */ + 5489, /* 1EE52 (126546) */ 56, /* 1EE53 (126547) */ - 5462, /* 1EE54 (126548) */ + 5491, /* 1EE54 (126548) */ 56, /* 1EE55 (126549) */ 56, /* 1EE56 (126550) */ - 5465, /* 1EE57 (126551) */ + 5494, /* 1EE57 (126551) */ 56, /* 1EE58 (126552) */ - 5467, /* 1EE59 (126553) */ + 5496, /* 1EE59 (126553) */ 56, /* 1EE5A (126554) */ - 5469, /* 1EE5B (126555) */ + 5498, /* 1EE5B (126555) */ 56, /* 1EE5C (126556) */ - 5471, /* 1EE5D (126557) */ + 5500, /* 1EE5D (126557) */ 56, /* 1EE5E (126558) */ - 5473, /* 1EE5F (126559) */ + 5502, /* 1EE5F (126559) */ 56, /* 1EE60 (126560) */ - 5444, /* 1EE61 (126561) */ - 5445, /* 1EE62 (126562) */ + 5473, /* 1EE61 (126561) */ + 5474, /* 1EE62 (126562) */ 56, /* 1EE63 (126563) */ - 5474, /* 1EE64 (126564) */ + 5503, /* 1EE64 (126564) */ 56, /* 1EE65 (126565) */ 56, /* 1EE66 (126566) */ - 5449, /* 1EE67 (126567) */ - 5450, /* 1EE68 (126568) */ - 5451, /* 1EE69 (126569) */ - 5452, /* 1EE6A (126570) */ + 5478, /* 1EE67 (126567) */ + 5479, /* 1EE68 (126568) */ + 5480, /* 1EE69 (126569) */ + 5481, /* 1EE6A (126570) */ 56, /* 1EE6B (126571) */ - 5454, /* 1EE6C (126572) */ - 5455, /* 1EE6D (126573) */ - 5456, /* 1EE6E (126574) */ - 5457, /* 1EE6F (126575) */ - 5458, /* 1EE70 (126576) */ - 5459, /* 1EE71 (126577) */ - 5460, /* 1EE72 (126578) */ + 5483, /* 1EE6C (126572) */ + 5484, /* 1EE6D (126573) */ + 5485, /* 1EE6E (126574) */ + 5486, /* 1EE6F (126575) */ + 5487, /* 1EE70 (126576) */ + 5488, /* 1EE71 (126577) */ + 5489, /* 1EE72 (126578) */ 56, /* 1EE73 (126579) */ - 5462, /* 1EE74 (126580) */ - 5463, /* 1EE75 (126581) */ - 5464, /* 1EE76 (126582) */ - 5465, /* 1EE77 (126583) */ + 5491, /* 1EE74 (126580) */ + 5492, /* 1EE75 (126581) */ + 5493, /* 1EE76 (126582) */ + 5494, /* 1EE77 (126583) */ 56, /* 1EE78 (126584) */ - 5467, /* 1EE79 (126585) */ - 5468, /* 1EE7A (126586) */ - 5469, /* 1EE7B (126587) */ - 5470, /* 1EE7C (126588) */ + 5496, /* 1EE79 (126585) */ + 5497, /* 1EE7A (126586) */ + 5498, /* 1EE7B (126587) */ + 5499, /* 1EE7C (126588) */ 56, /* 1EE7D (126589) */ - 5472, /* 1EE7E (126590) */ + 5501, /* 1EE7E (126590) */ 56, /* 1EE7F (126591) */ - 5443, /* 1EE80 (126592) */ - 5444, /* 1EE81 (126593) */ - 5445, /* 1EE82 (126594) */ - 5446, /* 1EE83 (126595) */ - 5474, /* 1EE84 (126596) */ - 5447, /* 1EE85 (126597) */ - 5448, /* 1EE86 (126598) */ - 5449, /* 1EE87 (126599) */ - 5450, /* 1EE88 (126600) */ - 5451, /* 1EE89 (126601) */ + 5472, /* 1EE80 (126592) */ + 5473, /* 1EE81 (126593) */ + 5474, /* 1EE82 (126594) */ + 5475, /* 1EE83 (126595) */ + 5503, /* 1EE84 (126596) */ + 5476, /* 1EE85 (126597) */ + 5477, /* 1EE86 (126598) */ + 5478, /* 1EE87 (126599) */ + 5479, /* 1EE88 (126600) */ + 5480, /* 1EE89 (126601) */ 56, /* 1EE8A (126602) */ - 5453, /* 1EE8B (126603) */ - 5454, /* 1EE8C (126604) */ - 5455, /* 1EE8D (126605) */ - 5456, /* 1EE8E (126606) */ - 5457, /* 1EE8F (126607) */ - 5458, /* 1EE90 (126608) */ - 5459, /* 1EE91 (126609) */ - 5460, /* 1EE92 (126610) */ - 5461, /* 1EE93 (126611) */ - 5462, /* 1EE94 (126612) */ - 5463, /* 1EE95 (126613) */ - 5464, /* 1EE96 (126614) */ - 5465, /* 1EE97 (126615) */ - 5466, /* 1EE98 (126616) */ - 5467, /* 1EE99 (126617) */ - 5468, /* 1EE9A (126618) */ - 5469, /* 1EE9B (126619) */ + 5482, /* 1EE8B (126603) */ + 5483, /* 1EE8C (126604) */ + 5484, /* 1EE8D (126605) */ + 5485, /* 1EE8E (126606) */ + 5486, /* 1EE8F (126607) */ + 5487, /* 1EE90 (126608) */ + 5488, /* 1EE91 (126609) */ + 5489, /* 1EE92 (126610) */ + 5490, /* 1EE93 (126611) */ + 5491, /* 1EE94 (126612) */ + 5492, /* 1EE95 (126613) */ + 5493, /* 1EE96 (126614) */ + 5494, /* 1EE97 (126615) */ + 5495, /* 1EE98 (126616) */ + 5496, /* 1EE99 (126617) */ + 5497, /* 1EE9A (126618) */ + 5498, /* 1EE9B (126619) */ 56, /* 1EE9C (126620) */ 56, /* 1EE9D (126621) */ 56, /* 1EE9E (126622) */ 56, /* 1EE9F (126623) */ 56, /* 1EEA0 (126624) */ - 5444, /* 1EEA1 (126625) */ - 5445, /* 1EEA2 (126626) */ - 5446, /* 1EEA3 (126627) */ + 5473, /* 1EEA1 (126625) */ + 5474, /* 1EEA2 (126626) */ + 5475, /* 1EEA3 (126627) */ 56, /* 1EEA4 (126628) */ - 5447, /* 1EEA5 (126629) */ - 5448, /* 1EEA6 (126630) */ - 5449, /* 1EEA7 (126631) */ - 5450, /* 1EEA8 (126632) */ - 5451, /* 1EEA9 (126633) */ + 5476, /* 1EEA5 (126629) */ + 5477, /* 1EEA6 (126630) */ + 5478, /* 1EEA7 (126631) */ + 5479, /* 1EEA8 (126632) */ + 5480, /* 1EEA9 (126633) */ 56, /* 1EEAA (126634) */ - 5453, /* 1EEAB (126635) */ - 5454, /* 1EEAC (126636) */ - 5455, /* 1EEAD (126637) */ - 5456, /* 1EEAE (126638) */ - 5457, /* 1EEAF (126639) */ - 5458, /* 1EEB0 (126640) */ - 5459, /* 1EEB1 (126641) */ - 5460, /* 1EEB2 (126642) */ - 5461, /* 1EEB3 (126643) */ - 5462, /* 1EEB4 (126644) */ - 5463, /* 1EEB5 (126645) */ - 5464, /* 1EEB6 (126646) */ - 5465, /* 1EEB7 (126647) */ - 5466, /* 1EEB8 (126648) */ - 5467, /* 1EEB9 (126649) */ - 5468, /* 1EEBA (126650) */ - 5469, /* 1EEBB (126651) */ + 5482, /* 1EEAB (126635) */ + 5483, /* 1EEAC (126636) */ + 5484, /* 1EEAD (126637) */ + 5485, /* 1EEAE (126638) */ + 5486, /* 1EEAF (126639) */ + 5487, /* 1EEB0 (126640) */ + 5488, /* 1EEB1 (126641) */ + 5489, /* 1EEB2 (126642) */ + 5490, /* 1EEB3 (126643) */ + 5491, /* 1EEB4 (126644) */ + 5492, /* 1EEB5 (126645) */ + 5493, /* 1EEB6 (126646) */ + 5494, /* 1EEB7 (126647) */ + 5495, /* 1EEB8 (126648) */ + 5496, /* 1EEB9 (126649) */ + 5497, /* 1EEBA (126650) */ + 5498, /* 1EEBB (126651) */ 56, /* 1EEBC (126652) */ 56, /* 1EEBD (126653) */ 56, /* 1EEBE (126654) */ @@ -105094,86 +105328,86 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1F0FD (127229) */ 56, /* 1F0FE (127230) */ 56, /* 1F0FF (127231) */ - 5475, /* 1F100 (127232) */ - 5476, /* 1F101 (127233) */ - 5477, /* 1F102 (127234) */ - 5478, /* 1F103 (127235) */ - 5479, /* 1F104 (127236) */ - 5480, /* 1F105 (127237) */ - 5481, /* 1F106 (127238) */ - 5482, /* 1F107 (127239) */ - 5483, /* 1F108 (127240) */ - 5484, /* 1F109 (127241) */ - 5485, /* 1F10A (127242) */ + 5504, /* 1F100 (127232) */ + 5505, /* 1F101 (127233) */ + 5506, /* 1F102 (127234) */ + 5507, /* 1F103 (127235) */ + 5508, /* 1F104 (127236) */ + 5509, /* 1F105 (127237) */ + 5510, /* 1F106 (127238) */ + 5511, /* 1F107 (127239) */ + 5512, /* 1F108 (127240) */ + 5513, /* 1F109 (127241) */ + 5514, /* 1F10A (127242) */ 1, /* 1F10B (127243) */ 1, /* 1F10C (127244) */ 1, /* 1F10D (127245) */ 1, /* 1F10E (127246) */ 1, /* 1F10F (127247) */ - 5486, /* 1F110 (127248) */ - 5487, /* 1F111 (127249) */ - 5488, /* 1F112 (127250) */ - 5489, /* 1F113 (127251) */ - 5490, /* 1F114 (127252) */ - 5491, /* 1F115 (127253) */ - 5492, /* 1F116 (127254) */ - 5493, /* 1F117 (127255) */ - 5494, /* 1F118 (127256) */ - 5495, /* 1F119 (127257) */ - 5496, /* 1F11A (127258) */ - 5497, /* 1F11B (127259) */ - 5498, /* 1F11C (127260) */ - 5499, /* 1F11D (127261) */ - 5500, /* 1F11E (127262) */ - 5501, /* 1F11F (127263) */ - 5502, /* 1F120 (127264) */ - 5503, /* 1F121 (127265) */ - 5504, /* 1F122 (127266) */ - 5505, /* 1F123 (127267) */ - 5506, /* 1F124 (127268) */ - 5507, /* 1F125 (127269) */ - 5508, /* 1F126 (127270) */ - 5509, /* 1F127 (127271) */ - 5510, /* 1F128 (127272) */ - 5511, /* 1F129 (127273) */ - 5512, /* 1F12A (127274) */ + 5515, /* 1F110 (127248) */ + 5516, /* 1F111 (127249) */ + 5517, /* 1F112 (127250) */ + 5518, /* 1F113 (127251) */ + 5519, /* 1F114 (127252) */ + 5520, /* 1F115 (127253) */ + 5521, /* 1F116 (127254) */ + 5522, /* 1F117 (127255) */ + 5523, /* 1F118 (127256) */ + 5524, /* 1F119 (127257) */ + 5525, /* 1F11A (127258) */ + 5526, /* 1F11B (127259) */ + 5527, /* 1F11C (127260) */ + 5528, /* 1F11D (127261) */ + 5529, /* 1F11E (127262) */ + 5530, /* 1F11F (127263) */ + 5531, /* 1F120 (127264) */ + 5532, /* 1F121 (127265) */ + 5533, /* 1F122 (127266) */ + 5534, /* 1F123 (127267) */ + 5535, /* 1F124 (127268) */ + 5536, /* 1F125 (127269) */ + 5537, /* 1F126 (127270) */ + 5538, /* 1F127 (127271) */ + 5539, /* 1F128 (127272) */ + 5540, /* 1F129 (127273) */ + 5541, /* 1F12A (127274) */ 2005, /* 1F12B (127275) */ 2020, /* 1F12C (127276) */ - 5513, /* 1F12D (127277) */ - 5514, /* 1F12E (127278) */ + 5542, /* 1F12D (127277) */ + 5543, /* 1F12E (127278) */ 1, /* 1F12F (127279) */ - 5515, /* 1F130 (127280) */ - 5516, /* 1F131 (127281) */ - 5517, /* 1F132 (127282) */ - 5518, /* 1F133 (127283) */ - 5519, /* 1F134 (127284) */ - 5520, /* 1F135 (127285) */ - 5521, /* 1F136 (127286) */ - 5522, /* 1F137 (127287) */ - 5523, /* 1F138 (127288) */ - 5524, /* 1F139 (127289) */ - 5525, /* 1F13A (127290) */ - 5526, /* 1F13B (127291) */ - 5527, /* 1F13C (127292) */ - 5528, /* 1F13D (127293) */ - 5529, /* 1F13E (127294) */ - 5530, /* 1F13F (127295) */ - 5531, /* 1F140 (127296) */ - 5532, /* 1F141 (127297) */ - 5533, /* 1F142 (127298) */ - 5534, /* 1F143 (127299) */ - 5535, /* 1F144 (127300) */ - 5536, /* 1F145 (127301) */ - 5537, /* 1F146 (127302) */ - 5538, /* 1F147 (127303) */ - 5539, /* 1F148 (127304) */ - 5540, /* 1F149 (127305) */ - 5541, /* 1F14A (127306) */ + 5544, /* 1F130 (127280) */ + 5545, /* 1F131 (127281) */ + 5546, /* 1F132 (127282) */ + 5547, /* 1F133 (127283) */ + 5548, /* 1F134 (127284) */ + 5549, /* 1F135 (127285) */ + 5550, /* 1F136 (127286) */ + 5551, /* 1F137 (127287) */ + 5552, /* 1F138 (127288) */ + 5553, /* 1F139 (127289) */ + 5554, /* 1F13A (127290) */ + 5555, /* 1F13B (127291) */ + 5556, /* 1F13C (127292) */ + 5557, /* 1F13D (127293) */ + 5558, /* 1F13E (127294) */ + 5559, /* 1F13F (127295) */ + 5560, /* 1F140 (127296) */ + 5561, /* 1F141 (127297) */ + 5562, /* 1F142 (127298) */ + 5563, /* 1F143 (127299) */ + 5564, /* 1F144 (127300) */ + 5565, /* 1F145 (127301) */ + 5566, /* 1F146 (127302) */ + 5567, /* 1F147 (127303) */ + 5568, /* 1F148 (127304) */ + 5569, /* 1F149 (127305) */ + 5570, /* 1F14A (127306) */ 3053, /* 1F14B (127307) */ - 5542, /* 1F14C (127308) */ - 5543, /* 1F14D (127309) */ - 5544, /* 1F14E (127310) */ - 5545, /* 1F14F (127311) */ + 5571, /* 1F14C (127308) */ + 5572, /* 1F14D (127309) */ + 5573, /* 1F14E (127310) */ + 5574, /* 1F14F (127311) */ 1, /* 1F150 (127312) */ 1, /* 1F151 (127313) */ 1, /* 1F152 (127314) */ @@ -105200,9 +105434,9 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1F167 (127335) */ 1, /* 1F168 (127336) */ 1, /* 1F169 (127337) */ - 5546, /* 1F16A (127338) */ - 5547, /* 1F16B (127339) */ - 5548, /* 1F16C (127340) */ + 5575, /* 1F16A (127338) */ + 5576, /* 1F16B (127339) */ + 5577, /* 1F16C (127340) */ 1, /* 1F16D (127341) */ 1, /* 1F16E (127342) */ 1, /* 1F16F (127343) */ @@ -105238,7 +105472,7 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1F18D (127373) */ 1, /* 1F18E (127374) */ 1, /* 1F18F (127375) */ - 5549, /* 1F190 (127376) */ + 5578, /* 1F190 (127376) */ 1, /* 1F191 (127377) */ 1, /* 1F192 (127378) */ 1, /* 1F193 (127379) */ @@ -105350,9 +105584,9 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1F1FD (127485) */ 1, /* 1F1FE (127486) */ 1, /* 1F1FF (127487) */ - 5550, /* 1F200 (127488) */ - 5551, /* 1F201 (127489) */ - 5552, /* 1F202 (127490) */ + 5579, /* 1F200 (127488) */ + 5580, /* 1F201 (127489) */ + 5581, /* 1F202 (127490) */ 56, /* 1F203 (127491) */ 56, /* 1F204 (127492) */ 56, /* 1F205 (127493) */ @@ -105366,63 +105600,63 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1F20D (127501) */ 56, /* 1F20E (127502) */ 56, /* 1F20F (127503) */ - 5553, /* 1F210 (127504) */ - 5554, /* 1F211 (127505) */ - 5555, /* 1F212 (127506) */ - 5556, /* 1F213 (127507) */ - 5557, /* 1F214 (127508) */ - 5558, /* 1F215 (127509) */ - 5559, /* 1F216 (127510) */ - 5560, /* 1F217 (127511) */ - 5561, /* 1F218 (127512) */ - 5562, /* 1F219 (127513) */ - 5563, /* 1F21A (127514) */ - 5564, /* 1F21B (127515) */ - 5565, /* 1F21C (127516) */ - 5566, /* 1F21D (127517) */ - 5567, /* 1F21E (127518) */ - 5568, /* 1F21F (127519) */ - 5569, /* 1F220 (127520) */ - 5570, /* 1F221 (127521) */ - 5571, /* 1F222 (127522) */ - 5572, /* 1F223 (127523) */ - 5573, /* 1F224 (127524) */ - 5574, /* 1F225 (127525) */ - 5575, /* 1F226 (127526) */ - 5576, /* 1F227 (127527) */ - 5577, /* 1F228 (127528) */ - 5578, /* 1F229 (127529) */ - 5579, /* 1F22A (127530) */ - 5580, /* 1F22B (127531) */ - 5581, /* 1F22C (127532) */ - 5582, /* 1F22D (127533) */ - 5583, /* 1F22E (127534) */ - 5584, /* 1F22F (127535) */ - 5585, /* 1F230 (127536) */ - 5586, /* 1F231 (127537) */ - 5587, /* 1F232 (127538) */ - 5588, /* 1F233 (127539) */ - 5589, /* 1F234 (127540) */ - 5590, /* 1F235 (127541) */ - 5591, /* 1F236 (127542) */ - 5592, /* 1F237 (127543) */ - 5593, /* 1F238 (127544) */ - 5594, /* 1F239 (127545) */ - 5595, /* 1F23A (127546) */ - 5596, /* 1F23B (127547) */ + 5582, /* 1F210 (127504) */ + 5583, /* 1F211 (127505) */ + 5584, /* 1F212 (127506) */ + 5585, /* 1F213 (127507) */ + 5586, /* 1F214 (127508) */ + 5587, /* 1F215 (127509) */ + 5588, /* 1F216 (127510) */ + 5589, /* 1F217 (127511) */ + 5590, /* 1F218 (127512) */ + 5591, /* 1F219 (127513) */ + 5592, /* 1F21A (127514) */ + 5593, /* 1F21B (127515) */ + 5594, /* 1F21C (127516) */ + 5595, /* 1F21D (127517) */ + 5596, /* 1F21E (127518) */ + 5597, /* 1F21F (127519) */ + 5598, /* 1F220 (127520) */ + 5599, /* 1F221 (127521) */ + 5600, /* 1F222 (127522) */ + 5601, /* 1F223 (127523) */ + 5602, /* 1F224 (127524) */ + 5603, /* 1F225 (127525) */ + 5604, /* 1F226 (127526) */ + 5605, /* 1F227 (127527) */ + 5606, /* 1F228 (127528) */ + 5607, /* 1F229 (127529) */ + 5608, /* 1F22A (127530) */ + 5609, /* 1F22B (127531) */ + 5610, /* 1F22C (127532) */ + 5611, /* 1F22D (127533) */ + 5612, /* 1F22E (127534) */ + 5613, /* 1F22F (127535) */ + 5614, /* 1F230 (127536) */ + 5615, /* 1F231 (127537) */ + 5616, /* 1F232 (127538) */ + 5617, /* 1F233 (127539) */ + 5618, /* 1F234 (127540) */ + 5619, /* 1F235 (127541) */ + 5620, /* 1F236 (127542) */ + 5621, /* 1F237 (127543) */ + 5622, /* 1F238 (127544) */ + 5623, /* 1F239 (127545) */ + 5624, /* 1F23A (127546) */ + 5625, /* 1F23B (127547) */ 56, /* 1F23C (127548) */ 56, /* 1F23D (127549) */ 56, /* 1F23E (127550) */ 56, /* 1F23F (127551) */ - 5597, /* 1F240 (127552) */ - 5598, /* 1F241 (127553) */ - 5599, /* 1F242 (127554) */ - 5600, /* 1F243 (127555) */ - 5601, /* 1F244 (127556) */ - 5602, /* 1F245 (127557) */ - 5603, /* 1F246 (127558) */ - 5604, /* 1F247 (127559) */ - 5605, /* 1F248 (127560) */ + 5626, /* 1F240 (127552) */ + 5627, /* 1F241 (127553) */ + 5628, /* 1F242 (127554) */ + 5629, /* 1F243 (127555) */ + 5630, /* 1F244 (127556) */ + 5631, /* 1F245 (127557) */ + 5632, /* 1F246 (127558) */ + 5633, /* 1F247 (127559) */ + 5634, /* 1F248 (127560) */ 56, /* 1F249 (127561) */ 56, /* 1F24A (127562) */ 56, /* 1F24B (127563) */ @@ -105430,8 +105664,8 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1F24D (127565) */ 56, /* 1F24E (127566) */ 56, /* 1F24F (127567) */ - 5606, /* 1F250 (127568) */ - 5607, /* 1F251 (127569) */ + 5635, /* 1F250 (127568) */ + 5636, /* 1F251 (127569) */ 56, /* 1F252 (127570) */ 56, /* 1F253 (127571) */ 56, /* 1F254 (127572) */ @@ -106590,7 +106824,7 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1F6D5 (128725) */ 1, /* 1F6D6 (128726) */ 1, /* 1F6D7 (128727) */ - 56, /* 1F6D8 (128728) */ + 1, /* 1F6D8 (128728) */ 56, /* 1F6D9 (128729) */ 56, /* 1F6DA (128730) */ 56, /* 1F6DB (128731) */ @@ -106749,10 +106983,10 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1F774 (128884) */ 1, /* 1F775 (128885) */ 1, /* 1F776 (128886) */ - 56, /* 1F777 (128887) */ - 56, /* 1F778 (128888) */ - 56, /* 1F779 (128889) */ - 56, /* 1F77A (128890) */ + 1, /* 1F777 (128887) */ + 1, /* 1F778 (128888) */ + 1, /* 1F779 (128889) */ + 1, /* 1F77A (128890) */ 1, /* 1F77B (128891) */ 1, /* 1F77C (128892) */ 1, /* 1F77D (128893) */ @@ -107094,15 +107328,15 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 1F8CD (129229) */ 56, /* 1F8CE (129230) */ 56, /* 1F8CF (129231) */ - 56, /* 1F8D0 (129232) */ - 56, /* 1F8D1 (129233) */ - 56, /* 1F8D2 (129234) */ - 56, /* 1F8D3 (129235) */ - 56, /* 1F8D4 (129236) */ - 56, /* 1F8D5 (129237) */ - 56, /* 1F8D6 (129238) */ - 56, /* 1F8D7 (129239) */ - 56, /* 1F8D8 (129240) */ + 1, /* 1F8D0 (129232) */ + 1, /* 1F8D1 (129233) */ + 1, /* 1F8D2 (129234) */ + 1, /* 1F8D3 (129235) */ + 1, /* 1F8D4 (129236) */ + 1, /* 1F8D5 (129237) */ + 1, /* 1F8D6 (129238) */ + 1, /* 1F8D7 (129239) */ + 1, /* 1F8D8 (129240) */ 56, /* 1F8D9 (129241) */ 56, /* 1F8DA (129242) */ 56, /* 1F8DB (129243) */ @@ -107482,10 +107716,10 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1FA51 (129617) */ 1, /* 1FA52 (129618) */ 1, /* 1FA53 (129619) */ - 56, /* 1FA54 (129620) */ - 56, /* 1FA55 (129621) */ - 56, /* 1FA56 (129622) */ - 56, /* 1FA57 (129623) */ + 1, /* 1FA54 (129620) */ + 1, /* 1FA55 (129621) */ + 1, /* 1FA56 (129622) */ + 1, /* 1FA57 (129623) */ 56, /* 1FA58 (129624) */ 56, /* 1FA59 (129625) */ 56, /* 1FA5A (129626) */ @@ -107536,11 +107770,11 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1FA87 (129671) */ 1, /* 1FA88 (129672) */ 1, /* 1FA89 (129673) */ - 56, /* 1FA8A (129674) */ + 1, /* 1FA8A (129674) */ 56, /* 1FA8B (129675) */ 56, /* 1FA8C (129676) */ 56, /* 1FA8D (129677) */ - 56, /* 1FA8E (129678) */ + 1, /* 1FA8E (129678) */ 1, /* 1FA8F (129679) */ 1, /* 1FA90 (129680) */ 1, /* 1FA91 (129681) */ @@ -107598,12 +107832,12 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1FAC5 (129733) */ 1, /* 1FAC6 (129734) */ 56, /* 1FAC7 (129735) */ - 56, /* 1FAC8 (129736) */ + 1, /* 1FAC8 (129736) */ 56, /* 1FAC9 (129737) */ 56, /* 1FACA (129738) */ 56, /* 1FACB (129739) */ 56, /* 1FACC (129740) */ - 56, /* 1FACD (129741) */ + 1, /* 1FACD (129741) */ 1, /* 1FACE (129742) */ 1, /* 1FACF (129743) */ 1, /* 1FAD0 (129744) */ @@ -107632,12 +107866,12 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1FAE7 (129767) */ 1, /* 1FAE8 (129768) */ 1, /* 1FAE9 (129769) */ - 56, /* 1FAEA (129770) */ + 1, /* 1FAEA (129770) */ 56, /* 1FAEB (129771) */ 56, /* 1FAEC (129772) */ 56, /* 1FAED (129773) */ 56, /* 1FAEE (129774) */ - 56, /* 1FAEF (129775) */ + 1, /* 1FAEF (129775) */ 1, /* 1FAF0 (129776) */ 1, /* 1FAF1 (129777) */ 1, /* 1FAF2 (129778) */ @@ -107894,17 +108128,17 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 1FBED (130029) */ 1, /* 1FBEE (130030) */ 1, /* 1FBEF (130031) */ - 5215, /* 1FBF0 (130032) */ - 5216, /* 1FBF1 (130033) */ - 5217, /* 1FBF2 (130034) */ - 5218, /* 1FBF3 (130035) */ - 5219, /* 1FBF4 (130036) */ - 5220, /* 1FBF5 (130037) */ - 5221, /* 1FBF6 (130038) */ - 5222, /* 1FBF7 (130039) */ - 5223, /* 1FBF8 (130040) */ - 5224, /* 1FBF9 (130041) */ - 56, /* 1FBFA (130042) */ + 5244, /* 1FBF0 (130032) */ + 5245, /* 1FBF1 (130033) */ + 5246, /* 1FBF2 (130034) */ + 5247, /* 1FBF3 (130035) */ + 5248, /* 1FBF4 (130036) */ + 5249, /* 1FBF5 (130037) */ + 5250, /* 1FBF6 (130038) */ + 5251, /* 1FBF7 (130039) */ + 5252, /* 1FBF8 (130040) */ + 5253, /* 1FBF9 (130041) */ + 1, /* 1FBFA (130042) */ 56, /* 1FBFB (130043) */ 56, /* 1FBFC (130044) */ 56, /* 1FBFD (130045) */ @@ -155840,12 +156074,12 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 2B737 (177975) */ 1, /* 2B738 (177976) */ 1, /* 2B739 (177977) */ - 56, /* 2B73A (177978) */ - 56, /* 2B73B (177979) */ - 56, /* 2B73C (177980) */ - 56, /* 2B73D (177981) */ - 56, /* 2B73E (177982) */ - 56, /* 2B73F (177983) */ + 1, /* 2B73A (177978) */ + 1, /* 2B73B (177979) */ + 1, /* 2B73C (177980) */ + 1, /* 2B73D (177981) */ + 1, /* 2B73E (177982) */ + 1, /* 2B73F (177983) */ 1, /* 2B740 (177984) */ 1, /* 2B741 (177985) */ 1, /* 2B742 (177986) */ @@ -161832,18 +162066,18 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 2CE9F (183967) */ 1, /* 2CEA0 (183968) */ 1, /* 2CEA1 (183969) */ - 56, /* 2CEA2 (183970) */ - 56, /* 2CEA3 (183971) */ - 56, /* 2CEA4 (183972) */ - 56, /* 2CEA5 (183973) */ - 56, /* 2CEA6 (183974) */ - 56, /* 2CEA7 (183975) */ - 56, /* 2CEA8 (183976) */ - 56, /* 2CEA9 (183977) */ - 56, /* 2CEAA (183978) */ - 56, /* 2CEAB (183979) */ - 56, /* 2CEAC (183980) */ - 56, /* 2CEAD (183981) */ + 1, /* 2CEA2 (183970) */ + 1, /* 2CEA3 (183971) */ + 1, /* 2CEA4 (183972) */ + 1, /* 2CEA5 (183973) */ + 1, /* 2CEA6 (183974) */ + 1, /* 2CEA7 (183975) */ + 1, /* 2CEA8 (183976) */ + 1, /* 2CEA9 (183977) */ + 1, /* 2CEAA (183978) */ + 1, /* 2CEAB (183979) */ + 1, /* 2CEAC (183980) */ + 1, /* 2CEAD (183981) */ 56, /* 2CEAE (183982) */ 56, /* 2CEAF (183983) */ 1, /* 2CEB0 (183984) */ @@ -172422,548 +172656,548 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 56, /* 2F7FD (194557) */ 56, /* 2F7FE (194558) */ 56, /* 2F7FF (194559) */ - 5608, /* 2F800 (194560) */ - 5609, /* 2F801 (194561) */ - 5610, /* 2F802 (194562) */ - 5611, /* 2F803 (194563) */ - 5612, /* 2F804 (194564) */ - 3630, /* 2F805 (194565) */ - 5613, /* 2F806 (194566) */ - 5614, /* 2F807 (194567) */ - 5615, /* 2F808 (194568) */ - 5616, /* 2F809 (194569) */ - 3631, /* 2F80A (194570) */ - 5617, /* 2F80B (194571) */ - 5618, /* 2F80C (194572) */ - 5619, /* 2F80D (194573) */ - 3632, /* 2F80E (194574) */ - 5620, /* 2F80F (194575) */ - 5621, /* 2F810 (194576) */ - 5622, /* 2F811 (194577) */ - 5623, /* 2F812 (194578) */ - 5624, /* 2F813 (194579) */ - 5625, /* 2F814 (194580) */ - 5626, /* 2F815 (194581) */ - 5627, /* 2F816 (194582) */ - 5628, /* 2F817 (194583) */ - 5629, /* 2F818 (194584) */ - 5630, /* 2F819 (194585) */ - 5631, /* 2F81A (194586) */ - 3690, /* 2F81B (194587) */ - 5632, /* 2F81C (194588) */ - 5633, /* 2F81D (194589) */ - 5634, /* 2F81E (194590) */ - 5635, /* 2F81F (194591) */ - 5636, /* 2F820 (194592) */ - 5637, /* 2F821 (194593) */ - 5638, /* 2F822 (194594) */ - 5639, /* 2F823 (194595) */ - 5640, /* 2F824 (194596) */ - 3695, /* 2F825 (194597) */ - 3633, /* 2F826 (194598) */ - 3634, /* 2F827 (194599) */ - 3696, /* 2F828 (194600) */ - 5641, /* 2F829 (194601) */ - 5642, /* 2F82A (194602) */ - 3441, /* 2F82B (194603) */ - 5643, /* 2F82C (194604) */ - 3635, /* 2F82D (194605) */ - 5644, /* 2F82E (194606) */ - 5645, /* 2F82F (194607) */ - 5646, /* 2F830 (194608) */ - 5647, /* 2F831 (194609) */ - 5647, /* 2F832 (194610) */ - 5647, /* 2F833 (194611) */ - 5648, /* 2F834 (194612) */ - 5649, /* 2F835 (194613) */ - 5650, /* 2F836 (194614) */ - 5651, /* 2F837 (194615) */ - 5652, /* 2F838 (194616) */ - 5653, /* 2F839 (194617) */ - 5654, /* 2F83A (194618) */ - 5655, /* 2F83B (194619) */ - 5656, /* 2F83C (194620) */ - 5657, /* 2F83D (194621) */ - 5658, /* 2F83E (194622) */ - 5659, /* 2F83F (194623) */ - 5660, /* 2F840 (194624) */ - 5661, /* 2F841 (194625) */ - 5662, /* 2F842 (194626) */ - 5663, /* 2F843 (194627) */ - 5664, /* 2F844 (194628) */ - 5665, /* 2F845 (194629) */ - 5665, /* 2F846 (194630) */ - 3698, /* 2F847 (194631) */ - 5666, /* 2F848 (194632) */ - 5667, /* 2F849 (194633) */ - 5668, /* 2F84A (194634) */ - 5669, /* 2F84B (194635) */ - 3637, /* 2F84C (194636) */ - 5670, /* 2F84D (194637) */ - 5671, /* 2F84E (194638) */ - 5672, /* 2F84F (194639) */ - 3594, /* 2F850 (194640) */ - 5673, /* 2F851 (194641) */ - 5674, /* 2F852 (194642) */ - 5675, /* 2F853 (194643) */ - 5676, /* 2F854 (194644) */ - 5677, /* 2F855 (194645) */ - 5678, /* 2F856 (194646) */ - 5679, /* 2F857 (194647) */ - 5680, /* 2F858 (194648) */ - 5681, /* 2F859 (194649) */ - 5682, /* 2F85A (194650) */ - 5683, /* 2F85B (194651) */ - 5684, /* 2F85C (194652) */ - 5685, /* 2F85D (194653) */ - 5686, /* 2F85E (194654) */ - 5687, /* 2F85F (194655) */ - 5688, /* 2F860 (194656) */ - 5689, /* 2F861 (194657) */ - 5690, /* 2F862 (194658) */ - 5691, /* 2F863 (194659) */ - 5692, /* 2F864 (194660) */ - 5693, /* 2F865 (194661) */ - 5694, /* 2F866 (194662) */ - 5695, /* 2F867 (194663) */ - 5696, /* 2F868 (194664) */ - 5697, /* 2F869 (194665) */ - 5698, /* 2F86A (194666) */ - 5698, /* 2F86B (194667) */ - 5699, /* 2F86C (194668) */ - 5700, /* 2F86D (194669) */ - 5701, /* 2F86E (194670) */ - 3437, /* 2F86F (194671) */ - 5702, /* 2F870 (194672) */ - 5703, /* 2F871 (194673) */ - 5704, /* 2F872 (194674) */ - 5705, /* 2F873 (194675) */ - 5706, /* 2F874 (194676) */ - 5707, /* 2F875 (194677) */ - 5708, /* 2F876 (194678) */ - 5709, /* 2F877 (194679) */ - 3642, /* 2F878 (194680) */ - 5710, /* 2F879 (194681) */ - 5711, /* 2F87A (194682) */ - 5712, /* 2F87B (194683) */ - 5713, /* 2F87C (194684) */ - 5714, /* 2F87D (194685) */ - 5715, /* 2F87E (194686) */ - 5716, /* 2F87F (194687) */ - 5717, /* 2F880 (194688) */ - 5718, /* 2F881 (194689) */ - 5719, /* 2F882 (194690) */ - 5720, /* 2F883 (194691) */ - 5721, /* 2F884 (194692) */ - 5722, /* 2F885 (194693) */ - 5723, /* 2F886 (194694) */ - 5724, /* 2F887 (194695) */ - 5725, /* 2F888 (194696) */ - 5726, /* 2F889 (194697) */ - 5727, /* 2F88A (194698) */ - 5728, /* 2F88B (194699) */ - 5729, /* 2F88C (194700) */ - 5730, /* 2F88D (194701) */ - 3383, /* 2F88E (194702) */ - 5731, /* 2F88F (194703) */ - 5732, /* 2F890 (194704) */ - 5733, /* 2F891 (194705) */ - 5733, /* 2F892 (194706) */ - 5734, /* 2F893 (194707) */ - 5735, /* 2F894 (194708) */ - 5735, /* 2F895 (194709) */ - 5736, /* 2F896 (194710) */ - 5737, /* 2F897 (194711) */ - 5738, /* 2F898 (194712) */ - 5739, /* 2F899 (194713) */ - 5740, /* 2F89A (194714) */ - 5741, /* 2F89B (194715) */ - 5742, /* 2F89C (194716) */ - 5743, /* 2F89D (194717) */ - 5744, /* 2F89E (194718) */ - 5745, /* 2F89F (194719) */ - 5746, /* 2F8A0 (194720) */ - 5747, /* 2F8A1 (194721) */ - 5748, /* 2F8A2 (194722) */ - 3643, /* 2F8A3 (194723) */ - 5749, /* 2F8A4 (194724) */ - 5750, /* 2F8A5 (194725) */ - 5751, /* 2F8A6 (194726) */ - 5752, /* 2F8A7 (194727) */ - 3710, /* 2F8A8 (194728) */ - 5752, /* 2F8A9 (194729) */ - 5753, /* 2F8AA (194730) */ - 3645, /* 2F8AB (194731) */ - 5754, /* 2F8AC (194732) */ - 5755, /* 2F8AD (194733) */ - 5756, /* 2F8AE (194734) */ - 5757, /* 2F8AF (194735) */ - 3646, /* 2F8B0 (194736) */ - 3356, /* 2F8B1 (194737) */ - 5758, /* 2F8B2 (194738) */ - 5759, /* 2F8B3 (194739) */ - 5760, /* 2F8B4 (194740) */ - 5761, /* 2F8B5 (194741) */ - 5762, /* 2F8B6 (194742) */ - 5763, /* 2F8B7 (194743) */ - 5764, /* 2F8B8 (194744) */ - 5765, /* 2F8B9 (194745) */ - 5766, /* 2F8BA (194746) */ - 5767, /* 2F8BB (194747) */ - 5768, /* 2F8BC (194748) */ - 5769, /* 2F8BD (194749) */ - 5770, /* 2F8BE (194750) */ - 5771, /* 2F8BF (194751) */ - 5772, /* 2F8C0 (194752) */ - 5773, /* 2F8C1 (194753) */ - 5774, /* 2F8C2 (194754) */ - 5775, /* 2F8C3 (194755) */ - 5776, /* 2F8C4 (194756) */ - 5777, /* 2F8C5 (194757) */ - 5778, /* 2F8C6 (194758) */ - 5779, /* 2F8C7 (194759) */ - 3647, /* 2F8C8 (194760) */ - 5780, /* 2F8C9 (194761) */ - 5781, /* 2F8CA (194762) */ - 5782, /* 2F8CB (194763) */ - 5783, /* 2F8CC (194764) */ - 5784, /* 2F8CD (194765) */ - 5785, /* 2F8CE (194766) */ - 3649, /* 2F8CF (194767) */ - 5786, /* 2F8D0 (194768) */ - 5787, /* 2F8D1 (194769) */ - 5788, /* 2F8D2 (194770) */ - 5789, /* 2F8D3 (194771) */ - 5790, /* 2F8D4 (194772) */ - 5791, /* 2F8D5 (194773) */ - 5792, /* 2F8D6 (194774) */ - 5793, /* 2F8D7 (194775) */ - 3384, /* 2F8D8 (194776) */ - 3718, /* 2F8D9 (194777) */ - 5794, /* 2F8DA (194778) */ - 5795, /* 2F8DB (194779) */ - 5796, /* 2F8DC (194780) */ - 5797, /* 2F8DD (194781) */ - 5798, /* 2F8DE (194782) */ - 5799, /* 2F8DF (194783) */ - 5800, /* 2F8E0 (194784) */ - 5801, /* 2F8E1 (194785) */ - 3650, /* 2F8E2 (194786) */ - 5802, /* 2F8E3 (194787) */ - 5803, /* 2F8E4 (194788) */ - 5804, /* 2F8E5 (194789) */ - 5805, /* 2F8E6 (194790) */ - 3761, /* 2F8E7 (194791) */ - 5806, /* 2F8E8 (194792) */ - 5807, /* 2F8E9 (194793) */ - 5808, /* 2F8EA (194794) */ - 5809, /* 2F8EB (194795) */ - 5810, /* 2F8EC (194796) */ - 5811, /* 2F8ED (194797) */ - 5812, /* 2F8EE (194798) */ - 5813, /* 2F8EF (194799) */ - 5814, /* 2F8F0 (194800) */ - 5815, /* 2F8F1 (194801) */ - 5816, /* 2F8F2 (194802) */ - 5817, /* 2F8F3 (194803) */ - 5818, /* 2F8F4 (194804) */ - 3454, /* 2F8F5 (194805) */ - 5819, /* 2F8F6 (194806) */ - 5820, /* 2F8F7 (194807) */ - 5821, /* 2F8F8 (194808) */ - 5822, /* 2F8F9 (194809) */ - 5823, /* 2F8FA (194810) */ - 5824, /* 2F8FB (194811) */ - 5825, /* 2F8FC (194812) */ - 5826, /* 2F8FD (194813) */ - 5827, /* 2F8FE (194814) */ - 5828, /* 2F8FF (194815) */ - 5829, /* 2F900 (194816) */ - 3651, /* 2F901 (194817) */ - 3541, /* 2F902 (194818) */ - 5830, /* 2F903 (194819) */ - 5831, /* 2F904 (194820) */ - 5832, /* 2F905 (194821) */ - 5833, /* 2F906 (194822) */ - 5834, /* 2F907 (194823) */ - 5835, /* 2F908 (194824) */ - 5836, /* 2F909 (194825) */ - 5837, /* 2F90A (194826) */ - 3722, /* 2F90B (194827) */ - 5838, /* 2F90C (194828) */ - 5839, /* 2F90D (194829) */ - 5840, /* 2F90E (194830) */ - 5841, /* 2F90F (194831) */ - 5842, /* 2F910 (194832) */ - 5843, /* 2F911 (194833) */ - 5844, /* 2F912 (194834) */ - 5845, /* 2F913 (194835) */ - 3723, /* 2F914 (194836) */ - 5846, /* 2F915 (194837) */ - 5847, /* 2F916 (194838) */ - 5848, /* 2F917 (194839) */ - 5849, /* 2F918 (194840) */ - 5850, /* 2F919 (194841) */ - 5851, /* 2F91A (194842) */ - 5852, /* 2F91B (194843) */ - 5853, /* 2F91C (194844) */ - 5854, /* 2F91D (194845) */ - 5855, /* 2F91E (194846) */ - 5856, /* 2F91F (194847) */ - 5857, /* 2F920 (194848) */ - 3725, /* 2F921 (194849) */ - 5858, /* 2F922 (194850) */ - 5859, /* 2F923 (194851) */ - 5860, /* 2F924 (194852) */ - 5861, /* 2F925 (194853) */ - 5862, /* 2F926 (194854) */ - 5863, /* 2F927 (194855) */ - 5864, /* 2F928 (194856) */ - 5865, /* 2F929 (194857) */ - 5866, /* 2F92A (194858) */ - 5867, /* 2F92B (194859) */ - 5868, /* 2F92C (194860) */ - 5868, /* 2F92D (194861) */ - 5869, /* 2F92E (194862) */ - 5870, /* 2F92F (194863) */ - 3727, /* 2F930 (194864) */ - 5871, /* 2F931 (194865) */ - 5872, /* 2F932 (194866) */ - 5873, /* 2F933 (194867) */ - 5874, /* 2F934 (194868) */ - 5875, /* 2F935 (194869) */ - 5876, /* 2F936 (194870) */ - 5877, /* 2F937 (194871) */ - 3440, /* 2F938 (194872) */ - 5878, /* 2F939 (194873) */ - 5879, /* 2F93A (194874) */ - 5880, /* 2F93B (194875) */ - 5881, /* 2F93C (194876) */ - 5882, /* 2F93D (194877) */ - 5883, /* 2F93E (194878) */ - 5884, /* 2F93F (194879) */ - 3733, /* 2F940 (194880) */ - 5885, /* 2F941 (194881) */ - 5886, /* 2F942 (194882) */ - 5887, /* 2F943 (194883) */ - 5888, /* 2F944 (194884) */ - 5889, /* 2F945 (194885) */ - 5890, /* 2F946 (194886) */ - 5890, /* 2F947 (194887) */ - 3734, /* 2F948 (194888) */ - 3763, /* 2F949 (194889) */ - 5891, /* 2F94A (194890) */ - 5892, /* 2F94B (194891) */ - 5893, /* 2F94C (194892) */ - 5894, /* 2F94D (194893) */ - 5895, /* 2F94E (194894) */ - 3402, /* 2F94F (194895) */ - 3736, /* 2F950 (194896) */ - 5896, /* 2F951 (194897) */ - 5897, /* 2F952 (194898) */ - 3662, /* 2F953 (194899) */ - 5898, /* 2F954 (194900) */ - 5899, /* 2F955 (194901) */ - 3616, /* 2F956 (194902) */ - 5900, /* 2F957 (194903) */ - 5901, /* 2F958 (194904) */ - 3666, /* 2F959 (194905) */ - 5902, /* 2F95A (194906) */ - 5903, /* 2F95B (194907) */ - 5904, /* 2F95C (194908) */ - 5905, /* 2F95D (194909) */ - 5905, /* 2F95E (194910) */ - 5906, /* 2F95F (194911) */ - 5907, /* 2F960 (194912) */ - 5908, /* 2F961 (194913) */ - 5909, /* 2F962 (194914) */ - 5910, /* 2F963 (194915) */ - 5911, /* 2F964 (194916) */ - 5912, /* 2F965 (194917) */ - 5913, /* 2F966 (194918) */ - 5914, /* 2F967 (194919) */ - 5915, /* 2F968 (194920) */ - 5916, /* 2F969 (194921) */ - 5917, /* 2F96A (194922) */ - 5918, /* 2F96B (194923) */ - 5919, /* 2F96C (194924) */ - 5920, /* 2F96D (194925) */ - 5921, /* 2F96E (194926) */ - 5922, /* 2F96F (194927) */ - 5923, /* 2F970 (194928) */ - 5924, /* 2F971 (194929) */ - 5925, /* 2F972 (194930) */ - 5926, /* 2F973 (194931) */ - 5927, /* 2F974 (194932) */ - 5928, /* 2F975 (194933) */ - 5929, /* 2F976 (194934) */ - 5930, /* 2F977 (194935) */ - 5931, /* 2F978 (194936) */ - 5932, /* 2F979 (194937) */ - 3672, /* 2F97A (194938) */ - 5933, /* 2F97B (194939) */ - 5934, /* 2F97C (194940) */ - 5935, /* 2F97D (194941) */ - 5936, /* 2F97E (194942) */ - 5937, /* 2F97F (194943) */ - 5938, /* 2F980 (194944) */ - 5939, /* 2F981 (194945) */ - 5940, /* 2F982 (194946) */ - 5941, /* 2F983 (194947) */ - 5942, /* 2F984 (194948) */ - 5943, /* 2F985 (194949) */ - 5944, /* 2F986 (194950) */ - 5945, /* 2F987 (194951) */ - 5946, /* 2F988 (194952) */ - 5947, /* 2F989 (194953) */ - 5948, /* 2F98A (194954) */ - 5734, /* 2F98B (194955) */ - 5949, /* 2F98C (194956) */ - 5950, /* 2F98D (194957) */ - 5951, /* 2F98E (194958) */ - 5952, /* 2F98F (194959) */ - 5953, /* 2F990 (194960) */ - 5954, /* 2F991 (194961) */ - 5955, /* 2F992 (194962) */ - 5956, /* 2F993 (194963) */ - 5957, /* 2F994 (194964) */ - 5958, /* 2F995 (194965) */ - 5959, /* 2F996 (194966) */ - 5960, /* 2F997 (194967) */ - 3458, /* 2F998 (194968) */ - 5961, /* 2F999 (194969) */ - 5962, /* 2F99A (194970) */ - 5963, /* 2F99B (194971) */ - 5964, /* 2F99C (194972) */ - 5965, /* 2F99D (194973) */ - 5966, /* 2F99E (194974) */ - 3675, /* 2F99F (194975) */ - 5967, /* 2F9A0 (194976) */ - 5968, /* 2F9A1 (194977) */ - 5969, /* 2F9A2 (194978) */ - 5970, /* 2F9A3 (194979) */ - 5971, /* 2F9A4 (194980) */ - 5972, /* 2F9A5 (194981) */ - 5973, /* 2F9A6 (194982) */ - 5974, /* 2F9A7 (194983) */ - 5975, /* 2F9A8 (194984) */ - 5976, /* 2F9A9 (194985) */ - 5977, /* 2F9AA (194986) */ - 5978, /* 2F9AB (194987) */ - 5979, /* 2F9AC (194988) */ - 5980, /* 2F9AD (194989) */ - 5981, /* 2F9AE (194990) */ - 5982, /* 2F9AF (194991) */ - 5983, /* 2F9B0 (194992) */ - 5984, /* 2F9B1 (194993) */ - 5985, /* 2F9B2 (194994) */ - 5986, /* 2F9B3 (194995) */ - 3397, /* 2F9B4 (194996) */ - 5987, /* 2F9B5 (194997) */ - 5988, /* 2F9B6 (194998) */ - 5989, /* 2F9B7 (194999) */ - 5990, /* 2F9B8 (195000) */ - 5991, /* 2F9B9 (195001) */ - 5992, /* 2F9BA (195002) */ - 3743, /* 2F9BB (195003) */ - 5993, /* 2F9BC (195004) */ - 5994, /* 2F9BD (195005) */ - 5995, /* 2F9BE (195006) */ - 5996, /* 2F9BF (195007) */ - 5997, /* 2F9C0 (195008) */ - 5998, /* 2F9C1 (195009) */ - 5999, /* 2F9C2 (195010) */ - 6000, /* 2F9C3 (195011) */ - 6001, /* 2F9C4 (195012) */ - 6002, /* 2F9C5 (195013) */ - 6003, /* 2F9C6 (195014) */ - 6004, /* 2F9C7 (195015) */ - 6005, /* 2F9C8 (195016) */ - 6006, /* 2F9C9 (195017) */ - 6007, /* 2F9CA (195018) */ - 6008, /* 2F9CB (195019) */ - 6009, /* 2F9CC (195020) */ - 6010, /* 2F9CD (195021) */ - 6011, /* 2F9CE (195022) */ - 6012, /* 2F9CF (195023) */ - 3748, /* 2F9D0 (195024) */ - 3749, /* 2F9D1 (195025) */ - 6013, /* 2F9D2 (195026) */ - 6014, /* 2F9D3 (195027) */ - 6015, /* 2F9D4 (195028) */ - 6016, /* 2F9D5 (195029) */ - 6017, /* 2F9D6 (195030) */ - 6018, /* 2F9D7 (195031) */ - 6019, /* 2F9D8 (195032) */ - 6020, /* 2F9D9 (195033) */ - 6021, /* 2F9DA (195034) */ - 6022, /* 2F9DB (195035) */ - 6023, /* 2F9DC (195036) */ - 6024, /* 2F9DD (195037) */ - 6025, /* 2F9DE (195038) */ - 3750, /* 2F9DF (195039) */ - 6026, /* 2F9E0 (195040) */ - 6027, /* 2F9E1 (195041) */ - 6028, /* 2F9E2 (195042) */ - 6029, /* 2F9E3 (195043) */ - 6030, /* 2F9E4 (195044) */ - 6031, /* 2F9E5 (195045) */ - 6032, /* 2F9E6 (195046) */ - 6033, /* 2F9E7 (195047) */ - 6034, /* 2F9E8 (195048) */ - 6035, /* 2F9E9 (195049) */ - 6036, /* 2F9EA (195050) */ - 6037, /* 2F9EB (195051) */ - 6038, /* 2F9EC (195052) */ - 6039, /* 2F9ED (195053) */ - 6040, /* 2F9EE (195054) */ - 6041, /* 2F9EF (195055) */ - 6042, /* 2F9F0 (195056) */ - 6043, /* 2F9F1 (195057) */ - 6044, /* 2F9F2 (195058) */ - 6045, /* 2F9F3 (195059) */ - 6046, /* 2F9F4 (195060) */ - 6047, /* 2F9F5 (195061) */ - 6048, /* 2F9F6 (195062) */ - 6049, /* 2F9F7 (195063) */ - 6050, /* 2F9F8 (195064) */ - 6051, /* 2F9F9 (195065) */ - 6052, /* 2F9FA (195066) */ - 6053, /* 2F9FB (195067) */ - 6054, /* 2F9FC (195068) */ - 6055, /* 2F9FD (195069) */ - 3756, /* 2F9FE (195070) */ - 3756, /* 2F9FF (195071) */ - 6056, /* 2FA00 (195072) */ - 6057, /* 2FA01 (195073) */ - 6058, /* 2FA02 (195074) */ - 6059, /* 2FA03 (195075) */ - 6060, /* 2FA04 (195076) */ - 6061, /* 2FA05 (195077) */ - 6062, /* 2FA06 (195078) */ - 6063, /* 2FA07 (195079) */ - 6064, /* 2FA08 (195080) */ - 6065, /* 2FA09 (195081) */ - 3757, /* 2FA0A (195082) */ - 6066, /* 2FA0B (195083) */ - 6067, /* 2FA0C (195084) */ - 6068, /* 2FA0D (195085) */ - 6069, /* 2FA0E (195086) */ - 6070, /* 2FA0F (195087) */ - 6071, /* 2FA10 (195088) */ - 6072, /* 2FA11 (195089) */ - 6073, /* 2FA12 (195090) */ - 6074, /* 2FA13 (195091) */ - 6075, /* 2FA14 (195092) */ - 6076, /* 2FA15 (195093) */ - 6077, /* 2FA16 (195094) */ - 6078, /* 2FA17 (195095) */ - 6079, /* 2FA18 (195096) */ - 6080, /* 2FA19 (195097) */ - 6081, /* 2FA1A (195098) */ - 6082, /* 2FA1B (195099) */ - 6083, /* 2FA1C (195100) */ - 6084, /* 2FA1D (195101) */ + 5637, /* 2F800 (194560) */ + 5638, /* 2F801 (194561) */ + 5639, /* 2F802 (194562) */ + 5640, /* 2F803 (194563) */ + 5641, /* 2F804 (194564) */ + 3634, /* 2F805 (194565) */ + 5642, /* 2F806 (194566) */ + 5643, /* 2F807 (194567) */ + 5644, /* 2F808 (194568) */ + 5645, /* 2F809 (194569) */ + 3635, /* 2F80A (194570) */ + 5646, /* 2F80B (194571) */ + 5647, /* 2F80C (194572) */ + 5648, /* 2F80D (194573) */ + 3636, /* 2F80E (194574) */ + 5649, /* 2F80F (194575) */ + 5650, /* 2F810 (194576) */ + 5651, /* 2F811 (194577) */ + 5652, /* 2F812 (194578) */ + 5653, /* 2F813 (194579) */ + 5654, /* 2F814 (194580) */ + 5655, /* 2F815 (194581) */ + 5656, /* 2F816 (194582) */ + 5657, /* 2F817 (194583) */ + 5658, /* 2F818 (194584) */ + 5659, /* 2F819 (194585) */ + 5660, /* 2F81A (194586) */ + 3694, /* 2F81B (194587) */ + 5661, /* 2F81C (194588) */ + 5662, /* 2F81D (194589) */ + 5663, /* 2F81E (194590) */ + 5664, /* 2F81F (194591) */ + 5665, /* 2F820 (194592) */ + 5666, /* 2F821 (194593) */ + 5667, /* 2F822 (194594) */ + 5668, /* 2F823 (194595) */ + 5669, /* 2F824 (194596) */ + 3699, /* 2F825 (194597) */ + 3637, /* 2F826 (194598) */ + 3638, /* 2F827 (194599) */ + 3700, /* 2F828 (194600) */ + 5670, /* 2F829 (194601) */ + 5671, /* 2F82A (194602) */ + 3445, /* 2F82B (194603) */ + 5672, /* 2F82C (194604) */ + 3639, /* 2F82D (194605) */ + 5673, /* 2F82E (194606) */ + 5674, /* 2F82F (194607) */ + 5675, /* 2F830 (194608) */ + 5676, /* 2F831 (194609) */ + 5676, /* 2F832 (194610) */ + 5676, /* 2F833 (194611) */ + 5677, /* 2F834 (194612) */ + 5678, /* 2F835 (194613) */ + 5679, /* 2F836 (194614) */ + 5680, /* 2F837 (194615) */ + 5681, /* 2F838 (194616) */ + 5682, /* 2F839 (194617) */ + 5683, /* 2F83A (194618) */ + 5684, /* 2F83B (194619) */ + 5685, /* 2F83C (194620) */ + 5686, /* 2F83D (194621) */ + 5687, /* 2F83E (194622) */ + 5688, /* 2F83F (194623) */ + 5689, /* 2F840 (194624) */ + 5690, /* 2F841 (194625) */ + 5691, /* 2F842 (194626) */ + 5692, /* 2F843 (194627) */ + 5693, /* 2F844 (194628) */ + 5694, /* 2F845 (194629) */ + 5694, /* 2F846 (194630) */ + 3702, /* 2F847 (194631) */ + 5695, /* 2F848 (194632) */ + 5696, /* 2F849 (194633) */ + 5697, /* 2F84A (194634) */ + 5698, /* 2F84B (194635) */ + 3641, /* 2F84C (194636) */ + 5699, /* 2F84D (194637) */ + 5700, /* 2F84E (194638) */ + 5701, /* 2F84F (194639) */ + 3598, /* 2F850 (194640) */ + 5702, /* 2F851 (194641) */ + 5703, /* 2F852 (194642) */ + 5704, /* 2F853 (194643) */ + 5705, /* 2F854 (194644) */ + 5706, /* 2F855 (194645) */ + 5707, /* 2F856 (194646) */ + 5708, /* 2F857 (194647) */ + 5709, /* 2F858 (194648) */ + 5710, /* 2F859 (194649) */ + 5711, /* 2F85A (194650) */ + 5712, /* 2F85B (194651) */ + 5713, /* 2F85C (194652) */ + 5714, /* 2F85D (194653) */ + 5715, /* 2F85E (194654) */ + 5716, /* 2F85F (194655) */ + 5717, /* 2F860 (194656) */ + 5718, /* 2F861 (194657) */ + 5719, /* 2F862 (194658) */ + 5720, /* 2F863 (194659) */ + 5721, /* 2F864 (194660) */ + 5722, /* 2F865 (194661) */ + 5723, /* 2F866 (194662) */ + 5724, /* 2F867 (194663) */ + 5725, /* 2F868 (194664) */ + 5726, /* 2F869 (194665) */ + 5727, /* 2F86A (194666) */ + 5727, /* 2F86B (194667) */ + 5728, /* 2F86C (194668) */ + 5729, /* 2F86D (194669) */ + 5730, /* 2F86E (194670) */ + 3441, /* 2F86F (194671) */ + 5731, /* 2F870 (194672) */ + 5732, /* 2F871 (194673) */ + 5733, /* 2F872 (194674) */ + 5734, /* 2F873 (194675) */ + 5735, /* 2F874 (194676) */ + 5736, /* 2F875 (194677) */ + 5737, /* 2F876 (194678) */ + 5738, /* 2F877 (194679) */ + 3646, /* 2F878 (194680) */ + 5739, /* 2F879 (194681) */ + 5740, /* 2F87A (194682) */ + 5741, /* 2F87B (194683) */ + 5742, /* 2F87C (194684) */ + 5743, /* 2F87D (194685) */ + 5744, /* 2F87E (194686) */ + 5745, /* 2F87F (194687) */ + 5746, /* 2F880 (194688) */ + 5747, /* 2F881 (194689) */ + 5748, /* 2F882 (194690) */ + 5749, /* 2F883 (194691) */ + 5750, /* 2F884 (194692) */ + 5751, /* 2F885 (194693) */ + 5752, /* 2F886 (194694) */ + 5753, /* 2F887 (194695) */ + 5754, /* 2F888 (194696) */ + 5755, /* 2F889 (194697) */ + 5756, /* 2F88A (194698) */ + 5757, /* 2F88B (194699) */ + 5758, /* 2F88C (194700) */ + 5759, /* 2F88D (194701) */ + 3387, /* 2F88E (194702) */ + 5760, /* 2F88F (194703) */ + 5761, /* 2F890 (194704) */ + 5762, /* 2F891 (194705) */ + 5762, /* 2F892 (194706) */ + 5763, /* 2F893 (194707) */ + 5764, /* 2F894 (194708) */ + 5764, /* 2F895 (194709) */ + 5765, /* 2F896 (194710) */ + 5766, /* 2F897 (194711) */ + 5767, /* 2F898 (194712) */ + 5768, /* 2F899 (194713) */ + 5769, /* 2F89A (194714) */ + 5770, /* 2F89B (194715) */ + 5771, /* 2F89C (194716) */ + 5772, /* 2F89D (194717) */ + 5773, /* 2F89E (194718) */ + 5774, /* 2F89F (194719) */ + 5775, /* 2F8A0 (194720) */ + 5776, /* 2F8A1 (194721) */ + 5777, /* 2F8A2 (194722) */ + 3647, /* 2F8A3 (194723) */ + 5778, /* 2F8A4 (194724) */ + 5779, /* 2F8A5 (194725) */ + 5780, /* 2F8A6 (194726) */ + 5781, /* 2F8A7 (194727) */ + 3714, /* 2F8A8 (194728) */ + 5781, /* 2F8A9 (194729) */ + 5782, /* 2F8AA (194730) */ + 3649, /* 2F8AB (194731) */ + 5783, /* 2F8AC (194732) */ + 5784, /* 2F8AD (194733) */ + 5785, /* 2F8AE (194734) */ + 5786, /* 2F8AF (194735) */ + 3650, /* 2F8B0 (194736) */ + 3360, /* 2F8B1 (194737) */ + 5787, /* 2F8B2 (194738) */ + 5788, /* 2F8B3 (194739) */ + 5789, /* 2F8B4 (194740) */ + 5790, /* 2F8B5 (194741) */ + 5791, /* 2F8B6 (194742) */ + 5792, /* 2F8B7 (194743) */ + 5793, /* 2F8B8 (194744) */ + 5794, /* 2F8B9 (194745) */ + 5795, /* 2F8BA (194746) */ + 5796, /* 2F8BB (194747) */ + 5797, /* 2F8BC (194748) */ + 5798, /* 2F8BD (194749) */ + 5799, /* 2F8BE (194750) */ + 5800, /* 2F8BF (194751) */ + 5801, /* 2F8C0 (194752) */ + 5802, /* 2F8C1 (194753) */ + 5803, /* 2F8C2 (194754) */ + 5804, /* 2F8C3 (194755) */ + 5805, /* 2F8C4 (194756) */ + 5806, /* 2F8C5 (194757) */ + 5807, /* 2F8C6 (194758) */ + 5808, /* 2F8C7 (194759) */ + 3651, /* 2F8C8 (194760) */ + 5809, /* 2F8C9 (194761) */ + 5810, /* 2F8CA (194762) */ + 5811, /* 2F8CB (194763) */ + 5812, /* 2F8CC (194764) */ + 5813, /* 2F8CD (194765) */ + 5814, /* 2F8CE (194766) */ + 3653, /* 2F8CF (194767) */ + 5815, /* 2F8D0 (194768) */ + 5816, /* 2F8D1 (194769) */ + 5817, /* 2F8D2 (194770) */ + 5818, /* 2F8D3 (194771) */ + 5819, /* 2F8D4 (194772) */ + 5820, /* 2F8D5 (194773) */ + 5821, /* 2F8D6 (194774) */ + 5822, /* 2F8D7 (194775) */ + 3388, /* 2F8D8 (194776) */ + 3722, /* 2F8D9 (194777) */ + 5823, /* 2F8DA (194778) */ + 5824, /* 2F8DB (194779) */ + 5825, /* 2F8DC (194780) */ + 5826, /* 2F8DD (194781) */ + 5827, /* 2F8DE (194782) */ + 5828, /* 2F8DF (194783) */ + 5829, /* 2F8E0 (194784) */ + 5830, /* 2F8E1 (194785) */ + 3654, /* 2F8E2 (194786) */ + 5831, /* 2F8E3 (194787) */ + 5832, /* 2F8E4 (194788) */ + 5833, /* 2F8E5 (194789) */ + 5834, /* 2F8E6 (194790) */ + 3765, /* 2F8E7 (194791) */ + 5835, /* 2F8E8 (194792) */ + 5836, /* 2F8E9 (194793) */ + 5837, /* 2F8EA (194794) */ + 5838, /* 2F8EB (194795) */ + 5839, /* 2F8EC (194796) */ + 5840, /* 2F8ED (194797) */ + 5841, /* 2F8EE (194798) */ + 5842, /* 2F8EF (194799) */ + 5843, /* 2F8F0 (194800) */ + 5844, /* 2F8F1 (194801) */ + 5845, /* 2F8F2 (194802) */ + 5846, /* 2F8F3 (194803) */ + 5847, /* 2F8F4 (194804) */ + 3458, /* 2F8F5 (194805) */ + 5848, /* 2F8F6 (194806) */ + 5849, /* 2F8F7 (194807) */ + 5850, /* 2F8F8 (194808) */ + 5851, /* 2F8F9 (194809) */ + 5852, /* 2F8FA (194810) */ + 5853, /* 2F8FB (194811) */ + 5854, /* 2F8FC (194812) */ + 5855, /* 2F8FD (194813) */ + 5856, /* 2F8FE (194814) */ + 5857, /* 2F8FF (194815) */ + 5858, /* 2F900 (194816) */ + 3655, /* 2F901 (194817) */ + 3545, /* 2F902 (194818) */ + 5859, /* 2F903 (194819) */ + 5860, /* 2F904 (194820) */ + 5861, /* 2F905 (194821) */ + 5862, /* 2F906 (194822) */ + 5863, /* 2F907 (194823) */ + 5864, /* 2F908 (194824) */ + 5865, /* 2F909 (194825) */ + 5866, /* 2F90A (194826) */ + 3726, /* 2F90B (194827) */ + 5867, /* 2F90C (194828) */ + 5868, /* 2F90D (194829) */ + 5869, /* 2F90E (194830) */ + 5870, /* 2F90F (194831) */ + 5871, /* 2F910 (194832) */ + 5872, /* 2F911 (194833) */ + 5873, /* 2F912 (194834) */ + 5874, /* 2F913 (194835) */ + 3727, /* 2F914 (194836) */ + 5875, /* 2F915 (194837) */ + 5876, /* 2F916 (194838) */ + 5877, /* 2F917 (194839) */ + 5878, /* 2F918 (194840) */ + 5879, /* 2F919 (194841) */ + 5880, /* 2F91A (194842) */ + 5881, /* 2F91B (194843) */ + 5882, /* 2F91C (194844) */ + 5883, /* 2F91D (194845) */ + 5884, /* 2F91E (194846) */ + 5885, /* 2F91F (194847) */ + 5886, /* 2F920 (194848) */ + 3729, /* 2F921 (194849) */ + 5887, /* 2F922 (194850) */ + 5888, /* 2F923 (194851) */ + 5889, /* 2F924 (194852) */ + 5890, /* 2F925 (194853) */ + 5891, /* 2F926 (194854) */ + 5892, /* 2F927 (194855) */ + 5893, /* 2F928 (194856) */ + 5894, /* 2F929 (194857) */ + 5895, /* 2F92A (194858) */ + 5896, /* 2F92B (194859) */ + 5897, /* 2F92C (194860) */ + 5897, /* 2F92D (194861) */ + 5898, /* 2F92E (194862) */ + 5899, /* 2F92F (194863) */ + 3731, /* 2F930 (194864) */ + 5900, /* 2F931 (194865) */ + 5901, /* 2F932 (194866) */ + 5902, /* 2F933 (194867) */ + 5903, /* 2F934 (194868) */ + 5904, /* 2F935 (194869) */ + 5905, /* 2F936 (194870) */ + 5906, /* 2F937 (194871) */ + 3444, /* 2F938 (194872) */ + 5907, /* 2F939 (194873) */ + 5908, /* 2F93A (194874) */ + 5909, /* 2F93B (194875) */ + 5910, /* 2F93C (194876) */ + 5911, /* 2F93D (194877) */ + 5912, /* 2F93E (194878) */ + 5913, /* 2F93F (194879) */ + 3737, /* 2F940 (194880) */ + 5914, /* 2F941 (194881) */ + 5915, /* 2F942 (194882) */ + 5916, /* 2F943 (194883) */ + 5917, /* 2F944 (194884) */ + 5918, /* 2F945 (194885) */ + 5919, /* 2F946 (194886) */ + 5919, /* 2F947 (194887) */ + 3738, /* 2F948 (194888) */ + 3767, /* 2F949 (194889) */ + 5920, /* 2F94A (194890) */ + 5921, /* 2F94B (194891) */ + 5922, /* 2F94C (194892) */ + 5923, /* 2F94D (194893) */ + 5924, /* 2F94E (194894) */ + 3406, /* 2F94F (194895) */ + 3740, /* 2F950 (194896) */ + 5925, /* 2F951 (194897) */ + 5926, /* 2F952 (194898) */ + 3666, /* 2F953 (194899) */ + 5927, /* 2F954 (194900) */ + 5928, /* 2F955 (194901) */ + 3620, /* 2F956 (194902) */ + 5929, /* 2F957 (194903) */ + 5930, /* 2F958 (194904) */ + 3670, /* 2F959 (194905) */ + 5931, /* 2F95A (194906) */ + 5932, /* 2F95B (194907) */ + 5933, /* 2F95C (194908) */ + 5934, /* 2F95D (194909) */ + 5934, /* 2F95E (194910) */ + 5935, /* 2F95F (194911) */ + 5936, /* 2F960 (194912) */ + 5937, /* 2F961 (194913) */ + 5938, /* 2F962 (194914) */ + 5939, /* 2F963 (194915) */ + 5940, /* 2F964 (194916) */ + 5941, /* 2F965 (194917) */ + 5942, /* 2F966 (194918) */ + 5943, /* 2F967 (194919) */ + 5944, /* 2F968 (194920) */ + 5945, /* 2F969 (194921) */ + 5946, /* 2F96A (194922) */ + 5947, /* 2F96B (194923) */ + 5948, /* 2F96C (194924) */ + 5949, /* 2F96D (194925) */ + 5950, /* 2F96E (194926) */ + 5951, /* 2F96F (194927) */ + 5952, /* 2F970 (194928) */ + 5953, /* 2F971 (194929) */ + 5954, /* 2F972 (194930) */ + 5955, /* 2F973 (194931) */ + 5956, /* 2F974 (194932) */ + 5957, /* 2F975 (194933) */ + 5958, /* 2F976 (194934) */ + 5959, /* 2F977 (194935) */ + 5960, /* 2F978 (194936) */ + 5961, /* 2F979 (194937) */ + 3676, /* 2F97A (194938) */ + 5962, /* 2F97B (194939) */ + 5963, /* 2F97C (194940) */ + 5964, /* 2F97D (194941) */ + 5965, /* 2F97E (194942) */ + 5966, /* 2F97F (194943) */ + 5967, /* 2F980 (194944) */ + 5968, /* 2F981 (194945) */ + 5969, /* 2F982 (194946) */ + 5970, /* 2F983 (194947) */ + 5971, /* 2F984 (194948) */ + 5972, /* 2F985 (194949) */ + 5973, /* 2F986 (194950) */ + 5974, /* 2F987 (194951) */ + 5975, /* 2F988 (194952) */ + 5976, /* 2F989 (194953) */ + 5977, /* 2F98A (194954) */ + 5763, /* 2F98B (194955) */ + 5978, /* 2F98C (194956) */ + 5979, /* 2F98D (194957) */ + 5980, /* 2F98E (194958) */ + 5981, /* 2F98F (194959) */ + 5982, /* 2F990 (194960) */ + 5983, /* 2F991 (194961) */ + 5984, /* 2F992 (194962) */ + 5985, /* 2F993 (194963) */ + 5986, /* 2F994 (194964) */ + 5987, /* 2F995 (194965) */ + 5988, /* 2F996 (194966) */ + 5989, /* 2F997 (194967) */ + 3462, /* 2F998 (194968) */ + 5990, /* 2F999 (194969) */ + 5991, /* 2F99A (194970) */ + 5992, /* 2F99B (194971) */ + 5993, /* 2F99C (194972) */ + 5994, /* 2F99D (194973) */ + 5995, /* 2F99E (194974) */ + 3679, /* 2F99F (194975) */ + 5996, /* 2F9A0 (194976) */ + 5997, /* 2F9A1 (194977) */ + 5998, /* 2F9A2 (194978) */ + 5999, /* 2F9A3 (194979) */ + 6000, /* 2F9A4 (194980) */ + 6001, /* 2F9A5 (194981) */ + 6002, /* 2F9A6 (194982) */ + 6003, /* 2F9A7 (194983) */ + 6004, /* 2F9A8 (194984) */ + 6005, /* 2F9A9 (194985) */ + 6006, /* 2F9AA (194986) */ + 6007, /* 2F9AB (194987) */ + 6008, /* 2F9AC (194988) */ + 6009, /* 2F9AD (194989) */ + 6010, /* 2F9AE (194990) */ + 6011, /* 2F9AF (194991) */ + 6012, /* 2F9B0 (194992) */ + 6013, /* 2F9B1 (194993) */ + 6014, /* 2F9B2 (194994) */ + 6015, /* 2F9B3 (194995) */ + 3401, /* 2F9B4 (194996) */ + 6016, /* 2F9B5 (194997) */ + 6017, /* 2F9B6 (194998) */ + 6018, /* 2F9B7 (194999) */ + 6019, /* 2F9B8 (195000) */ + 6020, /* 2F9B9 (195001) */ + 6021, /* 2F9BA (195002) */ + 3747, /* 2F9BB (195003) */ + 6022, /* 2F9BC (195004) */ + 6023, /* 2F9BD (195005) */ + 6024, /* 2F9BE (195006) */ + 6025, /* 2F9BF (195007) */ + 6026, /* 2F9C0 (195008) */ + 6027, /* 2F9C1 (195009) */ + 6028, /* 2F9C2 (195010) */ + 6029, /* 2F9C3 (195011) */ + 6030, /* 2F9C4 (195012) */ + 6031, /* 2F9C5 (195013) */ + 6032, /* 2F9C6 (195014) */ + 6033, /* 2F9C7 (195015) */ + 6034, /* 2F9C8 (195016) */ + 6035, /* 2F9C9 (195017) */ + 6036, /* 2F9CA (195018) */ + 6037, /* 2F9CB (195019) */ + 6038, /* 2F9CC (195020) */ + 6039, /* 2F9CD (195021) */ + 6040, /* 2F9CE (195022) */ + 6041, /* 2F9CF (195023) */ + 3752, /* 2F9D0 (195024) */ + 3753, /* 2F9D1 (195025) */ + 6042, /* 2F9D2 (195026) */ + 6043, /* 2F9D3 (195027) */ + 6044, /* 2F9D4 (195028) */ + 6045, /* 2F9D5 (195029) */ + 6046, /* 2F9D6 (195030) */ + 6047, /* 2F9D7 (195031) */ + 6048, /* 2F9D8 (195032) */ + 6049, /* 2F9D9 (195033) */ + 6050, /* 2F9DA (195034) */ + 6051, /* 2F9DB (195035) */ + 6052, /* 2F9DC (195036) */ + 6053, /* 2F9DD (195037) */ + 6054, /* 2F9DE (195038) */ + 3754, /* 2F9DF (195039) */ + 6055, /* 2F9E0 (195040) */ + 6056, /* 2F9E1 (195041) */ + 6057, /* 2F9E2 (195042) */ + 6058, /* 2F9E3 (195043) */ + 6059, /* 2F9E4 (195044) */ + 6060, /* 2F9E5 (195045) */ + 6061, /* 2F9E6 (195046) */ + 6062, /* 2F9E7 (195047) */ + 6063, /* 2F9E8 (195048) */ + 6064, /* 2F9E9 (195049) */ + 6065, /* 2F9EA (195050) */ + 6066, /* 2F9EB (195051) */ + 6067, /* 2F9EC (195052) */ + 6068, /* 2F9ED (195053) */ + 6069, /* 2F9EE (195054) */ + 6070, /* 2F9EF (195055) */ + 6071, /* 2F9F0 (195056) */ + 6072, /* 2F9F1 (195057) */ + 6073, /* 2F9F2 (195058) */ + 6074, /* 2F9F3 (195059) */ + 6075, /* 2F9F4 (195060) */ + 6076, /* 2F9F5 (195061) */ + 6077, /* 2F9F6 (195062) */ + 6078, /* 2F9F7 (195063) */ + 6079, /* 2F9F8 (195064) */ + 6080, /* 2F9F9 (195065) */ + 6081, /* 2F9FA (195066) */ + 6082, /* 2F9FB (195067) */ + 6083, /* 2F9FC (195068) */ + 6084, /* 2F9FD (195069) */ + 3760, /* 2F9FE (195070) */ + 3760, /* 2F9FF (195071) */ + 6085, /* 2FA00 (195072) */ + 6086, /* 2FA01 (195073) */ + 6087, /* 2FA02 (195074) */ + 6088, /* 2FA03 (195075) */ + 6089, /* 2FA04 (195076) */ + 6090, /* 2FA05 (195077) */ + 6091, /* 2FA06 (195078) */ + 6092, /* 2FA07 (195079) */ + 6093, /* 2FA08 (195080) */ + 6094, /* 2FA09 (195081) */ + 3761, /* 2FA0A (195082) */ + 6095, /* 2FA0B (195083) */ + 6096, /* 2FA0C (195084) */ + 6097, /* 2FA0D (195085) */ + 6098, /* 2FA0E (195086) */ + 6099, /* 2FA0F (195087) */ + 6100, /* 2FA10 (195088) */ + 6101, /* 2FA11 (195089) */ + 6102, /* 2FA12 (195090) */ + 6103, /* 2FA13 (195091) */ + 6104, /* 2FA14 (195092) */ + 6105, /* 2FA15 (195093) */ + 6106, /* 2FA16 (195094) */ + 6107, /* 2FA17 (195095) */ + 6108, /* 2FA18 (195096) */ + 6109, /* 2FA19 (195097) */ + 6110, /* 2FA1A (195098) */ + 6111, /* 2FA1B (195099) */ + 6112, /* 2FA1C (195100) */ + 6113, /* 2FA1D (195101) */ 56, /* 2FA1E (195102) */ 56, /* 2FA1F (195103) */ 56, /* 2FA20 (195104) */ @@ -183606,6 +183840,4304 @@ static const uint32_t lxb_unicode_table_map_110576_205744[95168] = 1, /* 323AD (205741) */ 1, /* 323AE (205742) */ 1, /* 323AF (205743) */ + 1, /* 323B0 (205744) */ + 1, /* 323B1 (205745) */ + 1, /* 323B2 (205746) */ + 1, /* 323B3 (205747) */ + 1, /* 323B4 (205748) */ + 1, /* 323B5 (205749) */ + 1, /* 323B6 (205750) */ + 1, /* 323B7 (205751) */ + 1, /* 323B8 (205752) */ + 1, /* 323B9 (205753) */ + 1, /* 323BA (205754) */ + 1, /* 323BB (205755) */ + 1, /* 323BC (205756) */ + 1, /* 323BD (205757) */ + 1, /* 323BE (205758) */ + 1, /* 323BF (205759) */ + 1, /* 323C0 (205760) */ + 1, /* 323C1 (205761) */ + 1, /* 323C2 (205762) */ + 1, /* 323C3 (205763) */ + 1, /* 323C4 (205764) */ + 1, /* 323C5 (205765) */ + 1, /* 323C6 (205766) */ + 1, /* 323C7 (205767) */ + 1, /* 323C8 (205768) */ + 1, /* 323C9 (205769) */ + 1, /* 323CA (205770) */ + 1, /* 323CB (205771) */ + 1, /* 323CC (205772) */ + 1, /* 323CD (205773) */ + 1, /* 323CE (205774) */ + 1, /* 323CF (205775) */ + 1, /* 323D0 (205776) */ + 1, /* 323D1 (205777) */ + 1, /* 323D2 (205778) */ + 1, /* 323D3 (205779) */ + 1, /* 323D4 (205780) */ + 1, /* 323D5 (205781) */ + 1, /* 323D6 (205782) */ + 1, /* 323D7 (205783) */ + 1, /* 323D8 (205784) */ + 1, /* 323D9 (205785) */ + 1, /* 323DA (205786) */ + 1, /* 323DB (205787) */ + 1, /* 323DC (205788) */ + 1, /* 323DD (205789) */ + 1, /* 323DE (205790) */ + 1, /* 323DF (205791) */ + 1, /* 323E0 (205792) */ + 1, /* 323E1 (205793) */ + 1, /* 323E2 (205794) */ + 1, /* 323E3 (205795) */ + 1, /* 323E4 (205796) */ + 1, /* 323E5 (205797) */ + 1, /* 323E6 (205798) */ + 1, /* 323E7 (205799) */ + 1, /* 323E8 (205800) */ + 1, /* 323E9 (205801) */ + 1, /* 323EA (205802) */ + 1, /* 323EB (205803) */ + 1, /* 323EC (205804) */ + 1, /* 323ED (205805) */ + 1, /* 323EE (205806) */ + 1, /* 323EF (205807) */ + 1, /* 323F0 (205808) */ + 1, /* 323F1 (205809) */ + 1, /* 323F2 (205810) */ + 1, /* 323F3 (205811) */ + 1, /* 323F4 (205812) */ + 1, /* 323F5 (205813) */ + 1, /* 323F6 (205814) */ + 1, /* 323F7 (205815) */ + 1, /* 323F8 (205816) */ + 1, /* 323F9 (205817) */ + 1, /* 323FA (205818) */ + 1, /* 323FB (205819) */ + 1, /* 323FC (205820) */ + 1, /* 323FD (205821) */ + 1, /* 323FE (205822) */ + 1, /* 323FF (205823) */ + 1, /* 32400 (205824) */ + 1, /* 32401 (205825) */ + 1, /* 32402 (205826) */ + 1, /* 32403 (205827) */ + 1, /* 32404 (205828) */ + 1, /* 32405 (205829) */ + 1, /* 32406 (205830) */ + 1, /* 32407 (205831) */ + 1, /* 32408 (205832) */ + 1, /* 32409 (205833) */ + 1, /* 3240A (205834) */ + 1, /* 3240B (205835) */ + 1, /* 3240C (205836) */ + 1, /* 3240D (205837) */ + 1, /* 3240E (205838) */ + 1, /* 3240F (205839) */ + 1, /* 32410 (205840) */ + 1, /* 32411 (205841) */ + 1, /* 32412 (205842) */ + 1, /* 32413 (205843) */ + 1, /* 32414 (205844) */ + 1, /* 32415 (205845) */ + 1, /* 32416 (205846) */ + 1, /* 32417 (205847) */ + 1, /* 32418 (205848) */ + 1, /* 32419 (205849) */ + 1, /* 3241A (205850) */ + 1, /* 3241B (205851) */ + 1, /* 3241C (205852) */ + 1, /* 3241D (205853) */ + 1, /* 3241E (205854) */ + 1, /* 3241F (205855) */ + 1, /* 32420 (205856) */ + 1, /* 32421 (205857) */ + 1, /* 32422 (205858) */ + 1, /* 32423 (205859) */ + 1, /* 32424 (205860) */ + 1, /* 32425 (205861) */ + 1, /* 32426 (205862) */ + 1, /* 32427 (205863) */ + 1, /* 32428 (205864) */ + 1, /* 32429 (205865) */ + 1, /* 3242A (205866) */ + 1, /* 3242B (205867) */ + 1, /* 3242C (205868) */ + 1, /* 3242D (205869) */ + 1, /* 3242E (205870) */ + 1, /* 3242F (205871) */ + 1, /* 32430 (205872) */ + 1, /* 32431 (205873) */ + 1, /* 32432 (205874) */ + 1, /* 32433 (205875) */ + 1, /* 32434 (205876) */ + 1, /* 32435 (205877) */ + 1, /* 32436 (205878) */ + 1, /* 32437 (205879) */ + 1, /* 32438 (205880) */ + 1, /* 32439 (205881) */ + 1, /* 3243A (205882) */ + 1, /* 3243B (205883) */ + 1, /* 3243C (205884) */ + 1, /* 3243D (205885) */ + 1, /* 3243E (205886) */ + 1, /* 3243F (205887) */ + 1, /* 32440 (205888) */ + 1, /* 32441 (205889) */ + 1, /* 32442 (205890) */ + 1, /* 32443 (205891) */ + 1, /* 32444 (205892) */ + 1, /* 32445 (205893) */ + 1, /* 32446 (205894) */ + 1, /* 32447 (205895) */ + 1, /* 32448 (205896) */ + 1, /* 32449 (205897) */ + 1, /* 3244A (205898) */ + 1, /* 3244B (205899) */ + 1, /* 3244C (205900) */ + 1, /* 3244D (205901) */ + 1, /* 3244E (205902) */ + 1, /* 3244F (205903) */ + 1, /* 32450 (205904) */ + 1, /* 32451 (205905) */ + 1, /* 32452 (205906) */ + 1, /* 32453 (205907) */ + 1, /* 32454 (205908) */ + 1, /* 32455 (205909) */ + 1, /* 32456 (205910) */ + 1, /* 32457 (205911) */ + 1, /* 32458 (205912) */ + 1, /* 32459 (205913) */ + 1, /* 3245A (205914) */ + 1, /* 3245B (205915) */ + 1, /* 3245C (205916) */ + 1, /* 3245D (205917) */ + 1, /* 3245E (205918) */ + 1, /* 3245F (205919) */ + 1, /* 32460 (205920) */ + 1, /* 32461 (205921) */ + 1, /* 32462 (205922) */ + 1, /* 32463 (205923) */ + 1, /* 32464 (205924) */ + 1, /* 32465 (205925) */ + 1, /* 32466 (205926) */ + 1, /* 32467 (205927) */ + 1, /* 32468 (205928) */ + 1, /* 32469 (205929) */ + 1, /* 3246A (205930) */ + 1, /* 3246B (205931) */ + 1, /* 3246C (205932) */ + 1, /* 3246D (205933) */ + 1, /* 3246E (205934) */ + 1, /* 3246F (205935) */ + 1, /* 32470 (205936) */ + 1, /* 32471 (205937) */ + 1, /* 32472 (205938) */ + 1, /* 32473 (205939) */ + 1, /* 32474 (205940) */ + 1, /* 32475 (205941) */ + 1, /* 32476 (205942) */ + 1, /* 32477 (205943) */ + 1, /* 32478 (205944) */ + 1, /* 32479 (205945) */ + 1, /* 3247A (205946) */ + 1, /* 3247B (205947) */ + 1, /* 3247C (205948) */ + 1, /* 3247D (205949) */ + 1, /* 3247E (205950) */ + 1, /* 3247F (205951) */ + 1, /* 32480 (205952) */ + 1, /* 32481 (205953) */ + 1, /* 32482 (205954) */ + 1, /* 32483 (205955) */ + 1, /* 32484 (205956) */ + 1, /* 32485 (205957) */ + 1, /* 32486 (205958) */ + 1, /* 32487 (205959) */ + 1, /* 32488 (205960) */ + 1, /* 32489 (205961) */ + 1, /* 3248A (205962) */ + 1, /* 3248B (205963) */ + 1, /* 3248C (205964) */ + 1, /* 3248D (205965) */ + 1, /* 3248E (205966) */ + 1, /* 3248F (205967) */ + 1, /* 32490 (205968) */ + 1, /* 32491 (205969) */ + 1, /* 32492 (205970) */ + 1, /* 32493 (205971) */ + 1, /* 32494 (205972) */ + 1, /* 32495 (205973) */ + 1, /* 32496 (205974) */ + 1, /* 32497 (205975) */ + 1, /* 32498 (205976) */ + 1, /* 32499 (205977) */ + 1, /* 3249A (205978) */ + 1, /* 3249B (205979) */ + 1, /* 3249C (205980) */ + 1, /* 3249D (205981) */ + 1, /* 3249E (205982) */ + 1, /* 3249F (205983) */ + 1, /* 324A0 (205984) */ + 1, /* 324A1 (205985) */ + 1, /* 324A2 (205986) */ + 1, /* 324A3 (205987) */ + 1, /* 324A4 (205988) */ + 1, /* 324A5 (205989) */ + 1, /* 324A6 (205990) */ + 1, /* 324A7 (205991) */ + 1, /* 324A8 (205992) */ + 1, /* 324A9 (205993) */ + 1, /* 324AA (205994) */ + 1, /* 324AB (205995) */ + 1, /* 324AC (205996) */ + 1, /* 324AD (205997) */ + 1, /* 324AE (205998) */ + 1, /* 324AF (205999) */ + 1, /* 324B0 (206000) */ + 1, /* 324B1 (206001) */ + 1, /* 324B2 (206002) */ + 1, /* 324B3 (206003) */ + 1, /* 324B4 (206004) */ + 1, /* 324B5 (206005) */ + 1, /* 324B6 (206006) */ + 1, /* 324B7 (206007) */ + 1, /* 324B8 (206008) */ + 1, /* 324B9 (206009) */ + 1, /* 324BA (206010) */ + 1, /* 324BB (206011) */ + 1, /* 324BC (206012) */ + 1, /* 324BD (206013) */ + 1, /* 324BE (206014) */ + 1, /* 324BF (206015) */ + 1, /* 324C0 (206016) */ + 1, /* 324C1 (206017) */ + 1, /* 324C2 (206018) */ + 1, /* 324C3 (206019) */ + 1, /* 324C4 (206020) */ + 1, /* 324C5 (206021) */ + 1, /* 324C6 (206022) */ + 1, /* 324C7 (206023) */ + 1, /* 324C8 (206024) */ + 1, /* 324C9 (206025) */ + 1, /* 324CA (206026) */ + 1, /* 324CB (206027) */ + 1, /* 324CC (206028) */ + 1, /* 324CD (206029) */ + 1, /* 324CE (206030) */ + 1, /* 324CF (206031) */ + 1, /* 324D0 (206032) */ + 1, /* 324D1 (206033) */ + 1, /* 324D2 (206034) */ + 1, /* 324D3 (206035) */ + 1, /* 324D4 (206036) */ + 1, /* 324D5 (206037) */ + 1, /* 324D6 (206038) */ + 1, /* 324D7 (206039) */ + 1, /* 324D8 (206040) */ + 1, /* 324D9 (206041) */ + 1, /* 324DA (206042) */ + 1, /* 324DB (206043) */ + 1, /* 324DC (206044) */ + 1, /* 324DD (206045) */ + 1, /* 324DE (206046) */ + 1, /* 324DF (206047) */ + 1, /* 324E0 (206048) */ + 1, /* 324E1 (206049) */ + 1, /* 324E2 (206050) */ + 1, /* 324E3 (206051) */ + 1, /* 324E4 (206052) */ + 1, /* 324E5 (206053) */ + 1, /* 324E6 (206054) */ + 1, /* 324E7 (206055) */ + 1, /* 324E8 (206056) */ + 1, /* 324E9 (206057) */ + 1, /* 324EA (206058) */ + 1, /* 324EB (206059) */ + 1, /* 324EC (206060) */ + 1, /* 324ED (206061) */ + 1, /* 324EE (206062) */ + 1, /* 324EF (206063) */ + 1, /* 324F0 (206064) */ + 1, /* 324F1 (206065) */ + 1, /* 324F2 (206066) */ + 1, /* 324F3 (206067) */ + 1, /* 324F4 (206068) */ + 1, /* 324F5 (206069) */ + 1, /* 324F6 (206070) */ + 1, /* 324F7 (206071) */ + 1, /* 324F8 (206072) */ + 1, /* 324F9 (206073) */ + 1, /* 324FA (206074) */ + 1, /* 324FB (206075) */ + 1, /* 324FC (206076) */ + 1, /* 324FD (206077) */ + 1, /* 324FE (206078) */ + 1, /* 324FF (206079) */ + 1, /* 32500 (206080) */ + 1, /* 32501 (206081) */ + 1, /* 32502 (206082) */ + 1, /* 32503 (206083) */ + 1, /* 32504 (206084) */ + 1, /* 32505 (206085) */ + 1, /* 32506 (206086) */ + 1, /* 32507 (206087) */ + 1, /* 32508 (206088) */ + 1, /* 32509 (206089) */ + 1, /* 3250A (206090) */ + 1, /* 3250B (206091) */ + 1, /* 3250C (206092) */ + 1, /* 3250D (206093) */ + 1, /* 3250E (206094) */ + 1, /* 3250F (206095) */ + 1, /* 32510 (206096) */ + 1, /* 32511 (206097) */ + 1, /* 32512 (206098) */ + 1, /* 32513 (206099) */ + 1, /* 32514 (206100) */ + 1, /* 32515 (206101) */ + 1, /* 32516 (206102) */ + 1, /* 32517 (206103) */ + 1, /* 32518 (206104) */ + 1, /* 32519 (206105) */ + 1, /* 3251A (206106) */ + 1, /* 3251B (206107) */ + 1, /* 3251C (206108) */ + 1, /* 3251D (206109) */ + 1, /* 3251E (206110) */ + 1, /* 3251F (206111) */ + 1, /* 32520 (206112) */ + 1, /* 32521 (206113) */ + 1, /* 32522 (206114) */ + 1, /* 32523 (206115) */ + 1, /* 32524 (206116) */ + 1, /* 32525 (206117) */ + 1, /* 32526 (206118) */ + 1, /* 32527 (206119) */ + 1, /* 32528 (206120) */ + 1, /* 32529 (206121) */ + 1, /* 3252A (206122) */ + 1, /* 3252B (206123) */ + 1, /* 3252C (206124) */ + 1, /* 3252D (206125) */ + 1, /* 3252E (206126) */ + 1, /* 3252F (206127) */ + 1, /* 32530 (206128) */ + 1, /* 32531 (206129) */ + 1, /* 32532 (206130) */ + 1, /* 32533 (206131) */ + 1, /* 32534 (206132) */ + 1, /* 32535 (206133) */ + 1, /* 32536 (206134) */ + 1, /* 32537 (206135) */ + 1, /* 32538 (206136) */ + 1, /* 32539 (206137) */ + 1, /* 3253A (206138) */ + 1, /* 3253B (206139) */ + 1, /* 3253C (206140) */ + 1, /* 3253D (206141) */ + 1, /* 3253E (206142) */ + 1, /* 3253F (206143) */ + 1, /* 32540 (206144) */ + 1, /* 32541 (206145) */ + 1, /* 32542 (206146) */ + 1, /* 32543 (206147) */ + 1, /* 32544 (206148) */ + 1, /* 32545 (206149) */ + 1, /* 32546 (206150) */ + 1, /* 32547 (206151) */ + 1, /* 32548 (206152) */ + 1, /* 32549 (206153) */ + 1, /* 3254A (206154) */ + 1, /* 3254B (206155) */ + 1, /* 3254C (206156) */ + 1, /* 3254D (206157) */ + 1, /* 3254E (206158) */ + 1, /* 3254F (206159) */ + 1, /* 32550 (206160) */ + 1, /* 32551 (206161) */ + 1, /* 32552 (206162) */ + 1, /* 32553 (206163) */ + 1, /* 32554 (206164) */ + 1, /* 32555 (206165) */ + 1, /* 32556 (206166) */ + 1, /* 32557 (206167) */ + 1, /* 32558 (206168) */ + 1, /* 32559 (206169) */ + 1, /* 3255A (206170) */ + 1, /* 3255B (206171) */ + 1, /* 3255C (206172) */ + 1, /* 3255D (206173) */ + 1, /* 3255E (206174) */ + 1, /* 3255F (206175) */ + 1, /* 32560 (206176) */ + 1, /* 32561 (206177) */ + 1, /* 32562 (206178) */ + 1, /* 32563 (206179) */ + 1, /* 32564 (206180) */ + 1, /* 32565 (206181) */ + 1, /* 32566 (206182) */ + 1, /* 32567 (206183) */ + 1, /* 32568 (206184) */ + 1, /* 32569 (206185) */ + 1, /* 3256A (206186) */ + 1, /* 3256B (206187) */ + 1, /* 3256C (206188) */ + 1, /* 3256D (206189) */ + 1, /* 3256E (206190) */ + 1, /* 3256F (206191) */ + 1, /* 32570 (206192) */ + 1, /* 32571 (206193) */ + 1, /* 32572 (206194) */ + 1, /* 32573 (206195) */ + 1, /* 32574 (206196) */ + 1, /* 32575 (206197) */ + 1, /* 32576 (206198) */ + 1, /* 32577 (206199) */ + 1, /* 32578 (206200) */ + 1, /* 32579 (206201) */ + 1, /* 3257A (206202) */ + 1, /* 3257B (206203) */ + 1, /* 3257C (206204) */ + 1, /* 3257D (206205) */ + 1, /* 3257E (206206) */ + 1, /* 3257F (206207) */ + 1, /* 32580 (206208) */ + 1, /* 32581 (206209) */ + 1, /* 32582 (206210) */ + 1, /* 32583 (206211) */ + 1, /* 32584 (206212) */ + 1, /* 32585 (206213) */ + 1, /* 32586 (206214) */ + 1, /* 32587 (206215) */ + 1, /* 32588 (206216) */ + 1, /* 32589 (206217) */ + 1, /* 3258A (206218) */ + 1, /* 3258B (206219) */ + 1, /* 3258C (206220) */ + 1, /* 3258D (206221) */ + 1, /* 3258E (206222) */ + 1, /* 3258F (206223) */ + 1, /* 32590 (206224) */ + 1, /* 32591 (206225) */ + 1, /* 32592 (206226) */ + 1, /* 32593 (206227) */ + 1, /* 32594 (206228) */ + 1, /* 32595 (206229) */ + 1, /* 32596 (206230) */ + 1, /* 32597 (206231) */ + 1, /* 32598 (206232) */ + 1, /* 32599 (206233) */ + 1, /* 3259A (206234) */ + 1, /* 3259B (206235) */ + 1, /* 3259C (206236) */ + 1, /* 3259D (206237) */ + 1, /* 3259E (206238) */ + 1, /* 3259F (206239) */ + 1, /* 325A0 (206240) */ + 1, /* 325A1 (206241) */ + 1, /* 325A2 (206242) */ + 1, /* 325A3 (206243) */ + 1, /* 325A4 (206244) */ + 1, /* 325A5 (206245) */ + 1, /* 325A6 (206246) */ + 1, /* 325A7 (206247) */ + 1, /* 325A8 (206248) */ + 1, /* 325A9 (206249) */ + 1, /* 325AA (206250) */ + 1, /* 325AB (206251) */ + 1, /* 325AC (206252) */ + 1, /* 325AD (206253) */ + 1, /* 325AE (206254) */ + 1, /* 325AF (206255) */ + 1, /* 325B0 (206256) */ + 1, /* 325B1 (206257) */ + 1, /* 325B2 (206258) */ + 1, /* 325B3 (206259) */ + 1, /* 325B4 (206260) */ + 1, /* 325B5 (206261) */ + 1, /* 325B6 (206262) */ + 1, /* 325B7 (206263) */ + 1, /* 325B8 (206264) */ + 1, /* 325B9 (206265) */ + 1, /* 325BA (206266) */ + 1, /* 325BB (206267) */ + 1, /* 325BC (206268) */ + 1, /* 325BD (206269) */ + 1, /* 325BE (206270) */ + 1, /* 325BF (206271) */ + 1, /* 325C0 (206272) */ + 1, /* 325C1 (206273) */ + 1, /* 325C2 (206274) */ + 1, /* 325C3 (206275) */ + 1, /* 325C4 (206276) */ + 1, /* 325C5 (206277) */ + 1, /* 325C6 (206278) */ + 1, /* 325C7 (206279) */ + 1, /* 325C8 (206280) */ + 1, /* 325C9 (206281) */ + 1, /* 325CA (206282) */ + 1, /* 325CB (206283) */ + 1, /* 325CC (206284) */ + 1, /* 325CD (206285) */ + 1, /* 325CE (206286) */ + 1, /* 325CF (206287) */ + 1, /* 325D0 (206288) */ + 1, /* 325D1 (206289) */ + 1, /* 325D2 (206290) */ + 1, /* 325D3 (206291) */ + 1, /* 325D4 (206292) */ + 1, /* 325D5 (206293) */ + 1, /* 325D6 (206294) */ + 1, /* 325D7 (206295) */ + 1, /* 325D8 (206296) */ + 1, /* 325D9 (206297) */ + 1, /* 325DA (206298) */ + 1, /* 325DB (206299) */ + 1, /* 325DC (206300) */ + 1, /* 325DD (206301) */ + 1, /* 325DE (206302) */ + 1, /* 325DF (206303) */ + 1, /* 325E0 (206304) */ + 1, /* 325E1 (206305) */ + 1, /* 325E2 (206306) */ + 1, /* 325E3 (206307) */ + 1, /* 325E4 (206308) */ + 1, /* 325E5 (206309) */ + 1, /* 325E6 (206310) */ + 1, /* 325E7 (206311) */ + 1, /* 325E8 (206312) */ + 1, /* 325E9 (206313) */ + 1, /* 325EA (206314) */ + 1, /* 325EB (206315) */ + 1, /* 325EC (206316) */ + 1, /* 325ED (206317) */ + 1, /* 325EE (206318) */ + 1, /* 325EF (206319) */ + 1, /* 325F0 (206320) */ + 1, /* 325F1 (206321) */ + 1, /* 325F2 (206322) */ + 1, /* 325F3 (206323) */ + 1, /* 325F4 (206324) */ + 1, /* 325F5 (206325) */ + 1, /* 325F6 (206326) */ + 1, /* 325F7 (206327) */ + 1, /* 325F8 (206328) */ + 1, /* 325F9 (206329) */ + 1, /* 325FA (206330) */ + 1, /* 325FB (206331) */ + 1, /* 325FC (206332) */ + 1, /* 325FD (206333) */ + 1, /* 325FE (206334) */ + 1, /* 325FF (206335) */ + 1, /* 32600 (206336) */ + 1, /* 32601 (206337) */ + 1, /* 32602 (206338) */ + 1, /* 32603 (206339) */ + 1, /* 32604 (206340) */ + 1, /* 32605 (206341) */ + 1, /* 32606 (206342) */ + 1, /* 32607 (206343) */ + 1, /* 32608 (206344) */ + 1, /* 32609 (206345) */ + 1, /* 3260A (206346) */ + 1, /* 3260B (206347) */ + 1, /* 3260C (206348) */ + 1, /* 3260D (206349) */ + 1, /* 3260E (206350) */ + 1, /* 3260F (206351) */ + 1, /* 32610 (206352) */ + 1, /* 32611 (206353) */ + 1, /* 32612 (206354) */ + 1, /* 32613 (206355) */ + 1, /* 32614 (206356) */ + 1, /* 32615 (206357) */ + 1, /* 32616 (206358) */ + 1, /* 32617 (206359) */ + 1, /* 32618 (206360) */ + 1, /* 32619 (206361) */ + 1, /* 3261A (206362) */ + 1, /* 3261B (206363) */ + 1, /* 3261C (206364) */ + 1, /* 3261D (206365) */ + 1, /* 3261E (206366) */ + 1, /* 3261F (206367) */ + 1, /* 32620 (206368) */ + 1, /* 32621 (206369) */ + 1, /* 32622 (206370) */ + 1, /* 32623 (206371) */ + 1, /* 32624 (206372) */ + 1, /* 32625 (206373) */ + 1, /* 32626 (206374) */ + 1, /* 32627 (206375) */ + 1, /* 32628 (206376) */ + 1, /* 32629 (206377) */ + 1, /* 3262A (206378) */ + 1, /* 3262B (206379) */ + 1, /* 3262C (206380) */ + 1, /* 3262D (206381) */ + 1, /* 3262E (206382) */ + 1, /* 3262F (206383) */ + 1, /* 32630 (206384) */ + 1, /* 32631 (206385) */ + 1, /* 32632 (206386) */ + 1, /* 32633 (206387) */ + 1, /* 32634 (206388) */ + 1, /* 32635 (206389) */ + 1, /* 32636 (206390) */ + 1, /* 32637 (206391) */ + 1, /* 32638 (206392) */ + 1, /* 32639 (206393) */ + 1, /* 3263A (206394) */ + 1, /* 3263B (206395) */ + 1, /* 3263C (206396) */ + 1, /* 3263D (206397) */ + 1, /* 3263E (206398) */ + 1, /* 3263F (206399) */ + 1, /* 32640 (206400) */ + 1, /* 32641 (206401) */ + 1, /* 32642 (206402) */ + 1, /* 32643 (206403) */ + 1, /* 32644 (206404) */ + 1, /* 32645 (206405) */ + 1, /* 32646 (206406) */ + 1, /* 32647 (206407) */ + 1, /* 32648 (206408) */ + 1, /* 32649 (206409) */ + 1, /* 3264A (206410) */ + 1, /* 3264B (206411) */ + 1, /* 3264C (206412) */ + 1, /* 3264D (206413) */ + 1, /* 3264E (206414) */ + 1, /* 3264F (206415) */ + 1, /* 32650 (206416) */ + 1, /* 32651 (206417) */ + 1, /* 32652 (206418) */ + 1, /* 32653 (206419) */ + 1, /* 32654 (206420) */ + 1, /* 32655 (206421) */ + 1, /* 32656 (206422) */ + 1, /* 32657 (206423) */ + 1, /* 32658 (206424) */ + 1, /* 32659 (206425) */ + 1, /* 3265A (206426) */ + 1, /* 3265B (206427) */ + 1, /* 3265C (206428) */ + 1, /* 3265D (206429) */ + 1, /* 3265E (206430) */ + 1, /* 3265F (206431) */ + 1, /* 32660 (206432) */ + 1, /* 32661 (206433) */ + 1, /* 32662 (206434) */ + 1, /* 32663 (206435) */ + 1, /* 32664 (206436) */ + 1, /* 32665 (206437) */ + 1, /* 32666 (206438) */ + 1, /* 32667 (206439) */ + 1, /* 32668 (206440) */ + 1, /* 32669 (206441) */ + 1, /* 3266A (206442) */ + 1, /* 3266B (206443) */ + 1, /* 3266C (206444) */ + 1, /* 3266D (206445) */ + 1, /* 3266E (206446) */ + 1, /* 3266F (206447) */ + 1, /* 32670 (206448) */ + 1, /* 32671 (206449) */ + 1, /* 32672 (206450) */ + 1, /* 32673 (206451) */ + 1, /* 32674 (206452) */ + 1, /* 32675 (206453) */ + 1, /* 32676 (206454) */ + 1, /* 32677 (206455) */ + 1, /* 32678 (206456) */ + 1, /* 32679 (206457) */ + 1, /* 3267A (206458) */ + 1, /* 3267B (206459) */ + 1, /* 3267C (206460) */ + 1, /* 3267D (206461) */ + 1, /* 3267E (206462) */ + 1, /* 3267F (206463) */ + 1, /* 32680 (206464) */ + 1, /* 32681 (206465) */ + 1, /* 32682 (206466) */ + 1, /* 32683 (206467) */ + 1, /* 32684 (206468) */ + 1, /* 32685 (206469) */ + 1, /* 32686 (206470) */ + 1, /* 32687 (206471) */ + 1, /* 32688 (206472) */ + 1, /* 32689 (206473) */ + 1, /* 3268A (206474) */ + 1, /* 3268B (206475) */ + 1, /* 3268C (206476) */ + 1, /* 3268D (206477) */ + 1, /* 3268E (206478) */ + 1, /* 3268F (206479) */ + 1, /* 32690 (206480) */ + 1, /* 32691 (206481) */ + 1, /* 32692 (206482) */ + 1, /* 32693 (206483) */ + 1, /* 32694 (206484) */ + 1, /* 32695 (206485) */ + 1, /* 32696 (206486) */ + 1, /* 32697 (206487) */ + 1, /* 32698 (206488) */ + 1, /* 32699 (206489) */ + 1, /* 3269A (206490) */ + 1, /* 3269B (206491) */ + 1, /* 3269C (206492) */ + 1, /* 3269D (206493) */ + 1, /* 3269E (206494) */ + 1, /* 3269F (206495) */ + 1, /* 326A0 (206496) */ + 1, /* 326A1 (206497) */ + 1, /* 326A2 (206498) */ + 1, /* 326A3 (206499) */ + 1, /* 326A4 (206500) */ + 1, /* 326A5 (206501) */ + 1, /* 326A6 (206502) */ + 1, /* 326A7 (206503) */ + 1, /* 326A8 (206504) */ + 1, /* 326A9 (206505) */ + 1, /* 326AA (206506) */ + 1, /* 326AB (206507) */ + 1, /* 326AC (206508) */ + 1, /* 326AD (206509) */ + 1, /* 326AE (206510) */ + 1, /* 326AF (206511) */ + 1, /* 326B0 (206512) */ + 1, /* 326B1 (206513) */ + 1, /* 326B2 (206514) */ + 1, /* 326B3 (206515) */ + 1, /* 326B4 (206516) */ + 1, /* 326B5 (206517) */ + 1, /* 326B6 (206518) */ + 1, /* 326B7 (206519) */ + 1, /* 326B8 (206520) */ + 1, /* 326B9 (206521) */ + 1, /* 326BA (206522) */ + 1, /* 326BB (206523) */ + 1, /* 326BC (206524) */ + 1, /* 326BD (206525) */ + 1, /* 326BE (206526) */ + 1, /* 326BF (206527) */ + 1, /* 326C0 (206528) */ + 1, /* 326C1 (206529) */ + 1, /* 326C2 (206530) */ + 1, /* 326C3 (206531) */ + 1, /* 326C4 (206532) */ + 1, /* 326C5 (206533) */ + 1, /* 326C6 (206534) */ + 1, /* 326C7 (206535) */ + 1, /* 326C8 (206536) */ + 1, /* 326C9 (206537) */ + 1, /* 326CA (206538) */ + 1, /* 326CB (206539) */ + 1, /* 326CC (206540) */ + 1, /* 326CD (206541) */ + 1, /* 326CE (206542) */ + 1, /* 326CF (206543) */ + 1, /* 326D0 (206544) */ + 1, /* 326D1 (206545) */ + 1, /* 326D2 (206546) */ + 1, /* 326D3 (206547) */ + 1, /* 326D4 (206548) */ + 1, /* 326D5 (206549) */ + 1, /* 326D6 (206550) */ + 1, /* 326D7 (206551) */ + 1, /* 326D8 (206552) */ + 1, /* 326D9 (206553) */ + 1, /* 326DA (206554) */ + 1, /* 326DB (206555) */ + 1, /* 326DC (206556) */ + 1, /* 326DD (206557) */ + 1, /* 326DE (206558) */ + 1, /* 326DF (206559) */ + 1, /* 326E0 (206560) */ + 1, /* 326E1 (206561) */ + 1, /* 326E2 (206562) */ + 1, /* 326E3 (206563) */ + 1, /* 326E4 (206564) */ + 1, /* 326E5 (206565) */ + 1, /* 326E6 (206566) */ + 1, /* 326E7 (206567) */ + 1, /* 326E8 (206568) */ + 1, /* 326E9 (206569) */ + 1, /* 326EA (206570) */ + 1, /* 326EB (206571) */ + 1, /* 326EC (206572) */ + 1, /* 326ED (206573) */ + 1, /* 326EE (206574) */ + 1, /* 326EF (206575) */ + 1, /* 326F0 (206576) */ + 1, /* 326F1 (206577) */ + 1, /* 326F2 (206578) */ + 1, /* 326F3 (206579) */ + 1, /* 326F4 (206580) */ + 1, /* 326F5 (206581) */ + 1, /* 326F6 (206582) */ + 1, /* 326F7 (206583) */ + 1, /* 326F8 (206584) */ + 1, /* 326F9 (206585) */ + 1, /* 326FA (206586) */ + 1, /* 326FB (206587) */ + 1, /* 326FC (206588) */ + 1, /* 326FD (206589) */ + 1, /* 326FE (206590) */ + 1, /* 326FF (206591) */ + 1, /* 32700 (206592) */ + 1, /* 32701 (206593) */ + 1, /* 32702 (206594) */ + 1, /* 32703 (206595) */ + 1, /* 32704 (206596) */ + 1, /* 32705 (206597) */ + 1, /* 32706 (206598) */ + 1, /* 32707 (206599) */ + 1, /* 32708 (206600) */ + 1, /* 32709 (206601) */ + 1, /* 3270A (206602) */ + 1, /* 3270B (206603) */ + 1, /* 3270C (206604) */ + 1, /* 3270D (206605) */ + 1, /* 3270E (206606) */ + 1, /* 3270F (206607) */ + 1, /* 32710 (206608) */ + 1, /* 32711 (206609) */ + 1, /* 32712 (206610) */ + 1, /* 32713 (206611) */ + 1, /* 32714 (206612) */ + 1, /* 32715 (206613) */ + 1, /* 32716 (206614) */ + 1, /* 32717 (206615) */ + 1, /* 32718 (206616) */ + 1, /* 32719 (206617) */ + 1, /* 3271A (206618) */ + 1, /* 3271B (206619) */ + 1, /* 3271C (206620) */ + 1, /* 3271D (206621) */ + 1, /* 3271E (206622) */ + 1, /* 3271F (206623) */ + 1, /* 32720 (206624) */ + 1, /* 32721 (206625) */ + 1, /* 32722 (206626) */ + 1, /* 32723 (206627) */ + 1, /* 32724 (206628) */ + 1, /* 32725 (206629) */ + 1, /* 32726 (206630) */ + 1, /* 32727 (206631) */ + 1, /* 32728 (206632) */ + 1, /* 32729 (206633) */ + 1, /* 3272A (206634) */ + 1, /* 3272B (206635) */ + 1, /* 3272C (206636) */ + 1, /* 3272D (206637) */ + 1, /* 3272E (206638) */ + 1, /* 3272F (206639) */ + 1, /* 32730 (206640) */ + 1, /* 32731 (206641) */ + 1, /* 32732 (206642) */ + 1, /* 32733 (206643) */ + 1, /* 32734 (206644) */ + 1, /* 32735 (206645) */ + 1, /* 32736 (206646) */ + 1, /* 32737 (206647) */ + 1, /* 32738 (206648) */ + 1, /* 32739 (206649) */ + 1, /* 3273A (206650) */ + 1, /* 3273B (206651) */ + 1, /* 3273C (206652) */ + 1, /* 3273D (206653) */ + 1, /* 3273E (206654) */ + 1, /* 3273F (206655) */ + 1, /* 32740 (206656) */ + 1, /* 32741 (206657) */ + 1, /* 32742 (206658) */ + 1, /* 32743 (206659) */ + 1, /* 32744 (206660) */ + 1, /* 32745 (206661) */ + 1, /* 32746 (206662) */ + 1, /* 32747 (206663) */ + 1, /* 32748 (206664) */ + 1, /* 32749 (206665) */ + 1, /* 3274A (206666) */ + 1, /* 3274B (206667) */ + 1, /* 3274C (206668) */ + 1, /* 3274D (206669) */ + 1, /* 3274E (206670) */ + 1, /* 3274F (206671) */ + 1, /* 32750 (206672) */ + 1, /* 32751 (206673) */ + 1, /* 32752 (206674) */ + 1, /* 32753 (206675) */ + 1, /* 32754 (206676) */ + 1, /* 32755 (206677) */ + 1, /* 32756 (206678) */ + 1, /* 32757 (206679) */ + 1, /* 32758 (206680) */ + 1, /* 32759 (206681) */ + 1, /* 3275A (206682) */ + 1, /* 3275B (206683) */ + 1, /* 3275C (206684) */ + 1, /* 3275D (206685) */ + 1, /* 3275E (206686) */ + 1, /* 3275F (206687) */ + 1, /* 32760 (206688) */ + 1, /* 32761 (206689) */ + 1, /* 32762 (206690) */ + 1, /* 32763 (206691) */ + 1, /* 32764 (206692) */ + 1, /* 32765 (206693) */ + 1, /* 32766 (206694) */ + 1, /* 32767 (206695) */ + 1, /* 32768 (206696) */ + 1, /* 32769 (206697) */ + 1, /* 3276A (206698) */ + 1, /* 3276B (206699) */ + 1, /* 3276C (206700) */ + 1, /* 3276D (206701) */ + 1, /* 3276E (206702) */ + 1, /* 3276F (206703) */ + 1, /* 32770 (206704) */ + 1, /* 32771 (206705) */ + 1, /* 32772 (206706) */ + 1, /* 32773 (206707) */ + 1, /* 32774 (206708) */ + 1, /* 32775 (206709) */ + 1, /* 32776 (206710) */ + 1, /* 32777 (206711) */ + 1, /* 32778 (206712) */ + 1, /* 32779 (206713) */ + 1, /* 3277A (206714) */ + 1, /* 3277B (206715) */ + 1, /* 3277C (206716) */ + 1, /* 3277D (206717) */ + 1, /* 3277E (206718) */ + 1, /* 3277F (206719) */ + 1, /* 32780 (206720) */ + 1, /* 32781 (206721) */ + 1, /* 32782 (206722) */ + 1, /* 32783 (206723) */ + 1, /* 32784 (206724) */ + 1, /* 32785 (206725) */ + 1, /* 32786 (206726) */ + 1, /* 32787 (206727) */ + 1, /* 32788 (206728) */ + 1, /* 32789 (206729) */ + 1, /* 3278A (206730) */ + 1, /* 3278B (206731) */ + 1, /* 3278C (206732) */ + 1, /* 3278D (206733) */ + 1, /* 3278E (206734) */ + 1, /* 3278F (206735) */ + 1, /* 32790 (206736) */ + 1, /* 32791 (206737) */ + 1, /* 32792 (206738) */ + 1, /* 32793 (206739) */ + 1, /* 32794 (206740) */ + 1, /* 32795 (206741) */ + 1, /* 32796 (206742) */ + 1, /* 32797 (206743) */ + 1, /* 32798 (206744) */ + 1, /* 32799 (206745) */ + 1, /* 3279A (206746) */ + 1, /* 3279B (206747) */ + 1, /* 3279C (206748) */ + 1, /* 3279D (206749) */ + 1, /* 3279E (206750) */ + 1, /* 3279F (206751) */ + 1, /* 327A0 (206752) */ + 1, /* 327A1 (206753) */ + 1, /* 327A2 (206754) */ + 1, /* 327A3 (206755) */ + 1, /* 327A4 (206756) */ + 1, /* 327A5 (206757) */ + 1, /* 327A6 (206758) */ + 1, /* 327A7 (206759) */ + 1, /* 327A8 (206760) */ + 1, /* 327A9 (206761) */ + 1, /* 327AA (206762) */ + 1, /* 327AB (206763) */ + 1, /* 327AC (206764) */ + 1, /* 327AD (206765) */ + 1, /* 327AE (206766) */ + 1, /* 327AF (206767) */ + 1, /* 327B0 (206768) */ + 1, /* 327B1 (206769) */ + 1, /* 327B2 (206770) */ + 1, /* 327B3 (206771) */ + 1, /* 327B4 (206772) */ + 1, /* 327B5 (206773) */ + 1, /* 327B6 (206774) */ + 1, /* 327B7 (206775) */ + 1, /* 327B8 (206776) */ + 1, /* 327B9 (206777) */ + 1, /* 327BA (206778) */ + 1, /* 327BB (206779) */ + 1, /* 327BC (206780) */ + 1, /* 327BD (206781) */ + 1, /* 327BE (206782) */ + 1, /* 327BF (206783) */ + 1, /* 327C0 (206784) */ + 1, /* 327C1 (206785) */ + 1, /* 327C2 (206786) */ + 1, /* 327C3 (206787) */ + 1, /* 327C4 (206788) */ + 1, /* 327C5 (206789) */ + 1, /* 327C6 (206790) */ + 1, /* 327C7 (206791) */ + 1, /* 327C8 (206792) */ + 1, /* 327C9 (206793) */ + 1, /* 327CA (206794) */ + 1, /* 327CB (206795) */ + 1, /* 327CC (206796) */ + 1, /* 327CD (206797) */ + 1, /* 327CE (206798) */ + 1, /* 327CF (206799) */ + 1, /* 327D0 (206800) */ + 1, /* 327D1 (206801) */ + 1, /* 327D2 (206802) */ + 1, /* 327D3 (206803) */ + 1, /* 327D4 (206804) */ + 1, /* 327D5 (206805) */ + 1, /* 327D6 (206806) */ + 1, /* 327D7 (206807) */ + 1, /* 327D8 (206808) */ + 1, /* 327D9 (206809) */ + 1, /* 327DA (206810) */ + 1, /* 327DB (206811) */ + 1, /* 327DC (206812) */ + 1, /* 327DD (206813) */ + 1, /* 327DE (206814) */ + 1, /* 327DF (206815) */ + 1, /* 327E0 (206816) */ + 1, /* 327E1 (206817) */ + 1, /* 327E2 (206818) */ + 1, /* 327E3 (206819) */ + 1, /* 327E4 (206820) */ + 1, /* 327E5 (206821) */ + 1, /* 327E6 (206822) */ + 1, /* 327E7 (206823) */ + 1, /* 327E8 (206824) */ + 1, /* 327E9 (206825) */ + 1, /* 327EA (206826) */ + 1, /* 327EB (206827) */ + 1, /* 327EC (206828) */ + 1, /* 327ED (206829) */ + 1, /* 327EE (206830) */ + 1, /* 327EF (206831) */ + 1, /* 327F0 (206832) */ + 1, /* 327F1 (206833) */ + 1, /* 327F2 (206834) */ + 1, /* 327F3 (206835) */ + 1, /* 327F4 (206836) */ + 1, /* 327F5 (206837) */ + 1, /* 327F6 (206838) */ + 1, /* 327F7 (206839) */ + 1, /* 327F8 (206840) */ + 1, /* 327F9 (206841) */ + 1, /* 327FA (206842) */ + 1, /* 327FB (206843) */ + 1, /* 327FC (206844) */ + 1, /* 327FD (206845) */ + 1, /* 327FE (206846) */ + 1, /* 327FF (206847) */ + 1, /* 32800 (206848) */ + 1, /* 32801 (206849) */ + 1, /* 32802 (206850) */ + 1, /* 32803 (206851) */ + 1, /* 32804 (206852) */ + 1, /* 32805 (206853) */ + 1, /* 32806 (206854) */ + 1, /* 32807 (206855) */ + 1, /* 32808 (206856) */ + 1, /* 32809 (206857) */ + 1, /* 3280A (206858) */ + 1, /* 3280B (206859) */ + 1, /* 3280C (206860) */ + 1, /* 3280D (206861) */ + 1, /* 3280E (206862) */ + 1, /* 3280F (206863) */ + 1, /* 32810 (206864) */ + 1, /* 32811 (206865) */ + 1, /* 32812 (206866) */ + 1, /* 32813 (206867) */ + 1, /* 32814 (206868) */ + 1, /* 32815 (206869) */ + 1, /* 32816 (206870) */ + 1, /* 32817 (206871) */ + 1, /* 32818 (206872) */ + 1, /* 32819 (206873) */ + 1, /* 3281A (206874) */ + 1, /* 3281B (206875) */ + 1, /* 3281C (206876) */ + 1, /* 3281D (206877) */ + 1, /* 3281E (206878) */ + 1, /* 3281F (206879) */ + 1, /* 32820 (206880) */ + 1, /* 32821 (206881) */ + 1, /* 32822 (206882) */ + 1, /* 32823 (206883) */ + 1, /* 32824 (206884) */ + 1, /* 32825 (206885) */ + 1, /* 32826 (206886) */ + 1, /* 32827 (206887) */ + 1, /* 32828 (206888) */ + 1, /* 32829 (206889) */ + 1, /* 3282A (206890) */ + 1, /* 3282B (206891) */ + 1, /* 3282C (206892) */ + 1, /* 3282D (206893) */ + 1, /* 3282E (206894) */ + 1, /* 3282F (206895) */ + 1, /* 32830 (206896) */ + 1, /* 32831 (206897) */ + 1, /* 32832 (206898) */ + 1, /* 32833 (206899) */ + 1, /* 32834 (206900) */ + 1, /* 32835 (206901) */ + 1, /* 32836 (206902) */ + 1, /* 32837 (206903) */ + 1, /* 32838 (206904) */ + 1, /* 32839 (206905) */ + 1, /* 3283A (206906) */ + 1, /* 3283B (206907) */ + 1, /* 3283C (206908) */ + 1, /* 3283D (206909) */ + 1, /* 3283E (206910) */ + 1, /* 3283F (206911) */ + 1, /* 32840 (206912) */ + 1, /* 32841 (206913) */ + 1, /* 32842 (206914) */ + 1, /* 32843 (206915) */ + 1, /* 32844 (206916) */ + 1, /* 32845 (206917) */ + 1, /* 32846 (206918) */ + 1, /* 32847 (206919) */ + 1, /* 32848 (206920) */ + 1, /* 32849 (206921) */ + 1, /* 3284A (206922) */ + 1, /* 3284B (206923) */ + 1, /* 3284C (206924) */ + 1, /* 3284D (206925) */ + 1, /* 3284E (206926) */ + 1, /* 3284F (206927) */ + 1, /* 32850 (206928) */ + 1, /* 32851 (206929) */ + 1, /* 32852 (206930) */ + 1, /* 32853 (206931) */ + 1, /* 32854 (206932) */ + 1, /* 32855 (206933) */ + 1, /* 32856 (206934) */ + 1, /* 32857 (206935) */ + 1, /* 32858 (206936) */ + 1, /* 32859 (206937) */ + 1, /* 3285A (206938) */ + 1, /* 3285B (206939) */ + 1, /* 3285C (206940) */ + 1, /* 3285D (206941) */ + 1, /* 3285E (206942) */ + 1, /* 3285F (206943) */ + 1, /* 32860 (206944) */ + 1, /* 32861 (206945) */ + 1, /* 32862 (206946) */ + 1, /* 32863 (206947) */ + 1, /* 32864 (206948) */ + 1, /* 32865 (206949) */ + 1, /* 32866 (206950) */ + 1, /* 32867 (206951) */ + 1, /* 32868 (206952) */ + 1, /* 32869 (206953) */ + 1, /* 3286A (206954) */ + 1, /* 3286B (206955) */ + 1, /* 3286C (206956) */ + 1, /* 3286D (206957) */ + 1, /* 3286E (206958) */ + 1, /* 3286F (206959) */ + 1, /* 32870 (206960) */ + 1, /* 32871 (206961) */ + 1, /* 32872 (206962) */ + 1, /* 32873 (206963) */ + 1, /* 32874 (206964) */ + 1, /* 32875 (206965) */ + 1, /* 32876 (206966) */ + 1, /* 32877 (206967) */ + 1, /* 32878 (206968) */ + 1, /* 32879 (206969) */ + 1, /* 3287A (206970) */ + 1, /* 3287B (206971) */ + 1, /* 3287C (206972) */ + 1, /* 3287D (206973) */ + 1, /* 3287E (206974) */ + 1, /* 3287F (206975) */ + 1, /* 32880 (206976) */ + 1, /* 32881 (206977) */ + 1, /* 32882 (206978) */ + 1, /* 32883 (206979) */ + 1, /* 32884 (206980) */ + 1, /* 32885 (206981) */ + 1, /* 32886 (206982) */ + 1, /* 32887 (206983) */ + 1, /* 32888 (206984) */ + 1, /* 32889 (206985) */ + 1, /* 3288A (206986) */ + 1, /* 3288B (206987) */ + 1, /* 3288C (206988) */ + 1, /* 3288D (206989) */ + 1, /* 3288E (206990) */ + 1, /* 3288F (206991) */ + 1, /* 32890 (206992) */ + 1, /* 32891 (206993) */ + 1, /* 32892 (206994) */ + 1, /* 32893 (206995) */ + 1, /* 32894 (206996) */ + 1, /* 32895 (206997) */ + 1, /* 32896 (206998) */ + 1, /* 32897 (206999) */ + 1, /* 32898 (207000) */ + 1, /* 32899 (207001) */ + 1, /* 3289A (207002) */ + 1, /* 3289B (207003) */ + 1, /* 3289C (207004) */ + 1, /* 3289D (207005) */ + 1, /* 3289E (207006) */ + 1, /* 3289F (207007) */ + 1, /* 328A0 (207008) */ + 1, /* 328A1 (207009) */ + 1, /* 328A2 (207010) */ + 1, /* 328A3 (207011) */ + 1, /* 328A4 (207012) */ + 1, /* 328A5 (207013) */ + 1, /* 328A6 (207014) */ + 1, /* 328A7 (207015) */ + 1, /* 328A8 (207016) */ + 1, /* 328A9 (207017) */ + 1, /* 328AA (207018) */ + 1, /* 328AB (207019) */ + 1, /* 328AC (207020) */ + 1, /* 328AD (207021) */ + 1, /* 328AE (207022) */ + 1, /* 328AF (207023) */ + 1, /* 328B0 (207024) */ + 1, /* 328B1 (207025) */ + 1, /* 328B2 (207026) */ + 1, /* 328B3 (207027) */ + 1, /* 328B4 (207028) */ + 1, /* 328B5 (207029) */ + 1, /* 328B6 (207030) */ + 1, /* 328B7 (207031) */ + 1, /* 328B8 (207032) */ + 1, /* 328B9 (207033) */ + 1, /* 328BA (207034) */ + 1, /* 328BB (207035) */ + 1, /* 328BC (207036) */ + 1, /* 328BD (207037) */ + 1, /* 328BE (207038) */ + 1, /* 328BF (207039) */ + 1, /* 328C0 (207040) */ + 1, /* 328C1 (207041) */ + 1, /* 328C2 (207042) */ + 1, /* 328C3 (207043) */ + 1, /* 328C4 (207044) */ + 1, /* 328C5 (207045) */ + 1, /* 328C6 (207046) */ + 1, /* 328C7 (207047) */ + 1, /* 328C8 (207048) */ + 1, /* 328C9 (207049) */ + 1, /* 328CA (207050) */ + 1, /* 328CB (207051) */ + 1, /* 328CC (207052) */ + 1, /* 328CD (207053) */ + 1, /* 328CE (207054) */ + 1, /* 328CF (207055) */ + 1, /* 328D0 (207056) */ + 1, /* 328D1 (207057) */ + 1, /* 328D2 (207058) */ + 1, /* 328D3 (207059) */ + 1, /* 328D4 (207060) */ + 1, /* 328D5 (207061) */ + 1, /* 328D6 (207062) */ + 1, /* 328D7 (207063) */ + 1, /* 328D8 (207064) */ + 1, /* 328D9 (207065) */ + 1, /* 328DA (207066) */ + 1, /* 328DB (207067) */ + 1, /* 328DC (207068) */ + 1, /* 328DD (207069) */ + 1, /* 328DE (207070) */ + 1, /* 328DF (207071) */ + 1, /* 328E0 (207072) */ + 1, /* 328E1 (207073) */ + 1, /* 328E2 (207074) */ + 1, /* 328E3 (207075) */ + 1, /* 328E4 (207076) */ + 1, /* 328E5 (207077) */ + 1, /* 328E6 (207078) */ + 1, /* 328E7 (207079) */ + 1, /* 328E8 (207080) */ + 1, /* 328E9 (207081) */ + 1, /* 328EA (207082) */ + 1, /* 328EB (207083) */ + 1, /* 328EC (207084) */ + 1, /* 328ED (207085) */ + 1, /* 328EE (207086) */ + 1, /* 328EF (207087) */ + 1, /* 328F0 (207088) */ + 1, /* 328F1 (207089) */ + 1, /* 328F2 (207090) */ + 1, /* 328F3 (207091) */ + 1, /* 328F4 (207092) */ + 1, /* 328F5 (207093) */ + 1, /* 328F6 (207094) */ + 1, /* 328F7 (207095) */ + 1, /* 328F8 (207096) */ + 1, /* 328F9 (207097) */ + 1, /* 328FA (207098) */ + 1, /* 328FB (207099) */ + 1, /* 328FC (207100) */ + 1, /* 328FD (207101) */ + 1, /* 328FE (207102) */ + 1, /* 328FF (207103) */ + 1, /* 32900 (207104) */ + 1, /* 32901 (207105) */ + 1, /* 32902 (207106) */ + 1, /* 32903 (207107) */ + 1, /* 32904 (207108) */ + 1, /* 32905 (207109) */ + 1, /* 32906 (207110) */ + 1, /* 32907 (207111) */ + 1, /* 32908 (207112) */ + 1, /* 32909 (207113) */ + 1, /* 3290A (207114) */ + 1, /* 3290B (207115) */ + 1, /* 3290C (207116) */ + 1, /* 3290D (207117) */ + 1, /* 3290E (207118) */ + 1, /* 3290F (207119) */ + 1, /* 32910 (207120) */ + 1, /* 32911 (207121) */ + 1, /* 32912 (207122) */ + 1, /* 32913 (207123) */ + 1, /* 32914 (207124) */ + 1, /* 32915 (207125) */ + 1, /* 32916 (207126) */ + 1, /* 32917 (207127) */ + 1, /* 32918 (207128) */ + 1, /* 32919 (207129) */ + 1, /* 3291A (207130) */ + 1, /* 3291B (207131) */ + 1, /* 3291C (207132) */ + 1, /* 3291D (207133) */ + 1, /* 3291E (207134) */ + 1, /* 3291F (207135) */ + 1, /* 32920 (207136) */ + 1, /* 32921 (207137) */ + 1, /* 32922 (207138) */ + 1, /* 32923 (207139) */ + 1, /* 32924 (207140) */ + 1, /* 32925 (207141) */ + 1, /* 32926 (207142) */ + 1, /* 32927 (207143) */ + 1, /* 32928 (207144) */ + 1, /* 32929 (207145) */ + 1, /* 3292A (207146) */ + 1, /* 3292B (207147) */ + 1, /* 3292C (207148) */ + 1, /* 3292D (207149) */ + 1, /* 3292E (207150) */ + 1, /* 3292F (207151) */ + 1, /* 32930 (207152) */ + 1, /* 32931 (207153) */ + 1, /* 32932 (207154) */ + 1, /* 32933 (207155) */ + 1, /* 32934 (207156) */ + 1, /* 32935 (207157) */ + 1, /* 32936 (207158) */ + 1, /* 32937 (207159) */ + 1, /* 32938 (207160) */ + 1, /* 32939 (207161) */ + 1, /* 3293A (207162) */ + 1, /* 3293B (207163) */ + 1, /* 3293C (207164) */ + 1, /* 3293D (207165) */ + 1, /* 3293E (207166) */ + 1, /* 3293F (207167) */ + 1, /* 32940 (207168) */ + 1, /* 32941 (207169) */ + 1, /* 32942 (207170) */ + 1, /* 32943 (207171) */ + 1, /* 32944 (207172) */ + 1, /* 32945 (207173) */ + 1, /* 32946 (207174) */ + 1, /* 32947 (207175) */ + 1, /* 32948 (207176) */ + 1, /* 32949 (207177) */ + 1, /* 3294A (207178) */ + 1, /* 3294B (207179) */ + 1, /* 3294C (207180) */ + 1, /* 3294D (207181) */ + 1, /* 3294E (207182) */ + 1, /* 3294F (207183) */ + 1, /* 32950 (207184) */ + 1, /* 32951 (207185) */ + 1, /* 32952 (207186) */ + 1, /* 32953 (207187) */ + 1, /* 32954 (207188) */ + 1, /* 32955 (207189) */ + 1, /* 32956 (207190) */ + 1, /* 32957 (207191) */ + 1, /* 32958 (207192) */ + 1, /* 32959 (207193) */ + 1, /* 3295A (207194) */ + 1, /* 3295B (207195) */ + 1, /* 3295C (207196) */ + 1, /* 3295D (207197) */ + 1, /* 3295E (207198) */ + 1, /* 3295F (207199) */ + 1, /* 32960 (207200) */ + 1, /* 32961 (207201) */ + 1, /* 32962 (207202) */ + 1, /* 32963 (207203) */ + 1, /* 32964 (207204) */ + 1, /* 32965 (207205) */ + 1, /* 32966 (207206) */ + 1, /* 32967 (207207) */ + 1, /* 32968 (207208) */ + 1, /* 32969 (207209) */ + 1, /* 3296A (207210) */ + 1, /* 3296B (207211) */ + 1, /* 3296C (207212) */ + 1, /* 3296D (207213) */ + 1, /* 3296E (207214) */ + 1, /* 3296F (207215) */ + 1, /* 32970 (207216) */ + 1, /* 32971 (207217) */ + 1, /* 32972 (207218) */ + 1, /* 32973 (207219) */ + 1, /* 32974 (207220) */ + 1, /* 32975 (207221) */ + 1, /* 32976 (207222) */ + 1, /* 32977 (207223) */ + 1, /* 32978 (207224) */ + 1, /* 32979 (207225) */ + 1, /* 3297A (207226) */ + 1, /* 3297B (207227) */ + 1, /* 3297C (207228) */ + 1, /* 3297D (207229) */ + 1, /* 3297E (207230) */ + 1, /* 3297F (207231) */ + 1, /* 32980 (207232) */ + 1, /* 32981 (207233) */ + 1, /* 32982 (207234) */ + 1, /* 32983 (207235) */ + 1, /* 32984 (207236) */ + 1, /* 32985 (207237) */ + 1, /* 32986 (207238) */ + 1, /* 32987 (207239) */ + 1, /* 32988 (207240) */ + 1, /* 32989 (207241) */ + 1, /* 3298A (207242) */ + 1, /* 3298B (207243) */ + 1, /* 3298C (207244) */ + 1, /* 3298D (207245) */ + 1, /* 3298E (207246) */ + 1, /* 3298F (207247) */ + 1, /* 32990 (207248) */ + 1, /* 32991 (207249) */ + 1, /* 32992 (207250) */ + 1, /* 32993 (207251) */ + 1, /* 32994 (207252) */ + 1, /* 32995 (207253) */ + 1, /* 32996 (207254) */ + 1, /* 32997 (207255) */ + 1, /* 32998 (207256) */ + 1, /* 32999 (207257) */ + 1, /* 3299A (207258) */ + 1, /* 3299B (207259) */ + 1, /* 3299C (207260) */ + 1, /* 3299D (207261) */ + 1, /* 3299E (207262) */ + 1, /* 3299F (207263) */ + 1, /* 329A0 (207264) */ + 1, /* 329A1 (207265) */ + 1, /* 329A2 (207266) */ + 1, /* 329A3 (207267) */ + 1, /* 329A4 (207268) */ + 1, /* 329A5 (207269) */ + 1, /* 329A6 (207270) */ + 1, /* 329A7 (207271) */ + 1, /* 329A8 (207272) */ + 1, /* 329A9 (207273) */ + 1, /* 329AA (207274) */ + 1, /* 329AB (207275) */ + 1, /* 329AC (207276) */ + 1, /* 329AD (207277) */ + 1, /* 329AE (207278) */ + 1, /* 329AF (207279) */ + 1, /* 329B0 (207280) */ + 1, /* 329B1 (207281) */ + 1, /* 329B2 (207282) */ + 1, /* 329B3 (207283) */ + 1, /* 329B4 (207284) */ + 1, /* 329B5 (207285) */ + 1, /* 329B6 (207286) */ + 1, /* 329B7 (207287) */ + 1, /* 329B8 (207288) */ + 1, /* 329B9 (207289) */ + 1, /* 329BA (207290) */ + 1, /* 329BB (207291) */ + 1, /* 329BC (207292) */ + 1, /* 329BD (207293) */ + 1, /* 329BE (207294) */ + 1, /* 329BF (207295) */ + 1, /* 329C0 (207296) */ + 1, /* 329C1 (207297) */ + 1, /* 329C2 (207298) */ + 1, /* 329C3 (207299) */ + 1, /* 329C4 (207300) */ + 1, /* 329C5 (207301) */ + 1, /* 329C6 (207302) */ + 1, /* 329C7 (207303) */ + 1, /* 329C8 (207304) */ + 1, /* 329C9 (207305) */ + 1, /* 329CA (207306) */ + 1, /* 329CB (207307) */ + 1, /* 329CC (207308) */ + 1, /* 329CD (207309) */ + 1, /* 329CE (207310) */ + 1, /* 329CF (207311) */ + 1, /* 329D0 (207312) */ + 1, /* 329D1 (207313) */ + 1, /* 329D2 (207314) */ + 1, /* 329D3 (207315) */ + 1, /* 329D4 (207316) */ + 1, /* 329D5 (207317) */ + 1, /* 329D6 (207318) */ + 1, /* 329D7 (207319) */ + 1, /* 329D8 (207320) */ + 1, /* 329D9 (207321) */ + 1, /* 329DA (207322) */ + 1, /* 329DB (207323) */ + 1, /* 329DC (207324) */ + 1, /* 329DD (207325) */ + 1, /* 329DE (207326) */ + 1, /* 329DF (207327) */ + 1, /* 329E0 (207328) */ + 1, /* 329E1 (207329) */ + 1, /* 329E2 (207330) */ + 1, /* 329E3 (207331) */ + 1, /* 329E4 (207332) */ + 1, /* 329E5 (207333) */ + 1, /* 329E6 (207334) */ + 1, /* 329E7 (207335) */ + 1, /* 329E8 (207336) */ + 1, /* 329E9 (207337) */ + 1, /* 329EA (207338) */ + 1, /* 329EB (207339) */ + 1, /* 329EC (207340) */ + 1, /* 329ED (207341) */ + 1, /* 329EE (207342) */ + 1, /* 329EF (207343) */ + 1, /* 329F0 (207344) */ + 1, /* 329F1 (207345) */ + 1, /* 329F2 (207346) */ + 1, /* 329F3 (207347) */ + 1, /* 329F4 (207348) */ + 1, /* 329F5 (207349) */ + 1, /* 329F6 (207350) */ + 1, /* 329F7 (207351) */ + 1, /* 329F8 (207352) */ + 1, /* 329F9 (207353) */ + 1, /* 329FA (207354) */ + 1, /* 329FB (207355) */ + 1, /* 329FC (207356) */ + 1, /* 329FD (207357) */ + 1, /* 329FE (207358) */ + 1, /* 329FF (207359) */ + 1, /* 32A00 (207360) */ + 1, /* 32A01 (207361) */ + 1, /* 32A02 (207362) */ + 1, /* 32A03 (207363) */ + 1, /* 32A04 (207364) */ + 1, /* 32A05 (207365) */ + 1, /* 32A06 (207366) */ + 1, /* 32A07 (207367) */ + 1, /* 32A08 (207368) */ + 1, /* 32A09 (207369) */ + 1, /* 32A0A (207370) */ + 1, /* 32A0B (207371) */ + 1, /* 32A0C (207372) */ + 1, /* 32A0D (207373) */ + 1, /* 32A0E (207374) */ + 1, /* 32A0F (207375) */ + 1, /* 32A10 (207376) */ + 1, /* 32A11 (207377) */ + 1, /* 32A12 (207378) */ + 1, /* 32A13 (207379) */ + 1, /* 32A14 (207380) */ + 1, /* 32A15 (207381) */ + 1, /* 32A16 (207382) */ + 1, /* 32A17 (207383) */ + 1, /* 32A18 (207384) */ + 1, /* 32A19 (207385) */ + 1, /* 32A1A (207386) */ + 1, /* 32A1B (207387) */ + 1, /* 32A1C (207388) */ + 1, /* 32A1D (207389) */ + 1, /* 32A1E (207390) */ + 1, /* 32A1F (207391) */ + 1, /* 32A20 (207392) */ + 1, /* 32A21 (207393) */ + 1, /* 32A22 (207394) */ + 1, /* 32A23 (207395) */ + 1, /* 32A24 (207396) */ + 1, /* 32A25 (207397) */ + 1, /* 32A26 (207398) */ + 1, /* 32A27 (207399) */ + 1, /* 32A28 (207400) */ + 1, /* 32A29 (207401) */ + 1, /* 32A2A (207402) */ + 1, /* 32A2B (207403) */ + 1, /* 32A2C (207404) */ + 1, /* 32A2D (207405) */ + 1, /* 32A2E (207406) */ + 1, /* 32A2F (207407) */ + 1, /* 32A30 (207408) */ + 1, /* 32A31 (207409) */ + 1, /* 32A32 (207410) */ + 1, /* 32A33 (207411) */ + 1, /* 32A34 (207412) */ + 1, /* 32A35 (207413) */ + 1, /* 32A36 (207414) */ + 1, /* 32A37 (207415) */ + 1, /* 32A38 (207416) */ + 1, /* 32A39 (207417) */ + 1, /* 32A3A (207418) */ + 1, /* 32A3B (207419) */ + 1, /* 32A3C (207420) */ + 1, /* 32A3D (207421) */ + 1, /* 32A3E (207422) */ + 1, /* 32A3F (207423) */ + 1, /* 32A40 (207424) */ + 1, /* 32A41 (207425) */ + 1, /* 32A42 (207426) */ + 1, /* 32A43 (207427) */ + 1, /* 32A44 (207428) */ + 1, /* 32A45 (207429) */ + 1, /* 32A46 (207430) */ + 1, /* 32A47 (207431) */ + 1, /* 32A48 (207432) */ + 1, /* 32A49 (207433) */ + 1, /* 32A4A (207434) */ + 1, /* 32A4B (207435) */ + 1, /* 32A4C (207436) */ + 1, /* 32A4D (207437) */ + 1, /* 32A4E (207438) */ + 1, /* 32A4F (207439) */ + 1, /* 32A50 (207440) */ + 1, /* 32A51 (207441) */ + 1, /* 32A52 (207442) */ + 1, /* 32A53 (207443) */ + 1, /* 32A54 (207444) */ + 1, /* 32A55 (207445) */ + 1, /* 32A56 (207446) */ + 1, /* 32A57 (207447) */ + 1, /* 32A58 (207448) */ + 1, /* 32A59 (207449) */ + 1, /* 32A5A (207450) */ + 1, /* 32A5B (207451) */ + 1, /* 32A5C (207452) */ + 1, /* 32A5D (207453) */ + 1, /* 32A5E (207454) */ + 1, /* 32A5F (207455) */ + 1, /* 32A60 (207456) */ + 1, /* 32A61 (207457) */ + 1, /* 32A62 (207458) */ + 1, /* 32A63 (207459) */ + 1, /* 32A64 (207460) */ + 1, /* 32A65 (207461) */ + 1, /* 32A66 (207462) */ + 1, /* 32A67 (207463) */ + 1, /* 32A68 (207464) */ + 1, /* 32A69 (207465) */ + 1, /* 32A6A (207466) */ + 1, /* 32A6B (207467) */ + 1, /* 32A6C (207468) */ + 1, /* 32A6D (207469) */ + 1, /* 32A6E (207470) */ + 1, /* 32A6F (207471) */ + 1, /* 32A70 (207472) */ + 1, /* 32A71 (207473) */ + 1, /* 32A72 (207474) */ + 1, /* 32A73 (207475) */ + 1, /* 32A74 (207476) */ + 1, /* 32A75 (207477) */ + 1, /* 32A76 (207478) */ + 1, /* 32A77 (207479) */ + 1, /* 32A78 (207480) */ + 1, /* 32A79 (207481) */ + 1, /* 32A7A (207482) */ + 1, /* 32A7B (207483) */ + 1, /* 32A7C (207484) */ + 1, /* 32A7D (207485) */ + 1, /* 32A7E (207486) */ + 1, /* 32A7F (207487) */ + 1, /* 32A80 (207488) */ + 1, /* 32A81 (207489) */ + 1, /* 32A82 (207490) */ + 1, /* 32A83 (207491) */ + 1, /* 32A84 (207492) */ + 1, /* 32A85 (207493) */ + 1, /* 32A86 (207494) */ + 1, /* 32A87 (207495) */ + 1, /* 32A88 (207496) */ + 1, /* 32A89 (207497) */ + 1, /* 32A8A (207498) */ + 1, /* 32A8B (207499) */ + 1, /* 32A8C (207500) */ + 1, /* 32A8D (207501) */ + 1, /* 32A8E (207502) */ + 1, /* 32A8F (207503) */ + 1, /* 32A90 (207504) */ + 1, /* 32A91 (207505) */ + 1, /* 32A92 (207506) */ + 1, /* 32A93 (207507) */ + 1, /* 32A94 (207508) */ + 1, /* 32A95 (207509) */ + 1, /* 32A96 (207510) */ + 1, /* 32A97 (207511) */ + 1, /* 32A98 (207512) */ + 1, /* 32A99 (207513) */ + 1, /* 32A9A (207514) */ + 1, /* 32A9B (207515) */ + 1, /* 32A9C (207516) */ + 1, /* 32A9D (207517) */ + 1, /* 32A9E (207518) */ + 1, /* 32A9F (207519) */ + 1, /* 32AA0 (207520) */ + 1, /* 32AA1 (207521) */ + 1, /* 32AA2 (207522) */ + 1, /* 32AA3 (207523) */ + 1, /* 32AA4 (207524) */ + 1, /* 32AA5 (207525) */ + 1, /* 32AA6 (207526) */ + 1, /* 32AA7 (207527) */ + 1, /* 32AA8 (207528) */ + 1, /* 32AA9 (207529) */ + 1, /* 32AAA (207530) */ + 1, /* 32AAB (207531) */ + 1, /* 32AAC (207532) */ + 1, /* 32AAD (207533) */ + 1, /* 32AAE (207534) */ + 1, /* 32AAF (207535) */ + 1, /* 32AB0 (207536) */ + 1, /* 32AB1 (207537) */ + 1, /* 32AB2 (207538) */ + 1, /* 32AB3 (207539) */ + 1, /* 32AB4 (207540) */ + 1, /* 32AB5 (207541) */ + 1, /* 32AB6 (207542) */ + 1, /* 32AB7 (207543) */ + 1, /* 32AB8 (207544) */ + 1, /* 32AB9 (207545) */ + 1, /* 32ABA (207546) */ + 1, /* 32ABB (207547) */ + 1, /* 32ABC (207548) */ + 1, /* 32ABD (207549) */ + 1, /* 32ABE (207550) */ + 1, /* 32ABF (207551) */ + 1, /* 32AC0 (207552) */ + 1, /* 32AC1 (207553) */ + 1, /* 32AC2 (207554) */ + 1, /* 32AC3 (207555) */ + 1, /* 32AC4 (207556) */ + 1, /* 32AC5 (207557) */ + 1, /* 32AC6 (207558) */ + 1, /* 32AC7 (207559) */ + 1, /* 32AC8 (207560) */ + 1, /* 32AC9 (207561) */ + 1, /* 32ACA (207562) */ + 1, /* 32ACB (207563) */ + 1, /* 32ACC (207564) */ + 1, /* 32ACD (207565) */ + 1, /* 32ACE (207566) */ + 1, /* 32ACF (207567) */ + 1, /* 32AD0 (207568) */ + 1, /* 32AD1 (207569) */ + 1, /* 32AD2 (207570) */ + 1, /* 32AD3 (207571) */ + 1, /* 32AD4 (207572) */ + 1, /* 32AD5 (207573) */ + 1, /* 32AD6 (207574) */ + 1, /* 32AD7 (207575) */ + 1, /* 32AD8 (207576) */ + 1, /* 32AD9 (207577) */ + 1, /* 32ADA (207578) */ + 1, /* 32ADB (207579) */ + 1, /* 32ADC (207580) */ + 1, /* 32ADD (207581) */ + 1, /* 32ADE (207582) */ + 1, /* 32ADF (207583) */ + 1, /* 32AE0 (207584) */ + 1, /* 32AE1 (207585) */ + 1, /* 32AE2 (207586) */ + 1, /* 32AE3 (207587) */ + 1, /* 32AE4 (207588) */ + 1, /* 32AE5 (207589) */ + 1, /* 32AE6 (207590) */ + 1, /* 32AE7 (207591) */ + 1, /* 32AE8 (207592) */ + 1, /* 32AE9 (207593) */ + 1, /* 32AEA (207594) */ + 1, /* 32AEB (207595) */ + 1, /* 32AEC (207596) */ + 1, /* 32AED (207597) */ + 1, /* 32AEE (207598) */ + 1, /* 32AEF (207599) */ + 1, /* 32AF0 (207600) */ + 1, /* 32AF1 (207601) */ + 1, /* 32AF2 (207602) */ + 1, /* 32AF3 (207603) */ + 1, /* 32AF4 (207604) */ + 1, /* 32AF5 (207605) */ + 1, /* 32AF6 (207606) */ + 1, /* 32AF7 (207607) */ + 1, /* 32AF8 (207608) */ + 1, /* 32AF9 (207609) */ + 1, /* 32AFA (207610) */ + 1, /* 32AFB (207611) */ + 1, /* 32AFC (207612) */ + 1, /* 32AFD (207613) */ + 1, /* 32AFE (207614) */ + 1, /* 32AFF (207615) */ + 1, /* 32B00 (207616) */ + 1, /* 32B01 (207617) */ + 1, /* 32B02 (207618) */ + 1, /* 32B03 (207619) */ + 1, /* 32B04 (207620) */ + 1, /* 32B05 (207621) */ + 1, /* 32B06 (207622) */ + 1, /* 32B07 (207623) */ + 1, /* 32B08 (207624) */ + 1, /* 32B09 (207625) */ + 1, /* 32B0A (207626) */ + 1, /* 32B0B (207627) */ + 1, /* 32B0C (207628) */ + 1, /* 32B0D (207629) */ + 1, /* 32B0E (207630) */ + 1, /* 32B0F (207631) */ + 1, /* 32B10 (207632) */ + 1, /* 32B11 (207633) */ + 1, /* 32B12 (207634) */ + 1, /* 32B13 (207635) */ + 1, /* 32B14 (207636) */ + 1, /* 32B15 (207637) */ + 1, /* 32B16 (207638) */ + 1, /* 32B17 (207639) */ + 1, /* 32B18 (207640) */ + 1, /* 32B19 (207641) */ + 1, /* 32B1A (207642) */ + 1, /* 32B1B (207643) */ + 1, /* 32B1C (207644) */ + 1, /* 32B1D (207645) */ + 1, /* 32B1E (207646) */ + 1, /* 32B1F (207647) */ + 1, /* 32B20 (207648) */ + 1, /* 32B21 (207649) */ + 1, /* 32B22 (207650) */ + 1, /* 32B23 (207651) */ + 1, /* 32B24 (207652) */ + 1, /* 32B25 (207653) */ + 1, /* 32B26 (207654) */ + 1, /* 32B27 (207655) */ + 1, /* 32B28 (207656) */ + 1, /* 32B29 (207657) */ + 1, /* 32B2A (207658) */ + 1, /* 32B2B (207659) */ + 1, /* 32B2C (207660) */ + 1, /* 32B2D (207661) */ + 1, /* 32B2E (207662) */ + 1, /* 32B2F (207663) */ + 1, /* 32B30 (207664) */ + 1, /* 32B31 (207665) */ + 1, /* 32B32 (207666) */ + 1, /* 32B33 (207667) */ + 1, /* 32B34 (207668) */ + 1, /* 32B35 (207669) */ + 1, /* 32B36 (207670) */ + 1, /* 32B37 (207671) */ + 1, /* 32B38 (207672) */ + 1, /* 32B39 (207673) */ + 1, /* 32B3A (207674) */ + 1, /* 32B3B (207675) */ + 1, /* 32B3C (207676) */ + 1, /* 32B3D (207677) */ + 1, /* 32B3E (207678) */ + 1, /* 32B3F (207679) */ + 1, /* 32B40 (207680) */ + 1, /* 32B41 (207681) */ + 1, /* 32B42 (207682) */ + 1, /* 32B43 (207683) */ + 1, /* 32B44 (207684) */ + 1, /* 32B45 (207685) */ + 1, /* 32B46 (207686) */ + 1, /* 32B47 (207687) */ + 1, /* 32B48 (207688) */ + 1, /* 32B49 (207689) */ + 1, /* 32B4A (207690) */ + 1, /* 32B4B (207691) */ + 1, /* 32B4C (207692) */ + 1, /* 32B4D (207693) */ + 1, /* 32B4E (207694) */ + 1, /* 32B4F (207695) */ + 1, /* 32B50 (207696) */ + 1, /* 32B51 (207697) */ + 1, /* 32B52 (207698) */ + 1, /* 32B53 (207699) */ + 1, /* 32B54 (207700) */ + 1, /* 32B55 (207701) */ + 1, /* 32B56 (207702) */ + 1, /* 32B57 (207703) */ + 1, /* 32B58 (207704) */ + 1, /* 32B59 (207705) */ + 1, /* 32B5A (207706) */ + 1, /* 32B5B (207707) */ + 1, /* 32B5C (207708) */ + 1, /* 32B5D (207709) */ + 1, /* 32B5E (207710) */ + 1, /* 32B5F (207711) */ + 1, /* 32B60 (207712) */ + 1, /* 32B61 (207713) */ + 1, /* 32B62 (207714) */ + 1, /* 32B63 (207715) */ + 1, /* 32B64 (207716) */ + 1, /* 32B65 (207717) */ + 1, /* 32B66 (207718) */ + 1, /* 32B67 (207719) */ + 1, /* 32B68 (207720) */ + 1, /* 32B69 (207721) */ + 1, /* 32B6A (207722) */ + 1, /* 32B6B (207723) */ + 1, /* 32B6C (207724) */ + 1, /* 32B6D (207725) */ + 1, /* 32B6E (207726) */ + 1, /* 32B6F (207727) */ + 1, /* 32B70 (207728) */ + 1, /* 32B71 (207729) */ + 1, /* 32B72 (207730) */ + 1, /* 32B73 (207731) */ + 1, /* 32B74 (207732) */ + 1, /* 32B75 (207733) */ + 1, /* 32B76 (207734) */ + 1, /* 32B77 (207735) */ + 1, /* 32B78 (207736) */ + 1, /* 32B79 (207737) */ + 1, /* 32B7A (207738) */ + 1, /* 32B7B (207739) */ + 1, /* 32B7C (207740) */ + 1, /* 32B7D (207741) */ + 1, /* 32B7E (207742) */ + 1, /* 32B7F (207743) */ + 1, /* 32B80 (207744) */ + 1, /* 32B81 (207745) */ + 1, /* 32B82 (207746) */ + 1, /* 32B83 (207747) */ + 1, /* 32B84 (207748) */ + 1, /* 32B85 (207749) */ + 1, /* 32B86 (207750) */ + 1, /* 32B87 (207751) */ + 1, /* 32B88 (207752) */ + 1, /* 32B89 (207753) */ + 1, /* 32B8A (207754) */ + 1, /* 32B8B (207755) */ + 1, /* 32B8C (207756) */ + 1, /* 32B8D (207757) */ + 1, /* 32B8E (207758) */ + 1, /* 32B8F (207759) */ + 1, /* 32B90 (207760) */ + 1, /* 32B91 (207761) */ + 1, /* 32B92 (207762) */ + 1, /* 32B93 (207763) */ + 1, /* 32B94 (207764) */ + 1, /* 32B95 (207765) */ + 1, /* 32B96 (207766) */ + 1, /* 32B97 (207767) */ + 1, /* 32B98 (207768) */ + 1, /* 32B99 (207769) */ + 1, /* 32B9A (207770) */ + 1, /* 32B9B (207771) */ + 1, /* 32B9C (207772) */ + 1, /* 32B9D (207773) */ + 1, /* 32B9E (207774) */ + 1, /* 32B9F (207775) */ + 1, /* 32BA0 (207776) */ + 1, /* 32BA1 (207777) */ + 1, /* 32BA2 (207778) */ + 1, /* 32BA3 (207779) */ + 1, /* 32BA4 (207780) */ + 1, /* 32BA5 (207781) */ + 1, /* 32BA6 (207782) */ + 1, /* 32BA7 (207783) */ + 1, /* 32BA8 (207784) */ + 1, /* 32BA9 (207785) */ + 1, /* 32BAA (207786) */ + 1, /* 32BAB (207787) */ + 1, /* 32BAC (207788) */ + 1, /* 32BAD (207789) */ + 1, /* 32BAE (207790) */ + 1, /* 32BAF (207791) */ + 1, /* 32BB0 (207792) */ + 1, /* 32BB1 (207793) */ + 1, /* 32BB2 (207794) */ + 1, /* 32BB3 (207795) */ + 1, /* 32BB4 (207796) */ + 1, /* 32BB5 (207797) */ + 1, /* 32BB6 (207798) */ + 1, /* 32BB7 (207799) */ + 1, /* 32BB8 (207800) */ + 1, /* 32BB9 (207801) */ + 1, /* 32BBA (207802) */ + 1, /* 32BBB (207803) */ + 1, /* 32BBC (207804) */ + 1, /* 32BBD (207805) */ + 1, /* 32BBE (207806) */ + 1, /* 32BBF (207807) */ + 1, /* 32BC0 (207808) */ + 1, /* 32BC1 (207809) */ + 1, /* 32BC2 (207810) */ + 1, /* 32BC3 (207811) */ + 1, /* 32BC4 (207812) */ + 1, /* 32BC5 (207813) */ + 1, /* 32BC6 (207814) */ + 1, /* 32BC7 (207815) */ + 1, /* 32BC8 (207816) */ + 1, /* 32BC9 (207817) */ + 1, /* 32BCA (207818) */ + 1, /* 32BCB (207819) */ + 1, /* 32BCC (207820) */ + 1, /* 32BCD (207821) */ + 1, /* 32BCE (207822) */ + 1, /* 32BCF (207823) */ + 1, /* 32BD0 (207824) */ + 1, /* 32BD1 (207825) */ + 1, /* 32BD2 (207826) */ + 1, /* 32BD3 (207827) */ + 1, /* 32BD4 (207828) */ + 1, /* 32BD5 (207829) */ + 1, /* 32BD6 (207830) */ + 1, /* 32BD7 (207831) */ + 1, /* 32BD8 (207832) */ + 1, /* 32BD9 (207833) */ + 1, /* 32BDA (207834) */ + 1, /* 32BDB (207835) */ + 1, /* 32BDC (207836) */ + 1, /* 32BDD (207837) */ + 1, /* 32BDE (207838) */ + 1, /* 32BDF (207839) */ + 1, /* 32BE0 (207840) */ + 1, /* 32BE1 (207841) */ + 1, /* 32BE2 (207842) */ + 1, /* 32BE3 (207843) */ + 1, /* 32BE4 (207844) */ + 1, /* 32BE5 (207845) */ + 1, /* 32BE6 (207846) */ + 1, /* 32BE7 (207847) */ + 1, /* 32BE8 (207848) */ + 1, /* 32BE9 (207849) */ + 1, /* 32BEA (207850) */ + 1, /* 32BEB (207851) */ + 1, /* 32BEC (207852) */ + 1, /* 32BED (207853) */ + 1, /* 32BEE (207854) */ + 1, /* 32BEF (207855) */ + 1, /* 32BF0 (207856) */ + 1, /* 32BF1 (207857) */ + 1, /* 32BF2 (207858) */ + 1, /* 32BF3 (207859) */ + 1, /* 32BF4 (207860) */ + 1, /* 32BF5 (207861) */ + 1, /* 32BF6 (207862) */ + 1, /* 32BF7 (207863) */ + 1, /* 32BF8 (207864) */ + 1, /* 32BF9 (207865) */ + 1, /* 32BFA (207866) */ + 1, /* 32BFB (207867) */ + 1, /* 32BFC (207868) */ + 1, /* 32BFD (207869) */ + 1, /* 32BFE (207870) */ + 1, /* 32BFF (207871) */ + 1, /* 32C00 (207872) */ + 1, /* 32C01 (207873) */ + 1, /* 32C02 (207874) */ + 1, /* 32C03 (207875) */ + 1, /* 32C04 (207876) */ + 1, /* 32C05 (207877) */ + 1, /* 32C06 (207878) */ + 1, /* 32C07 (207879) */ + 1, /* 32C08 (207880) */ + 1, /* 32C09 (207881) */ + 1, /* 32C0A (207882) */ + 1, /* 32C0B (207883) */ + 1, /* 32C0C (207884) */ + 1, /* 32C0D (207885) */ + 1, /* 32C0E (207886) */ + 1, /* 32C0F (207887) */ + 1, /* 32C10 (207888) */ + 1, /* 32C11 (207889) */ + 1, /* 32C12 (207890) */ + 1, /* 32C13 (207891) */ + 1, /* 32C14 (207892) */ + 1, /* 32C15 (207893) */ + 1, /* 32C16 (207894) */ + 1, /* 32C17 (207895) */ + 1, /* 32C18 (207896) */ + 1, /* 32C19 (207897) */ + 1, /* 32C1A (207898) */ + 1, /* 32C1B (207899) */ + 1, /* 32C1C (207900) */ + 1, /* 32C1D (207901) */ + 1, /* 32C1E (207902) */ + 1, /* 32C1F (207903) */ + 1, /* 32C20 (207904) */ + 1, /* 32C21 (207905) */ + 1, /* 32C22 (207906) */ + 1, /* 32C23 (207907) */ + 1, /* 32C24 (207908) */ + 1, /* 32C25 (207909) */ + 1, /* 32C26 (207910) */ + 1, /* 32C27 (207911) */ + 1, /* 32C28 (207912) */ + 1, /* 32C29 (207913) */ + 1, /* 32C2A (207914) */ + 1, /* 32C2B (207915) */ + 1, /* 32C2C (207916) */ + 1, /* 32C2D (207917) */ + 1, /* 32C2E (207918) */ + 1, /* 32C2F (207919) */ + 1, /* 32C30 (207920) */ + 1, /* 32C31 (207921) */ + 1, /* 32C32 (207922) */ + 1, /* 32C33 (207923) */ + 1, /* 32C34 (207924) */ + 1, /* 32C35 (207925) */ + 1, /* 32C36 (207926) */ + 1, /* 32C37 (207927) */ + 1, /* 32C38 (207928) */ + 1, /* 32C39 (207929) */ + 1, /* 32C3A (207930) */ + 1, /* 32C3B (207931) */ + 1, /* 32C3C (207932) */ + 1, /* 32C3D (207933) */ + 1, /* 32C3E (207934) */ + 1, /* 32C3F (207935) */ + 1, /* 32C40 (207936) */ + 1, /* 32C41 (207937) */ + 1, /* 32C42 (207938) */ + 1, /* 32C43 (207939) */ + 1, /* 32C44 (207940) */ + 1, /* 32C45 (207941) */ + 1, /* 32C46 (207942) */ + 1, /* 32C47 (207943) */ + 1, /* 32C48 (207944) */ + 1, /* 32C49 (207945) */ + 1, /* 32C4A (207946) */ + 1, /* 32C4B (207947) */ + 1, /* 32C4C (207948) */ + 1, /* 32C4D (207949) */ + 1, /* 32C4E (207950) */ + 1, /* 32C4F (207951) */ + 1, /* 32C50 (207952) */ + 1, /* 32C51 (207953) */ + 1, /* 32C52 (207954) */ + 1, /* 32C53 (207955) */ + 1, /* 32C54 (207956) */ + 1, /* 32C55 (207957) */ + 1, /* 32C56 (207958) */ + 1, /* 32C57 (207959) */ + 1, /* 32C58 (207960) */ + 1, /* 32C59 (207961) */ + 1, /* 32C5A (207962) */ + 1, /* 32C5B (207963) */ + 1, /* 32C5C (207964) */ + 1, /* 32C5D (207965) */ + 1, /* 32C5E (207966) */ + 1, /* 32C5F (207967) */ + 1, /* 32C60 (207968) */ + 1, /* 32C61 (207969) */ + 1, /* 32C62 (207970) */ + 1, /* 32C63 (207971) */ + 1, /* 32C64 (207972) */ + 1, /* 32C65 (207973) */ + 1, /* 32C66 (207974) */ + 1, /* 32C67 (207975) */ + 1, /* 32C68 (207976) */ + 1, /* 32C69 (207977) */ + 1, /* 32C6A (207978) */ + 1, /* 32C6B (207979) */ + 1, /* 32C6C (207980) */ + 1, /* 32C6D (207981) */ + 1, /* 32C6E (207982) */ + 1, /* 32C6F (207983) */ + 1, /* 32C70 (207984) */ + 1, /* 32C71 (207985) */ + 1, /* 32C72 (207986) */ + 1, /* 32C73 (207987) */ + 1, /* 32C74 (207988) */ + 1, /* 32C75 (207989) */ + 1, /* 32C76 (207990) */ + 1, /* 32C77 (207991) */ + 1, /* 32C78 (207992) */ + 1, /* 32C79 (207993) */ + 1, /* 32C7A (207994) */ + 1, /* 32C7B (207995) */ + 1, /* 32C7C (207996) */ + 1, /* 32C7D (207997) */ + 1, /* 32C7E (207998) */ + 1, /* 32C7F (207999) */ + 1, /* 32C80 (208000) */ + 1, /* 32C81 (208001) */ + 1, /* 32C82 (208002) */ + 1, /* 32C83 (208003) */ + 1, /* 32C84 (208004) */ + 1, /* 32C85 (208005) */ + 1, /* 32C86 (208006) */ + 1, /* 32C87 (208007) */ + 1, /* 32C88 (208008) */ + 1, /* 32C89 (208009) */ + 1, /* 32C8A (208010) */ + 1, /* 32C8B (208011) */ + 1, /* 32C8C (208012) */ + 1, /* 32C8D (208013) */ + 1, /* 32C8E (208014) */ + 1, /* 32C8F (208015) */ + 1, /* 32C90 (208016) */ + 1, /* 32C91 (208017) */ + 1, /* 32C92 (208018) */ + 1, /* 32C93 (208019) */ + 1, /* 32C94 (208020) */ + 1, /* 32C95 (208021) */ + 1, /* 32C96 (208022) */ + 1, /* 32C97 (208023) */ + 1, /* 32C98 (208024) */ + 1, /* 32C99 (208025) */ + 1, /* 32C9A (208026) */ + 1, /* 32C9B (208027) */ + 1, /* 32C9C (208028) */ + 1, /* 32C9D (208029) */ + 1, /* 32C9E (208030) */ + 1, /* 32C9F (208031) */ + 1, /* 32CA0 (208032) */ + 1, /* 32CA1 (208033) */ + 1, /* 32CA2 (208034) */ + 1, /* 32CA3 (208035) */ + 1, /* 32CA4 (208036) */ + 1, /* 32CA5 (208037) */ + 1, /* 32CA6 (208038) */ + 1, /* 32CA7 (208039) */ + 1, /* 32CA8 (208040) */ + 1, /* 32CA9 (208041) */ + 1, /* 32CAA (208042) */ + 1, /* 32CAB (208043) */ + 1, /* 32CAC (208044) */ + 1, /* 32CAD (208045) */ + 1, /* 32CAE (208046) */ + 1, /* 32CAF (208047) */ + 1, /* 32CB0 (208048) */ + 1, /* 32CB1 (208049) */ + 1, /* 32CB2 (208050) */ + 1, /* 32CB3 (208051) */ + 1, /* 32CB4 (208052) */ + 1, /* 32CB5 (208053) */ + 1, /* 32CB6 (208054) */ + 1, /* 32CB7 (208055) */ + 1, /* 32CB8 (208056) */ + 1, /* 32CB9 (208057) */ + 1, /* 32CBA (208058) */ + 1, /* 32CBB (208059) */ + 1, /* 32CBC (208060) */ + 1, /* 32CBD (208061) */ + 1, /* 32CBE (208062) */ + 1, /* 32CBF (208063) */ + 1, /* 32CC0 (208064) */ + 1, /* 32CC1 (208065) */ + 1, /* 32CC2 (208066) */ + 1, /* 32CC3 (208067) */ + 1, /* 32CC4 (208068) */ + 1, /* 32CC5 (208069) */ + 1, /* 32CC6 (208070) */ + 1, /* 32CC7 (208071) */ + 1, /* 32CC8 (208072) */ + 1, /* 32CC9 (208073) */ + 1, /* 32CCA (208074) */ + 1, /* 32CCB (208075) */ + 1, /* 32CCC (208076) */ + 1, /* 32CCD (208077) */ + 1, /* 32CCE (208078) */ + 1, /* 32CCF (208079) */ + 1, /* 32CD0 (208080) */ + 1, /* 32CD1 (208081) */ + 1, /* 32CD2 (208082) */ + 1, /* 32CD3 (208083) */ + 1, /* 32CD4 (208084) */ + 1, /* 32CD5 (208085) */ + 1, /* 32CD6 (208086) */ + 1, /* 32CD7 (208087) */ + 1, /* 32CD8 (208088) */ + 1, /* 32CD9 (208089) */ + 1, /* 32CDA (208090) */ + 1, /* 32CDB (208091) */ + 1, /* 32CDC (208092) */ + 1, /* 32CDD (208093) */ + 1, /* 32CDE (208094) */ + 1, /* 32CDF (208095) */ + 1, /* 32CE0 (208096) */ + 1, /* 32CE1 (208097) */ + 1, /* 32CE2 (208098) */ + 1, /* 32CE3 (208099) */ + 1, /* 32CE4 (208100) */ + 1, /* 32CE5 (208101) */ + 1, /* 32CE6 (208102) */ + 1, /* 32CE7 (208103) */ + 1, /* 32CE8 (208104) */ + 1, /* 32CE9 (208105) */ + 1, /* 32CEA (208106) */ + 1, /* 32CEB (208107) */ + 1, /* 32CEC (208108) */ + 1, /* 32CED (208109) */ + 1, /* 32CEE (208110) */ + 1, /* 32CEF (208111) */ + 1, /* 32CF0 (208112) */ + 1, /* 32CF1 (208113) */ + 1, /* 32CF2 (208114) */ + 1, /* 32CF3 (208115) */ + 1, /* 32CF4 (208116) */ + 1, /* 32CF5 (208117) */ + 1, /* 32CF6 (208118) */ + 1, /* 32CF7 (208119) */ + 1, /* 32CF8 (208120) */ + 1, /* 32CF9 (208121) */ + 1, /* 32CFA (208122) */ + 1, /* 32CFB (208123) */ + 1, /* 32CFC (208124) */ + 1, /* 32CFD (208125) */ + 1, /* 32CFE (208126) */ + 1, /* 32CFF (208127) */ + 1, /* 32D00 (208128) */ + 1, /* 32D01 (208129) */ + 1, /* 32D02 (208130) */ + 1, /* 32D03 (208131) */ + 1, /* 32D04 (208132) */ + 1, /* 32D05 (208133) */ + 1, /* 32D06 (208134) */ + 1, /* 32D07 (208135) */ + 1, /* 32D08 (208136) */ + 1, /* 32D09 (208137) */ + 1, /* 32D0A (208138) */ + 1, /* 32D0B (208139) */ + 1, /* 32D0C (208140) */ + 1, /* 32D0D (208141) */ + 1, /* 32D0E (208142) */ + 1, /* 32D0F (208143) */ + 1, /* 32D10 (208144) */ + 1, /* 32D11 (208145) */ + 1, /* 32D12 (208146) */ + 1, /* 32D13 (208147) */ + 1, /* 32D14 (208148) */ + 1, /* 32D15 (208149) */ + 1, /* 32D16 (208150) */ + 1, /* 32D17 (208151) */ + 1, /* 32D18 (208152) */ + 1, /* 32D19 (208153) */ + 1, /* 32D1A (208154) */ + 1, /* 32D1B (208155) */ + 1, /* 32D1C (208156) */ + 1, /* 32D1D (208157) */ + 1, /* 32D1E (208158) */ + 1, /* 32D1F (208159) */ + 1, /* 32D20 (208160) */ + 1, /* 32D21 (208161) */ + 1, /* 32D22 (208162) */ + 1, /* 32D23 (208163) */ + 1, /* 32D24 (208164) */ + 1, /* 32D25 (208165) */ + 1, /* 32D26 (208166) */ + 1, /* 32D27 (208167) */ + 1, /* 32D28 (208168) */ + 1, /* 32D29 (208169) */ + 1, /* 32D2A (208170) */ + 1, /* 32D2B (208171) */ + 1, /* 32D2C (208172) */ + 1, /* 32D2D (208173) */ + 1, /* 32D2E (208174) */ + 1, /* 32D2F (208175) */ + 1, /* 32D30 (208176) */ + 1, /* 32D31 (208177) */ + 1, /* 32D32 (208178) */ + 1, /* 32D33 (208179) */ + 1, /* 32D34 (208180) */ + 1, /* 32D35 (208181) */ + 1, /* 32D36 (208182) */ + 1, /* 32D37 (208183) */ + 1, /* 32D38 (208184) */ + 1, /* 32D39 (208185) */ + 1, /* 32D3A (208186) */ + 1, /* 32D3B (208187) */ + 1, /* 32D3C (208188) */ + 1, /* 32D3D (208189) */ + 1, /* 32D3E (208190) */ + 1, /* 32D3F (208191) */ + 1, /* 32D40 (208192) */ + 1, /* 32D41 (208193) */ + 1, /* 32D42 (208194) */ + 1, /* 32D43 (208195) */ + 1, /* 32D44 (208196) */ + 1, /* 32D45 (208197) */ + 1, /* 32D46 (208198) */ + 1, /* 32D47 (208199) */ + 1, /* 32D48 (208200) */ + 1, /* 32D49 (208201) */ + 1, /* 32D4A (208202) */ + 1, /* 32D4B (208203) */ + 1, /* 32D4C (208204) */ + 1, /* 32D4D (208205) */ + 1, /* 32D4E (208206) */ + 1, /* 32D4F (208207) */ + 1, /* 32D50 (208208) */ + 1, /* 32D51 (208209) */ + 1, /* 32D52 (208210) */ + 1, /* 32D53 (208211) */ + 1, /* 32D54 (208212) */ + 1, /* 32D55 (208213) */ + 1, /* 32D56 (208214) */ + 1, /* 32D57 (208215) */ + 1, /* 32D58 (208216) */ + 1, /* 32D59 (208217) */ + 1, /* 32D5A (208218) */ + 1, /* 32D5B (208219) */ + 1, /* 32D5C (208220) */ + 1, /* 32D5D (208221) */ + 1, /* 32D5E (208222) */ + 1, /* 32D5F (208223) */ + 1, /* 32D60 (208224) */ + 1, /* 32D61 (208225) */ + 1, /* 32D62 (208226) */ + 1, /* 32D63 (208227) */ + 1, /* 32D64 (208228) */ + 1, /* 32D65 (208229) */ + 1, /* 32D66 (208230) */ + 1, /* 32D67 (208231) */ + 1, /* 32D68 (208232) */ + 1, /* 32D69 (208233) */ + 1, /* 32D6A (208234) */ + 1, /* 32D6B (208235) */ + 1, /* 32D6C (208236) */ + 1, /* 32D6D (208237) */ + 1, /* 32D6E (208238) */ + 1, /* 32D6F (208239) */ + 1, /* 32D70 (208240) */ + 1, /* 32D71 (208241) */ + 1, /* 32D72 (208242) */ + 1, /* 32D73 (208243) */ + 1, /* 32D74 (208244) */ + 1, /* 32D75 (208245) */ + 1, /* 32D76 (208246) */ + 1, /* 32D77 (208247) */ + 1, /* 32D78 (208248) */ + 1, /* 32D79 (208249) */ + 1, /* 32D7A (208250) */ + 1, /* 32D7B (208251) */ + 1, /* 32D7C (208252) */ + 1, /* 32D7D (208253) */ + 1, /* 32D7E (208254) */ + 1, /* 32D7F (208255) */ + 1, /* 32D80 (208256) */ + 1, /* 32D81 (208257) */ + 1, /* 32D82 (208258) */ + 1, /* 32D83 (208259) */ + 1, /* 32D84 (208260) */ + 1, /* 32D85 (208261) */ + 1, /* 32D86 (208262) */ + 1, /* 32D87 (208263) */ + 1, /* 32D88 (208264) */ + 1, /* 32D89 (208265) */ + 1, /* 32D8A (208266) */ + 1, /* 32D8B (208267) */ + 1, /* 32D8C (208268) */ + 1, /* 32D8D (208269) */ + 1, /* 32D8E (208270) */ + 1, /* 32D8F (208271) */ + 1, /* 32D90 (208272) */ + 1, /* 32D91 (208273) */ + 1, /* 32D92 (208274) */ + 1, /* 32D93 (208275) */ + 1, /* 32D94 (208276) */ + 1, /* 32D95 (208277) */ + 1, /* 32D96 (208278) */ + 1, /* 32D97 (208279) */ + 1, /* 32D98 (208280) */ + 1, /* 32D99 (208281) */ + 1, /* 32D9A (208282) */ + 1, /* 32D9B (208283) */ + 1, /* 32D9C (208284) */ + 1, /* 32D9D (208285) */ + 1, /* 32D9E (208286) */ + 1, /* 32D9F (208287) */ + 1, /* 32DA0 (208288) */ + 1, /* 32DA1 (208289) */ + 1, /* 32DA2 (208290) */ + 1, /* 32DA3 (208291) */ + 1, /* 32DA4 (208292) */ + 1, /* 32DA5 (208293) */ + 1, /* 32DA6 (208294) */ + 1, /* 32DA7 (208295) */ + 1, /* 32DA8 (208296) */ + 1, /* 32DA9 (208297) */ + 1, /* 32DAA (208298) */ + 1, /* 32DAB (208299) */ + 1, /* 32DAC (208300) */ + 1, /* 32DAD (208301) */ + 1, /* 32DAE (208302) */ + 1, /* 32DAF (208303) */ + 1, /* 32DB0 (208304) */ + 1, /* 32DB1 (208305) */ + 1, /* 32DB2 (208306) */ + 1, /* 32DB3 (208307) */ + 1, /* 32DB4 (208308) */ + 1, /* 32DB5 (208309) */ + 1, /* 32DB6 (208310) */ + 1, /* 32DB7 (208311) */ + 1, /* 32DB8 (208312) */ + 1, /* 32DB9 (208313) */ + 1, /* 32DBA (208314) */ + 1, /* 32DBB (208315) */ + 1, /* 32DBC (208316) */ + 1, /* 32DBD (208317) */ + 1, /* 32DBE (208318) */ + 1, /* 32DBF (208319) */ + 1, /* 32DC0 (208320) */ + 1, /* 32DC1 (208321) */ + 1, /* 32DC2 (208322) */ + 1, /* 32DC3 (208323) */ + 1, /* 32DC4 (208324) */ + 1, /* 32DC5 (208325) */ + 1, /* 32DC6 (208326) */ + 1, /* 32DC7 (208327) */ + 1, /* 32DC8 (208328) */ + 1, /* 32DC9 (208329) */ + 1, /* 32DCA (208330) */ + 1, /* 32DCB (208331) */ + 1, /* 32DCC (208332) */ + 1, /* 32DCD (208333) */ + 1, /* 32DCE (208334) */ + 1, /* 32DCF (208335) */ + 1, /* 32DD0 (208336) */ + 1, /* 32DD1 (208337) */ + 1, /* 32DD2 (208338) */ + 1, /* 32DD3 (208339) */ + 1, /* 32DD4 (208340) */ + 1, /* 32DD5 (208341) */ + 1, /* 32DD6 (208342) */ + 1, /* 32DD7 (208343) */ + 1, /* 32DD8 (208344) */ + 1, /* 32DD9 (208345) */ + 1, /* 32DDA (208346) */ + 1, /* 32DDB (208347) */ + 1, /* 32DDC (208348) */ + 1, /* 32DDD (208349) */ + 1, /* 32DDE (208350) */ + 1, /* 32DDF (208351) */ + 1, /* 32DE0 (208352) */ + 1, /* 32DE1 (208353) */ + 1, /* 32DE2 (208354) */ + 1, /* 32DE3 (208355) */ + 1, /* 32DE4 (208356) */ + 1, /* 32DE5 (208357) */ + 1, /* 32DE6 (208358) */ + 1, /* 32DE7 (208359) */ + 1, /* 32DE8 (208360) */ + 1, /* 32DE9 (208361) */ + 1, /* 32DEA (208362) */ + 1, /* 32DEB (208363) */ + 1, /* 32DEC (208364) */ + 1, /* 32DED (208365) */ + 1, /* 32DEE (208366) */ + 1, /* 32DEF (208367) */ + 1, /* 32DF0 (208368) */ + 1, /* 32DF1 (208369) */ + 1, /* 32DF2 (208370) */ + 1, /* 32DF3 (208371) */ + 1, /* 32DF4 (208372) */ + 1, /* 32DF5 (208373) */ + 1, /* 32DF6 (208374) */ + 1, /* 32DF7 (208375) */ + 1, /* 32DF8 (208376) */ + 1, /* 32DF9 (208377) */ + 1, /* 32DFA (208378) */ + 1, /* 32DFB (208379) */ + 1, /* 32DFC (208380) */ + 1, /* 32DFD (208381) */ + 1, /* 32DFE (208382) */ + 1, /* 32DFF (208383) */ + 1, /* 32E00 (208384) */ + 1, /* 32E01 (208385) */ + 1, /* 32E02 (208386) */ + 1, /* 32E03 (208387) */ + 1, /* 32E04 (208388) */ + 1, /* 32E05 (208389) */ + 1, /* 32E06 (208390) */ + 1, /* 32E07 (208391) */ + 1, /* 32E08 (208392) */ + 1, /* 32E09 (208393) */ + 1, /* 32E0A (208394) */ + 1, /* 32E0B (208395) */ + 1, /* 32E0C (208396) */ + 1, /* 32E0D (208397) */ + 1, /* 32E0E (208398) */ + 1, /* 32E0F (208399) */ + 1, /* 32E10 (208400) */ + 1, /* 32E11 (208401) */ + 1, /* 32E12 (208402) */ + 1, /* 32E13 (208403) */ + 1, /* 32E14 (208404) */ + 1, /* 32E15 (208405) */ + 1, /* 32E16 (208406) */ + 1, /* 32E17 (208407) */ + 1, /* 32E18 (208408) */ + 1, /* 32E19 (208409) */ + 1, /* 32E1A (208410) */ + 1, /* 32E1B (208411) */ + 1, /* 32E1C (208412) */ + 1, /* 32E1D (208413) */ + 1, /* 32E1E (208414) */ + 1, /* 32E1F (208415) */ + 1, /* 32E20 (208416) */ + 1, /* 32E21 (208417) */ + 1, /* 32E22 (208418) */ + 1, /* 32E23 (208419) */ + 1, /* 32E24 (208420) */ + 1, /* 32E25 (208421) */ + 1, /* 32E26 (208422) */ + 1, /* 32E27 (208423) */ + 1, /* 32E28 (208424) */ + 1, /* 32E29 (208425) */ + 1, /* 32E2A (208426) */ + 1, /* 32E2B (208427) */ + 1, /* 32E2C (208428) */ + 1, /* 32E2D (208429) */ + 1, /* 32E2E (208430) */ + 1, /* 32E2F (208431) */ + 1, /* 32E30 (208432) */ + 1, /* 32E31 (208433) */ + 1, /* 32E32 (208434) */ + 1, /* 32E33 (208435) */ + 1, /* 32E34 (208436) */ + 1, /* 32E35 (208437) */ + 1, /* 32E36 (208438) */ + 1, /* 32E37 (208439) */ + 1, /* 32E38 (208440) */ + 1, /* 32E39 (208441) */ + 1, /* 32E3A (208442) */ + 1, /* 32E3B (208443) */ + 1, /* 32E3C (208444) */ + 1, /* 32E3D (208445) */ + 1, /* 32E3E (208446) */ + 1, /* 32E3F (208447) */ + 1, /* 32E40 (208448) */ + 1, /* 32E41 (208449) */ + 1, /* 32E42 (208450) */ + 1, /* 32E43 (208451) */ + 1, /* 32E44 (208452) */ + 1, /* 32E45 (208453) */ + 1, /* 32E46 (208454) */ + 1, /* 32E47 (208455) */ + 1, /* 32E48 (208456) */ + 1, /* 32E49 (208457) */ + 1, /* 32E4A (208458) */ + 1, /* 32E4B (208459) */ + 1, /* 32E4C (208460) */ + 1, /* 32E4D (208461) */ + 1, /* 32E4E (208462) */ + 1, /* 32E4F (208463) */ + 1, /* 32E50 (208464) */ + 1, /* 32E51 (208465) */ + 1, /* 32E52 (208466) */ + 1, /* 32E53 (208467) */ + 1, /* 32E54 (208468) */ + 1, /* 32E55 (208469) */ + 1, /* 32E56 (208470) */ + 1, /* 32E57 (208471) */ + 1, /* 32E58 (208472) */ + 1, /* 32E59 (208473) */ + 1, /* 32E5A (208474) */ + 1, /* 32E5B (208475) */ + 1, /* 32E5C (208476) */ + 1, /* 32E5D (208477) */ + 1, /* 32E5E (208478) */ + 1, /* 32E5F (208479) */ + 1, /* 32E60 (208480) */ + 1, /* 32E61 (208481) */ + 1, /* 32E62 (208482) */ + 1, /* 32E63 (208483) */ + 1, /* 32E64 (208484) */ + 1, /* 32E65 (208485) */ + 1, /* 32E66 (208486) */ + 1, /* 32E67 (208487) */ + 1, /* 32E68 (208488) */ + 1, /* 32E69 (208489) */ + 1, /* 32E6A (208490) */ + 1, /* 32E6B (208491) */ + 1, /* 32E6C (208492) */ + 1, /* 32E6D (208493) */ + 1, /* 32E6E (208494) */ + 1, /* 32E6F (208495) */ + 1, /* 32E70 (208496) */ + 1, /* 32E71 (208497) */ + 1, /* 32E72 (208498) */ + 1, /* 32E73 (208499) */ + 1, /* 32E74 (208500) */ + 1, /* 32E75 (208501) */ + 1, /* 32E76 (208502) */ + 1, /* 32E77 (208503) */ + 1, /* 32E78 (208504) */ + 1, /* 32E79 (208505) */ + 1, /* 32E7A (208506) */ + 1, /* 32E7B (208507) */ + 1, /* 32E7C (208508) */ + 1, /* 32E7D (208509) */ + 1, /* 32E7E (208510) */ + 1, /* 32E7F (208511) */ + 1, /* 32E80 (208512) */ + 1, /* 32E81 (208513) */ + 1, /* 32E82 (208514) */ + 1, /* 32E83 (208515) */ + 1, /* 32E84 (208516) */ + 1, /* 32E85 (208517) */ + 1, /* 32E86 (208518) */ + 1, /* 32E87 (208519) */ + 1, /* 32E88 (208520) */ + 1, /* 32E89 (208521) */ + 1, /* 32E8A (208522) */ + 1, /* 32E8B (208523) */ + 1, /* 32E8C (208524) */ + 1, /* 32E8D (208525) */ + 1, /* 32E8E (208526) */ + 1, /* 32E8F (208527) */ + 1, /* 32E90 (208528) */ + 1, /* 32E91 (208529) */ + 1, /* 32E92 (208530) */ + 1, /* 32E93 (208531) */ + 1, /* 32E94 (208532) */ + 1, /* 32E95 (208533) */ + 1, /* 32E96 (208534) */ + 1, /* 32E97 (208535) */ + 1, /* 32E98 (208536) */ + 1, /* 32E99 (208537) */ + 1, /* 32E9A (208538) */ + 1, /* 32E9B (208539) */ + 1, /* 32E9C (208540) */ + 1, /* 32E9D (208541) */ + 1, /* 32E9E (208542) */ + 1, /* 32E9F (208543) */ + 1, /* 32EA0 (208544) */ + 1, /* 32EA1 (208545) */ + 1, /* 32EA2 (208546) */ + 1, /* 32EA3 (208547) */ + 1, /* 32EA4 (208548) */ + 1, /* 32EA5 (208549) */ + 1, /* 32EA6 (208550) */ + 1, /* 32EA7 (208551) */ + 1, /* 32EA8 (208552) */ + 1, /* 32EA9 (208553) */ + 1, /* 32EAA (208554) */ + 1, /* 32EAB (208555) */ + 1, /* 32EAC (208556) */ + 1, /* 32EAD (208557) */ + 1, /* 32EAE (208558) */ + 1, /* 32EAF (208559) */ + 1, /* 32EB0 (208560) */ + 1, /* 32EB1 (208561) */ + 1, /* 32EB2 (208562) */ + 1, /* 32EB3 (208563) */ + 1, /* 32EB4 (208564) */ + 1, /* 32EB5 (208565) */ + 1, /* 32EB6 (208566) */ + 1, /* 32EB7 (208567) */ + 1, /* 32EB8 (208568) */ + 1, /* 32EB9 (208569) */ + 1, /* 32EBA (208570) */ + 1, /* 32EBB (208571) */ + 1, /* 32EBC (208572) */ + 1, /* 32EBD (208573) */ + 1, /* 32EBE (208574) */ + 1, /* 32EBF (208575) */ + 1, /* 32EC0 (208576) */ + 1, /* 32EC1 (208577) */ + 1, /* 32EC2 (208578) */ + 1, /* 32EC3 (208579) */ + 1, /* 32EC4 (208580) */ + 1, /* 32EC5 (208581) */ + 1, /* 32EC6 (208582) */ + 1, /* 32EC7 (208583) */ + 1, /* 32EC8 (208584) */ + 1, /* 32EC9 (208585) */ + 1, /* 32ECA (208586) */ + 1, /* 32ECB (208587) */ + 1, /* 32ECC (208588) */ + 1, /* 32ECD (208589) */ + 1, /* 32ECE (208590) */ + 1, /* 32ECF (208591) */ + 1, /* 32ED0 (208592) */ + 1, /* 32ED1 (208593) */ + 1, /* 32ED2 (208594) */ + 1, /* 32ED3 (208595) */ + 1, /* 32ED4 (208596) */ + 1, /* 32ED5 (208597) */ + 1, /* 32ED6 (208598) */ + 1, /* 32ED7 (208599) */ + 1, /* 32ED8 (208600) */ + 1, /* 32ED9 (208601) */ + 1, /* 32EDA (208602) */ + 1, /* 32EDB (208603) */ + 1, /* 32EDC (208604) */ + 1, /* 32EDD (208605) */ + 1, /* 32EDE (208606) */ + 1, /* 32EDF (208607) */ + 1, /* 32EE0 (208608) */ + 1, /* 32EE1 (208609) */ + 1, /* 32EE2 (208610) */ + 1, /* 32EE3 (208611) */ + 1, /* 32EE4 (208612) */ + 1, /* 32EE5 (208613) */ + 1, /* 32EE6 (208614) */ + 1, /* 32EE7 (208615) */ + 1, /* 32EE8 (208616) */ + 1, /* 32EE9 (208617) */ + 1, /* 32EEA (208618) */ + 1, /* 32EEB (208619) */ + 1, /* 32EEC (208620) */ + 1, /* 32EED (208621) */ + 1, /* 32EEE (208622) */ + 1, /* 32EEF (208623) */ + 1, /* 32EF0 (208624) */ + 1, /* 32EF1 (208625) */ + 1, /* 32EF2 (208626) */ + 1, /* 32EF3 (208627) */ + 1, /* 32EF4 (208628) */ + 1, /* 32EF5 (208629) */ + 1, /* 32EF6 (208630) */ + 1, /* 32EF7 (208631) */ + 1, /* 32EF8 (208632) */ + 1, /* 32EF9 (208633) */ + 1, /* 32EFA (208634) */ + 1, /* 32EFB (208635) */ + 1, /* 32EFC (208636) */ + 1, /* 32EFD (208637) */ + 1, /* 32EFE (208638) */ + 1, /* 32EFF (208639) */ + 1, /* 32F00 (208640) */ + 1, /* 32F01 (208641) */ + 1, /* 32F02 (208642) */ + 1, /* 32F03 (208643) */ + 1, /* 32F04 (208644) */ + 1, /* 32F05 (208645) */ + 1, /* 32F06 (208646) */ + 1, /* 32F07 (208647) */ + 1, /* 32F08 (208648) */ + 1, /* 32F09 (208649) */ + 1, /* 32F0A (208650) */ + 1, /* 32F0B (208651) */ + 1, /* 32F0C (208652) */ + 1, /* 32F0D (208653) */ + 1, /* 32F0E (208654) */ + 1, /* 32F0F (208655) */ + 1, /* 32F10 (208656) */ + 1, /* 32F11 (208657) */ + 1, /* 32F12 (208658) */ + 1, /* 32F13 (208659) */ + 1, /* 32F14 (208660) */ + 1, /* 32F15 (208661) */ + 1, /* 32F16 (208662) */ + 1, /* 32F17 (208663) */ + 1, /* 32F18 (208664) */ + 1, /* 32F19 (208665) */ + 1, /* 32F1A (208666) */ + 1, /* 32F1B (208667) */ + 1, /* 32F1C (208668) */ + 1, /* 32F1D (208669) */ + 1, /* 32F1E (208670) */ + 1, /* 32F1F (208671) */ + 1, /* 32F20 (208672) */ + 1, /* 32F21 (208673) */ + 1, /* 32F22 (208674) */ + 1, /* 32F23 (208675) */ + 1, /* 32F24 (208676) */ + 1, /* 32F25 (208677) */ + 1, /* 32F26 (208678) */ + 1, /* 32F27 (208679) */ + 1, /* 32F28 (208680) */ + 1, /* 32F29 (208681) */ + 1, /* 32F2A (208682) */ + 1, /* 32F2B (208683) */ + 1, /* 32F2C (208684) */ + 1, /* 32F2D (208685) */ + 1, /* 32F2E (208686) */ + 1, /* 32F2F (208687) */ + 1, /* 32F30 (208688) */ + 1, /* 32F31 (208689) */ + 1, /* 32F32 (208690) */ + 1, /* 32F33 (208691) */ + 1, /* 32F34 (208692) */ + 1, /* 32F35 (208693) */ + 1, /* 32F36 (208694) */ + 1, /* 32F37 (208695) */ + 1, /* 32F38 (208696) */ + 1, /* 32F39 (208697) */ + 1, /* 32F3A (208698) */ + 1, /* 32F3B (208699) */ + 1, /* 32F3C (208700) */ + 1, /* 32F3D (208701) */ + 1, /* 32F3E (208702) */ + 1, /* 32F3F (208703) */ + 1, /* 32F40 (208704) */ + 1, /* 32F41 (208705) */ + 1, /* 32F42 (208706) */ + 1, /* 32F43 (208707) */ + 1, /* 32F44 (208708) */ + 1, /* 32F45 (208709) */ + 1, /* 32F46 (208710) */ + 1, /* 32F47 (208711) */ + 1, /* 32F48 (208712) */ + 1, /* 32F49 (208713) */ + 1, /* 32F4A (208714) */ + 1, /* 32F4B (208715) */ + 1, /* 32F4C (208716) */ + 1, /* 32F4D (208717) */ + 1, /* 32F4E (208718) */ + 1, /* 32F4F (208719) */ + 1, /* 32F50 (208720) */ + 1, /* 32F51 (208721) */ + 1, /* 32F52 (208722) */ + 1, /* 32F53 (208723) */ + 1, /* 32F54 (208724) */ + 1, /* 32F55 (208725) */ + 1, /* 32F56 (208726) */ + 1, /* 32F57 (208727) */ + 1, /* 32F58 (208728) */ + 1, /* 32F59 (208729) */ + 1, /* 32F5A (208730) */ + 1, /* 32F5B (208731) */ + 1, /* 32F5C (208732) */ + 1, /* 32F5D (208733) */ + 1, /* 32F5E (208734) */ + 1, /* 32F5F (208735) */ + 1, /* 32F60 (208736) */ + 1, /* 32F61 (208737) */ + 1, /* 32F62 (208738) */ + 1, /* 32F63 (208739) */ + 1, /* 32F64 (208740) */ + 1, /* 32F65 (208741) */ + 1, /* 32F66 (208742) */ + 1, /* 32F67 (208743) */ + 1, /* 32F68 (208744) */ + 1, /* 32F69 (208745) */ + 1, /* 32F6A (208746) */ + 1, /* 32F6B (208747) */ + 1, /* 32F6C (208748) */ + 1, /* 32F6D (208749) */ + 1, /* 32F6E (208750) */ + 1, /* 32F6F (208751) */ + 1, /* 32F70 (208752) */ + 1, /* 32F71 (208753) */ + 1, /* 32F72 (208754) */ + 1, /* 32F73 (208755) */ + 1, /* 32F74 (208756) */ + 1, /* 32F75 (208757) */ + 1, /* 32F76 (208758) */ + 1, /* 32F77 (208759) */ + 1, /* 32F78 (208760) */ + 1, /* 32F79 (208761) */ + 1, /* 32F7A (208762) */ + 1, /* 32F7B (208763) */ + 1, /* 32F7C (208764) */ + 1, /* 32F7D (208765) */ + 1, /* 32F7E (208766) */ + 1, /* 32F7F (208767) */ + 1, /* 32F80 (208768) */ + 1, /* 32F81 (208769) */ + 1, /* 32F82 (208770) */ + 1, /* 32F83 (208771) */ + 1, /* 32F84 (208772) */ + 1, /* 32F85 (208773) */ + 1, /* 32F86 (208774) */ + 1, /* 32F87 (208775) */ + 1, /* 32F88 (208776) */ + 1, /* 32F89 (208777) */ + 1, /* 32F8A (208778) */ + 1, /* 32F8B (208779) */ + 1, /* 32F8C (208780) */ + 1, /* 32F8D (208781) */ + 1, /* 32F8E (208782) */ + 1, /* 32F8F (208783) */ + 1, /* 32F90 (208784) */ + 1, /* 32F91 (208785) */ + 1, /* 32F92 (208786) */ + 1, /* 32F93 (208787) */ + 1, /* 32F94 (208788) */ + 1, /* 32F95 (208789) */ + 1, /* 32F96 (208790) */ + 1, /* 32F97 (208791) */ + 1, /* 32F98 (208792) */ + 1, /* 32F99 (208793) */ + 1, /* 32F9A (208794) */ + 1, /* 32F9B (208795) */ + 1, /* 32F9C (208796) */ + 1, /* 32F9D (208797) */ + 1, /* 32F9E (208798) */ + 1, /* 32F9F (208799) */ + 1, /* 32FA0 (208800) */ + 1, /* 32FA1 (208801) */ + 1, /* 32FA2 (208802) */ + 1, /* 32FA3 (208803) */ + 1, /* 32FA4 (208804) */ + 1, /* 32FA5 (208805) */ + 1, /* 32FA6 (208806) */ + 1, /* 32FA7 (208807) */ + 1, /* 32FA8 (208808) */ + 1, /* 32FA9 (208809) */ + 1, /* 32FAA (208810) */ + 1, /* 32FAB (208811) */ + 1, /* 32FAC (208812) */ + 1, /* 32FAD (208813) */ + 1, /* 32FAE (208814) */ + 1, /* 32FAF (208815) */ + 1, /* 32FB0 (208816) */ + 1, /* 32FB1 (208817) */ + 1, /* 32FB2 (208818) */ + 1, /* 32FB3 (208819) */ + 1, /* 32FB4 (208820) */ + 1, /* 32FB5 (208821) */ + 1, /* 32FB6 (208822) */ + 1, /* 32FB7 (208823) */ + 1, /* 32FB8 (208824) */ + 1, /* 32FB9 (208825) */ + 1, /* 32FBA (208826) */ + 1, /* 32FBB (208827) */ + 1, /* 32FBC (208828) */ + 1, /* 32FBD (208829) */ + 1, /* 32FBE (208830) */ + 1, /* 32FBF (208831) */ + 1, /* 32FC0 (208832) */ + 1, /* 32FC1 (208833) */ + 1, /* 32FC2 (208834) */ + 1, /* 32FC3 (208835) */ + 1, /* 32FC4 (208836) */ + 1, /* 32FC5 (208837) */ + 1, /* 32FC6 (208838) */ + 1, /* 32FC7 (208839) */ + 1, /* 32FC8 (208840) */ + 1, /* 32FC9 (208841) */ + 1, /* 32FCA (208842) */ + 1, /* 32FCB (208843) */ + 1, /* 32FCC (208844) */ + 1, /* 32FCD (208845) */ + 1, /* 32FCE (208846) */ + 1, /* 32FCF (208847) */ + 1, /* 32FD0 (208848) */ + 1, /* 32FD1 (208849) */ + 1, /* 32FD2 (208850) */ + 1, /* 32FD3 (208851) */ + 1, /* 32FD4 (208852) */ + 1, /* 32FD5 (208853) */ + 1, /* 32FD6 (208854) */ + 1, /* 32FD7 (208855) */ + 1, /* 32FD8 (208856) */ + 1, /* 32FD9 (208857) */ + 1, /* 32FDA (208858) */ + 1, /* 32FDB (208859) */ + 1, /* 32FDC (208860) */ + 1, /* 32FDD (208861) */ + 1, /* 32FDE (208862) */ + 1, /* 32FDF (208863) */ + 1, /* 32FE0 (208864) */ + 1, /* 32FE1 (208865) */ + 1, /* 32FE2 (208866) */ + 1, /* 32FE3 (208867) */ + 1, /* 32FE4 (208868) */ + 1, /* 32FE5 (208869) */ + 1, /* 32FE6 (208870) */ + 1, /* 32FE7 (208871) */ + 1, /* 32FE8 (208872) */ + 1, /* 32FE9 (208873) */ + 1, /* 32FEA (208874) */ + 1, /* 32FEB (208875) */ + 1, /* 32FEC (208876) */ + 1, /* 32FED (208877) */ + 1, /* 32FEE (208878) */ + 1, /* 32FEF (208879) */ + 1, /* 32FF0 (208880) */ + 1, /* 32FF1 (208881) */ + 1, /* 32FF2 (208882) */ + 1, /* 32FF3 (208883) */ + 1, /* 32FF4 (208884) */ + 1, /* 32FF5 (208885) */ + 1, /* 32FF6 (208886) */ + 1, /* 32FF7 (208887) */ + 1, /* 32FF8 (208888) */ + 1, /* 32FF9 (208889) */ + 1, /* 32FFA (208890) */ + 1, /* 32FFB (208891) */ + 1, /* 32FFC (208892) */ + 1, /* 32FFD (208893) */ + 1, /* 32FFE (208894) */ + 1, /* 32FFF (208895) */ + 1, /* 33000 (208896) */ + 1, /* 33001 (208897) */ + 1, /* 33002 (208898) */ + 1, /* 33003 (208899) */ + 1, /* 33004 (208900) */ + 1, /* 33005 (208901) */ + 1, /* 33006 (208902) */ + 1, /* 33007 (208903) */ + 1, /* 33008 (208904) */ + 1, /* 33009 (208905) */ + 1, /* 3300A (208906) */ + 1, /* 3300B (208907) */ + 1, /* 3300C (208908) */ + 1, /* 3300D (208909) */ + 1, /* 3300E (208910) */ + 1, /* 3300F (208911) */ + 1, /* 33010 (208912) */ + 1, /* 33011 (208913) */ + 1, /* 33012 (208914) */ + 1, /* 33013 (208915) */ + 1, /* 33014 (208916) */ + 1, /* 33015 (208917) */ + 1, /* 33016 (208918) */ + 1, /* 33017 (208919) */ + 1, /* 33018 (208920) */ + 1, /* 33019 (208921) */ + 1, /* 3301A (208922) */ + 1, /* 3301B (208923) */ + 1, /* 3301C (208924) */ + 1, /* 3301D (208925) */ + 1, /* 3301E (208926) */ + 1, /* 3301F (208927) */ + 1, /* 33020 (208928) */ + 1, /* 33021 (208929) */ + 1, /* 33022 (208930) */ + 1, /* 33023 (208931) */ + 1, /* 33024 (208932) */ + 1, /* 33025 (208933) */ + 1, /* 33026 (208934) */ + 1, /* 33027 (208935) */ + 1, /* 33028 (208936) */ + 1, /* 33029 (208937) */ + 1, /* 3302A (208938) */ + 1, /* 3302B (208939) */ + 1, /* 3302C (208940) */ + 1, /* 3302D (208941) */ + 1, /* 3302E (208942) */ + 1, /* 3302F (208943) */ + 1, /* 33030 (208944) */ + 1, /* 33031 (208945) */ + 1, /* 33032 (208946) */ + 1, /* 33033 (208947) */ + 1, /* 33034 (208948) */ + 1, /* 33035 (208949) */ + 1, /* 33036 (208950) */ + 1, /* 33037 (208951) */ + 1, /* 33038 (208952) */ + 1, /* 33039 (208953) */ + 1, /* 3303A (208954) */ + 1, /* 3303B (208955) */ + 1, /* 3303C (208956) */ + 1, /* 3303D (208957) */ + 1, /* 3303E (208958) */ + 1, /* 3303F (208959) */ + 1, /* 33040 (208960) */ + 1, /* 33041 (208961) */ + 1, /* 33042 (208962) */ + 1, /* 33043 (208963) */ + 1, /* 33044 (208964) */ + 1, /* 33045 (208965) */ + 1, /* 33046 (208966) */ + 1, /* 33047 (208967) */ + 1, /* 33048 (208968) */ + 1, /* 33049 (208969) */ + 1, /* 3304A (208970) */ + 1, /* 3304B (208971) */ + 1, /* 3304C (208972) */ + 1, /* 3304D (208973) */ + 1, /* 3304E (208974) */ + 1, /* 3304F (208975) */ + 1, /* 33050 (208976) */ + 1, /* 33051 (208977) */ + 1, /* 33052 (208978) */ + 1, /* 33053 (208979) */ + 1, /* 33054 (208980) */ + 1, /* 33055 (208981) */ + 1, /* 33056 (208982) */ + 1, /* 33057 (208983) */ + 1, /* 33058 (208984) */ + 1, /* 33059 (208985) */ + 1, /* 3305A (208986) */ + 1, /* 3305B (208987) */ + 1, /* 3305C (208988) */ + 1, /* 3305D (208989) */ + 1, /* 3305E (208990) */ + 1, /* 3305F (208991) */ + 1, /* 33060 (208992) */ + 1, /* 33061 (208993) */ + 1, /* 33062 (208994) */ + 1, /* 33063 (208995) */ + 1, /* 33064 (208996) */ + 1, /* 33065 (208997) */ + 1, /* 33066 (208998) */ + 1, /* 33067 (208999) */ + 1, /* 33068 (209000) */ + 1, /* 33069 (209001) */ + 1, /* 3306A (209002) */ + 1, /* 3306B (209003) */ + 1, /* 3306C (209004) */ + 1, /* 3306D (209005) */ + 1, /* 3306E (209006) */ + 1, /* 3306F (209007) */ + 1, /* 33070 (209008) */ + 1, /* 33071 (209009) */ + 1, /* 33072 (209010) */ + 1, /* 33073 (209011) */ + 1, /* 33074 (209012) */ + 1, /* 33075 (209013) */ + 1, /* 33076 (209014) */ + 1, /* 33077 (209015) */ + 1, /* 33078 (209016) */ + 1, /* 33079 (209017) */ + 1, /* 3307A (209018) */ + 1, /* 3307B (209019) */ + 1, /* 3307C (209020) */ + 1, /* 3307D (209021) */ + 1, /* 3307E (209022) */ + 1, /* 3307F (209023) */ + 1, /* 33080 (209024) */ + 1, /* 33081 (209025) */ + 1, /* 33082 (209026) */ + 1, /* 33083 (209027) */ + 1, /* 33084 (209028) */ + 1, /* 33085 (209029) */ + 1, /* 33086 (209030) */ + 1, /* 33087 (209031) */ + 1, /* 33088 (209032) */ + 1, /* 33089 (209033) */ + 1, /* 3308A (209034) */ + 1, /* 3308B (209035) */ + 1, /* 3308C (209036) */ + 1, /* 3308D (209037) */ + 1, /* 3308E (209038) */ + 1, /* 3308F (209039) */ + 1, /* 33090 (209040) */ + 1, /* 33091 (209041) */ + 1, /* 33092 (209042) */ + 1, /* 33093 (209043) */ + 1, /* 33094 (209044) */ + 1, /* 33095 (209045) */ + 1, /* 33096 (209046) */ + 1, /* 33097 (209047) */ + 1, /* 33098 (209048) */ + 1, /* 33099 (209049) */ + 1, /* 3309A (209050) */ + 1, /* 3309B (209051) */ + 1, /* 3309C (209052) */ + 1, /* 3309D (209053) */ + 1, /* 3309E (209054) */ + 1, /* 3309F (209055) */ + 1, /* 330A0 (209056) */ + 1, /* 330A1 (209057) */ + 1, /* 330A2 (209058) */ + 1, /* 330A3 (209059) */ + 1, /* 330A4 (209060) */ + 1, /* 330A5 (209061) */ + 1, /* 330A6 (209062) */ + 1, /* 330A7 (209063) */ + 1, /* 330A8 (209064) */ + 1, /* 330A9 (209065) */ + 1, /* 330AA (209066) */ + 1, /* 330AB (209067) */ + 1, /* 330AC (209068) */ + 1, /* 330AD (209069) */ + 1, /* 330AE (209070) */ + 1, /* 330AF (209071) */ + 1, /* 330B0 (209072) */ + 1, /* 330B1 (209073) */ + 1, /* 330B2 (209074) */ + 1, /* 330B3 (209075) */ + 1, /* 330B4 (209076) */ + 1, /* 330B5 (209077) */ + 1, /* 330B6 (209078) */ + 1, /* 330B7 (209079) */ + 1, /* 330B8 (209080) */ + 1, /* 330B9 (209081) */ + 1, /* 330BA (209082) */ + 1, /* 330BB (209083) */ + 1, /* 330BC (209084) */ + 1, /* 330BD (209085) */ + 1, /* 330BE (209086) */ + 1, /* 330BF (209087) */ + 1, /* 330C0 (209088) */ + 1, /* 330C1 (209089) */ + 1, /* 330C2 (209090) */ + 1, /* 330C3 (209091) */ + 1, /* 330C4 (209092) */ + 1, /* 330C5 (209093) */ + 1, /* 330C6 (209094) */ + 1, /* 330C7 (209095) */ + 1, /* 330C8 (209096) */ + 1, /* 330C9 (209097) */ + 1, /* 330CA (209098) */ + 1, /* 330CB (209099) */ + 1, /* 330CC (209100) */ + 1, /* 330CD (209101) */ + 1, /* 330CE (209102) */ + 1, /* 330CF (209103) */ + 1, /* 330D0 (209104) */ + 1, /* 330D1 (209105) */ + 1, /* 330D2 (209106) */ + 1, /* 330D3 (209107) */ + 1, /* 330D4 (209108) */ + 1, /* 330D5 (209109) */ + 1, /* 330D6 (209110) */ + 1, /* 330D7 (209111) */ + 1, /* 330D8 (209112) */ + 1, /* 330D9 (209113) */ + 1, /* 330DA (209114) */ + 1, /* 330DB (209115) */ + 1, /* 330DC (209116) */ + 1, /* 330DD (209117) */ + 1, /* 330DE (209118) */ + 1, /* 330DF (209119) */ + 1, /* 330E0 (209120) */ + 1, /* 330E1 (209121) */ + 1, /* 330E2 (209122) */ + 1, /* 330E3 (209123) */ + 1, /* 330E4 (209124) */ + 1, /* 330E5 (209125) */ + 1, /* 330E6 (209126) */ + 1, /* 330E7 (209127) */ + 1, /* 330E8 (209128) */ + 1, /* 330E9 (209129) */ + 1, /* 330EA (209130) */ + 1, /* 330EB (209131) */ + 1, /* 330EC (209132) */ + 1, /* 330ED (209133) */ + 1, /* 330EE (209134) */ + 1, /* 330EF (209135) */ + 1, /* 330F0 (209136) */ + 1, /* 330F1 (209137) */ + 1, /* 330F2 (209138) */ + 1, /* 330F3 (209139) */ + 1, /* 330F4 (209140) */ + 1, /* 330F5 (209141) */ + 1, /* 330F6 (209142) */ + 1, /* 330F7 (209143) */ + 1, /* 330F8 (209144) */ + 1, /* 330F9 (209145) */ + 1, /* 330FA (209146) */ + 1, /* 330FB (209147) */ + 1, /* 330FC (209148) */ + 1, /* 330FD (209149) */ + 1, /* 330FE (209150) */ + 1, /* 330FF (209151) */ + 1, /* 33100 (209152) */ + 1, /* 33101 (209153) */ + 1, /* 33102 (209154) */ + 1, /* 33103 (209155) */ + 1, /* 33104 (209156) */ + 1, /* 33105 (209157) */ + 1, /* 33106 (209158) */ + 1, /* 33107 (209159) */ + 1, /* 33108 (209160) */ + 1, /* 33109 (209161) */ + 1, /* 3310A (209162) */ + 1, /* 3310B (209163) */ + 1, /* 3310C (209164) */ + 1, /* 3310D (209165) */ + 1, /* 3310E (209166) */ + 1, /* 3310F (209167) */ + 1, /* 33110 (209168) */ + 1, /* 33111 (209169) */ + 1, /* 33112 (209170) */ + 1, /* 33113 (209171) */ + 1, /* 33114 (209172) */ + 1, /* 33115 (209173) */ + 1, /* 33116 (209174) */ + 1, /* 33117 (209175) */ + 1, /* 33118 (209176) */ + 1, /* 33119 (209177) */ + 1, /* 3311A (209178) */ + 1, /* 3311B (209179) */ + 1, /* 3311C (209180) */ + 1, /* 3311D (209181) */ + 1, /* 3311E (209182) */ + 1, /* 3311F (209183) */ + 1, /* 33120 (209184) */ + 1, /* 33121 (209185) */ + 1, /* 33122 (209186) */ + 1, /* 33123 (209187) */ + 1, /* 33124 (209188) */ + 1, /* 33125 (209189) */ + 1, /* 33126 (209190) */ + 1, /* 33127 (209191) */ + 1, /* 33128 (209192) */ + 1, /* 33129 (209193) */ + 1, /* 3312A (209194) */ + 1, /* 3312B (209195) */ + 1, /* 3312C (209196) */ + 1, /* 3312D (209197) */ + 1, /* 3312E (209198) */ + 1, /* 3312F (209199) */ + 1, /* 33130 (209200) */ + 1, /* 33131 (209201) */ + 1, /* 33132 (209202) */ + 1, /* 33133 (209203) */ + 1, /* 33134 (209204) */ + 1, /* 33135 (209205) */ + 1, /* 33136 (209206) */ + 1, /* 33137 (209207) */ + 1, /* 33138 (209208) */ + 1, /* 33139 (209209) */ + 1, /* 3313A (209210) */ + 1, /* 3313B (209211) */ + 1, /* 3313C (209212) */ + 1, /* 3313D (209213) */ + 1, /* 3313E (209214) */ + 1, /* 3313F (209215) */ + 1, /* 33140 (209216) */ + 1, /* 33141 (209217) */ + 1, /* 33142 (209218) */ + 1, /* 33143 (209219) */ + 1, /* 33144 (209220) */ + 1, /* 33145 (209221) */ + 1, /* 33146 (209222) */ + 1, /* 33147 (209223) */ + 1, /* 33148 (209224) */ + 1, /* 33149 (209225) */ + 1, /* 3314A (209226) */ + 1, /* 3314B (209227) */ + 1, /* 3314C (209228) */ + 1, /* 3314D (209229) */ + 1, /* 3314E (209230) */ + 1, /* 3314F (209231) */ + 1, /* 33150 (209232) */ + 1, /* 33151 (209233) */ + 1, /* 33152 (209234) */ + 1, /* 33153 (209235) */ + 1, /* 33154 (209236) */ + 1, /* 33155 (209237) */ + 1, /* 33156 (209238) */ + 1, /* 33157 (209239) */ + 1, /* 33158 (209240) */ + 1, /* 33159 (209241) */ + 1, /* 3315A (209242) */ + 1, /* 3315B (209243) */ + 1, /* 3315C (209244) */ + 1, /* 3315D (209245) */ + 1, /* 3315E (209246) */ + 1, /* 3315F (209247) */ + 1, /* 33160 (209248) */ + 1, /* 33161 (209249) */ + 1, /* 33162 (209250) */ + 1, /* 33163 (209251) */ + 1, /* 33164 (209252) */ + 1, /* 33165 (209253) */ + 1, /* 33166 (209254) */ + 1, /* 33167 (209255) */ + 1, /* 33168 (209256) */ + 1, /* 33169 (209257) */ + 1, /* 3316A (209258) */ + 1, /* 3316B (209259) */ + 1, /* 3316C (209260) */ + 1, /* 3316D (209261) */ + 1, /* 3316E (209262) */ + 1, /* 3316F (209263) */ + 1, /* 33170 (209264) */ + 1, /* 33171 (209265) */ + 1, /* 33172 (209266) */ + 1, /* 33173 (209267) */ + 1, /* 33174 (209268) */ + 1, /* 33175 (209269) */ + 1, /* 33176 (209270) */ + 1, /* 33177 (209271) */ + 1, /* 33178 (209272) */ + 1, /* 33179 (209273) */ + 1, /* 3317A (209274) */ + 1, /* 3317B (209275) */ + 1, /* 3317C (209276) */ + 1, /* 3317D (209277) */ + 1, /* 3317E (209278) */ + 1, /* 3317F (209279) */ + 1, /* 33180 (209280) */ + 1, /* 33181 (209281) */ + 1, /* 33182 (209282) */ + 1, /* 33183 (209283) */ + 1, /* 33184 (209284) */ + 1, /* 33185 (209285) */ + 1, /* 33186 (209286) */ + 1, /* 33187 (209287) */ + 1, /* 33188 (209288) */ + 1, /* 33189 (209289) */ + 1, /* 3318A (209290) */ + 1, /* 3318B (209291) */ + 1, /* 3318C (209292) */ + 1, /* 3318D (209293) */ + 1, /* 3318E (209294) */ + 1, /* 3318F (209295) */ + 1, /* 33190 (209296) */ + 1, /* 33191 (209297) */ + 1, /* 33192 (209298) */ + 1, /* 33193 (209299) */ + 1, /* 33194 (209300) */ + 1, /* 33195 (209301) */ + 1, /* 33196 (209302) */ + 1, /* 33197 (209303) */ + 1, /* 33198 (209304) */ + 1, /* 33199 (209305) */ + 1, /* 3319A (209306) */ + 1, /* 3319B (209307) */ + 1, /* 3319C (209308) */ + 1, /* 3319D (209309) */ + 1, /* 3319E (209310) */ + 1, /* 3319F (209311) */ + 1, /* 331A0 (209312) */ + 1, /* 331A1 (209313) */ + 1, /* 331A2 (209314) */ + 1, /* 331A3 (209315) */ + 1, /* 331A4 (209316) */ + 1, /* 331A5 (209317) */ + 1, /* 331A6 (209318) */ + 1, /* 331A7 (209319) */ + 1, /* 331A8 (209320) */ + 1, /* 331A9 (209321) */ + 1, /* 331AA (209322) */ + 1, /* 331AB (209323) */ + 1, /* 331AC (209324) */ + 1, /* 331AD (209325) */ + 1, /* 331AE (209326) */ + 1, /* 331AF (209327) */ + 1, /* 331B0 (209328) */ + 1, /* 331B1 (209329) */ + 1, /* 331B2 (209330) */ + 1, /* 331B3 (209331) */ + 1, /* 331B4 (209332) */ + 1, /* 331B5 (209333) */ + 1, /* 331B6 (209334) */ + 1, /* 331B7 (209335) */ + 1, /* 331B8 (209336) */ + 1, /* 331B9 (209337) */ + 1, /* 331BA (209338) */ + 1, /* 331BB (209339) */ + 1, /* 331BC (209340) */ + 1, /* 331BD (209341) */ + 1, /* 331BE (209342) */ + 1, /* 331BF (209343) */ + 1, /* 331C0 (209344) */ + 1, /* 331C1 (209345) */ + 1, /* 331C2 (209346) */ + 1, /* 331C3 (209347) */ + 1, /* 331C4 (209348) */ + 1, /* 331C5 (209349) */ + 1, /* 331C6 (209350) */ + 1, /* 331C7 (209351) */ + 1, /* 331C8 (209352) */ + 1, /* 331C9 (209353) */ + 1, /* 331CA (209354) */ + 1, /* 331CB (209355) */ + 1, /* 331CC (209356) */ + 1, /* 331CD (209357) */ + 1, /* 331CE (209358) */ + 1, /* 331CF (209359) */ + 1, /* 331D0 (209360) */ + 1, /* 331D1 (209361) */ + 1, /* 331D2 (209362) */ + 1, /* 331D3 (209363) */ + 1, /* 331D4 (209364) */ + 1, /* 331D5 (209365) */ + 1, /* 331D6 (209366) */ + 1, /* 331D7 (209367) */ + 1, /* 331D8 (209368) */ + 1, /* 331D9 (209369) */ + 1, /* 331DA (209370) */ + 1, /* 331DB (209371) */ + 1, /* 331DC (209372) */ + 1, /* 331DD (209373) */ + 1, /* 331DE (209374) */ + 1, /* 331DF (209375) */ + 1, /* 331E0 (209376) */ + 1, /* 331E1 (209377) */ + 1, /* 331E2 (209378) */ + 1, /* 331E3 (209379) */ + 1, /* 331E4 (209380) */ + 1, /* 331E5 (209381) */ + 1, /* 331E6 (209382) */ + 1, /* 331E7 (209383) */ + 1, /* 331E8 (209384) */ + 1, /* 331E9 (209385) */ + 1, /* 331EA (209386) */ + 1, /* 331EB (209387) */ + 1, /* 331EC (209388) */ + 1, /* 331ED (209389) */ + 1, /* 331EE (209390) */ + 1, /* 331EF (209391) */ + 1, /* 331F0 (209392) */ + 1, /* 331F1 (209393) */ + 1, /* 331F2 (209394) */ + 1, /* 331F3 (209395) */ + 1, /* 331F4 (209396) */ + 1, /* 331F5 (209397) */ + 1, /* 331F6 (209398) */ + 1, /* 331F7 (209399) */ + 1, /* 331F8 (209400) */ + 1, /* 331F9 (209401) */ + 1, /* 331FA (209402) */ + 1, /* 331FB (209403) */ + 1, /* 331FC (209404) */ + 1, /* 331FD (209405) */ + 1, /* 331FE (209406) */ + 1, /* 331FF (209407) */ + 1, /* 33200 (209408) */ + 1, /* 33201 (209409) */ + 1, /* 33202 (209410) */ + 1, /* 33203 (209411) */ + 1, /* 33204 (209412) */ + 1, /* 33205 (209413) */ + 1, /* 33206 (209414) */ + 1, /* 33207 (209415) */ + 1, /* 33208 (209416) */ + 1, /* 33209 (209417) */ + 1, /* 3320A (209418) */ + 1, /* 3320B (209419) */ + 1, /* 3320C (209420) */ + 1, /* 3320D (209421) */ + 1, /* 3320E (209422) */ + 1, /* 3320F (209423) */ + 1, /* 33210 (209424) */ + 1, /* 33211 (209425) */ + 1, /* 33212 (209426) */ + 1, /* 33213 (209427) */ + 1, /* 33214 (209428) */ + 1, /* 33215 (209429) */ + 1, /* 33216 (209430) */ + 1, /* 33217 (209431) */ + 1, /* 33218 (209432) */ + 1, /* 33219 (209433) */ + 1, /* 3321A (209434) */ + 1, /* 3321B (209435) */ + 1, /* 3321C (209436) */ + 1, /* 3321D (209437) */ + 1, /* 3321E (209438) */ + 1, /* 3321F (209439) */ + 1, /* 33220 (209440) */ + 1, /* 33221 (209441) */ + 1, /* 33222 (209442) */ + 1, /* 33223 (209443) */ + 1, /* 33224 (209444) */ + 1, /* 33225 (209445) */ + 1, /* 33226 (209446) */ + 1, /* 33227 (209447) */ + 1, /* 33228 (209448) */ + 1, /* 33229 (209449) */ + 1, /* 3322A (209450) */ + 1, /* 3322B (209451) */ + 1, /* 3322C (209452) */ + 1, /* 3322D (209453) */ + 1, /* 3322E (209454) */ + 1, /* 3322F (209455) */ + 1, /* 33230 (209456) */ + 1, /* 33231 (209457) */ + 1, /* 33232 (209458) */ + 1, /* 33233 (209459) */ + 1, /* 33234 (209460) */ + 1, /* 33235 (209461) */ + 1, /* 33236 (209462) */ + 1, /* 33237 (209463) */ + 1, /* 33238 (209464) */ + 1, /* 33239 (209465) */ + 1, /* 3323A (209466) */ + 1, /* 3323B (209467) */ + 1, /* 3323C (209468) */ + 1, /* 3323D (209469) */ + 1, /* 3323E (209470) */ + 1, /* 3323F (209471) */ + 1, /* 33240 (209472) */ + 1, /* 33241 (209473) */ + 1, /* 33242 (209474) */ + 1, /* 33243 (209475) */ + 1, /* 33244 (209476) */ + 1, /* 33245 (209477) */ + 1, /* 33246 (209478) */ + 1, /* 33247 (209479) */ + 1, /* 33248 (209480) */ + 1, /* 33249 (209481) */ + 1, /* 3324A (209482) */ + 1, /* 3324B (209483) */ + 1, /* 3324C (209484) */ + 1, /* 3324D (209485) */ + 1, /* 3324E (209486) */ + 1, /* 3324F (209487) */ + 1, /* 33250 (209488) */ + 1, /* 33251 (209489) */ + 1, /* 33252 (209490) */ + 1, /* 33253 (209491) */ + 1, /* 33254 (209492) */ + 1, /* 33255 (209493) */ + 1, /* 33256 (209494) */ + 1, /* 33257 (209495) */ + 1, /* 33258 (209496) */ + 1, /* 33259 (209497) */ + 1, /* 3325A (209498) */ + 1, /* 3325B (209499) */ + 1, /* 3325C (209500) */ + 1, /* 3325D (209501) */ + 1, /* 3325E (209502) */ + 1, /* 3325F (209503) */ + 1, /* 33260 (209504) */ + 1, /* 33261 (209505) */ + 1, /* 33262 (209506) */ + 1, /* 33263 (209507) */ + 1, /* 33264 (209508) */ + 1, /* 33265 (209509) */ + 1, /* 33266 (209510) */ + 1, /* 33267 (209511) */ + 1, /* 33268 (209512) */ + 1, /* 33269 (209513) */ + 1, /* 3326A (209514) */ + 1, /* 3326B (209515) */ + 1, /* 3326C (209516) */ + 1, /* 3326D (209517) */ + 1, /* 3326E (209518) */ + 1, /* 3326F (209519) */ + 1, /* 33270 (209520) */ + 1, /* 33271 (209521) */ + 1, /* 33272 (209522) */ + 1, /* 33273 (209523) */ + 1, /* 33274 (209524) */ + 1, /* 33275 (209525) */ + 1, /* 33276 (209526) */ + 1, /* 33277 (209527) */ + 1, /* 33278 (209528) */ + 1, /* 33279 (209529) */ + 1, /* 3327A (209530) */ + 1, /* 3327B (209531) */ + 1, /* 3327C (209532) */ + 1, /* 3327D (209533) */ + 1, /* 3327E (209534) */ + 1, /* 3327F (209535) */ + 1, /* 33280 (209536) */ + 1, /* 33281 (209537) */ + 1, /* 33282 (209538) */ + 1, /* 33283 (209539) */ + 1, /* 33284 (209540) */ + 1, /* 33285 (209541) */ + 1, /* 33286 (209542) */ + 1, /* 33287 (209543) */ + 1, /* 33288 (209544) */ + 1, /* 33289 (209545) */ + 1, /* 3328A (209546) */ + 1, /* 3328B (209547) */ + 1, /* 3328C (209548) */ + 1, /* 3328D (209549) */ + 1, /* 3328E (209550) */ + 1, /* 3328F (209551) */ + 1, /* 33290 (209552) */ + 1, /* 33291 (209553) */ + 1, /* 33292 (209554) */ + 1, /* 33293 (209555) */ + 1, /* 33294 (209556) */ + 1, /* 33295 (209557) */ + 1, /* 33296 (209558) */ + 1, /* 33297 (209559) */ + 1, /* 33298 (209560) */ + 1, /* 33299 (209561) */ + 1, /* 3329A (209562) */ + 1, /* 3329B (209563) */ + 1, /* 3329C (209564) */ + 1, /* 3329D (209565) */ + 1, /* 3329E (209566) */ + 1, /* 3329F (209567) */ + 1, /* 332A0 (209568) */ + 1, /* 332A1 (209569) */ + 1, /* 332A2 (209570) */ + 1, /* 332A3 (209571) */ + 1, /* 332A4 (209572) */ + 1, /* 332A5 (209573) */ + 1, /* 332A6 (209574) */ + 1, /* 332A7 (209575) */ + 1, /* 332A8 (209576) */ + 1, /* 332A9 (209577) */ + 1, /* 332AA (209578) */ + 1, /* 332AB (209579) */ + 1, /* 332AC (209580) */ + 1, /* 332AD (209581) */ + 1, /* 332AE (209582) */ + 1, /* 332AF (209583) */ + 1, /* 332B0 (209584) */ + 1, /* 332B1 (209585) */ + 1, /* 332B2 (209586) */ + 1, /* 332B3 (209587) */ + 1, /* 332B4 (209588) */ + 1, /* 332B5 (209589) */ + 1, /* 332B6 (209590) */ + 1, /* 332B7 (209591) */ + 1, /* 332B8 (209592) */ + 1, /* 332B9 (209593) */ + 1, /* 332BA (209594) */ + 1, /* 332BB (209595) */ + 1, /* 332BC (209596) */ + 1, /* 332BD (209597) */ + 1, /* 332BE (209598) */ + 1, /* 332BF (209599) */ + 1, /* 332C0 (209600) */ + 1, /* 332C1 (209601) */ + 1, /* 332C2 (209602) */ + 1, /* 332C3 (209603) */ + 1, /* 332C4 (209604) */ + 1, /* 332C5 (209605) */ + 1, /* 332C6 (209606) */ + 1, /* 332C7 (209607) */ + 1, /* 332C8 (209608) */ + 1, /* 332C9 (209609) */ + 1, /* 332CA (209610) */ + 1, /* 332CB (209611) */ + 1, /* 332CC (209612) */ + 1, /* 332CD (209613) */ + 1, /* 332CE (209614) */ + 1, /* 332CF (209615) */ + 1, /* 332D0 (209616) */ + 1, /* 332D1 (209617) */ + 1, /* 332D2 (209618) */ + 1, /* 332D3 (209619) */ + 1, /* 332D4 (209620) */ + 1, /* 332D5 (209621) */ + 1, /* 332D6 (209622) */ + 1, /* 332D7 (209623) */ + 1, /* 332D8 (209624) */ + 1, /* 332D9 (209625) */ + 1, /* 332DA (209626) */ + 1, /* 332DB (209627) */ + 1, /* 332DC (209628) */ + 1, /* 332DD (209629) */ + 1, /* 332DE (209630) */ + 1, /* 332DF (209631) */ + 1, /* 332E0 (209632) */ + 1, /* 332E1 (209633) */ + 1, /* 332E2 (209634) */ + 1, /* 332E3 (209635) */ + 1, /* 332E4 (209636) */ + 1, /* 332E5 (209637) */ + 1, /* 332E6 (209638) */ + 1, /* 332E7 (209639) */ + 1, /* 332E8 (209640) */ + 1, /* 332E9 (209641) */ + 1, /* 332EA (209642) */ + 1, /* 332EB (209643) */ + 1, /* 332EC (209644) */ + 1, /* 332ED (209645) */ + 1, /* 332EE (209646) */ + 1, /* 332EF (209647) */ + 1, /* 332F0 (209648) */ + 1, /* 332F1 (209649) */ + 1, /* 332F2 (209650) */ + 1, /* 332F3 (209651) */ + 1, /* 332F4 (209652) */ + 1, /* 332F5 (209653) */ + 1, /* 332F6 (209654) */ + 1, /* 332F7 (209655) */ + 1, /* 332F8 (209656) */ + 1, /* 332F9 (209657) */ + 1, /* 332FA (209658) */ + 1, /* 332FB (209659) */ + 1, /* 332FC (209660) */ + 1, /* 332FD (209661) */ + 1, /* 332FE (209662) */ + 1, /* 332FF (209663) */ + 1, /* 33300 (209664) */ + 1, /* 33301 (209665) */ + 1, /* 33302 (209666) */ + 1, /* 33303 (209667) */ + 1, /* 33304 (209668) */ + 1, /* 33305 (209669) */ + 1, /* 33306 (209670) */ + 1, /* 33307 (209671) */ + 1, /* 33308 (209672) */ + 1, /* 33309 (209673) */ + 1, /* 3330A (209674) */ + 1, /* 3330B (209675) */ + 1, /* 3330C (209676) */ + 1, /* 3330D (209677) */ + 1, /* 3330E (209678) */ + 1, /* 3330F (209679) */ + 1, /* 33310 (209680) */ + 1, /* 33311 (209681) */ + 1, /* 33312 (209682) */ + 1, /* 33313 (209683) */ + 1, /* 33314 (209684) */ + 1, /* 33315 (209685) */ + 1, /* 33316 (209686) */ + 1, /* 33317 (209687) */ + 1, /* 33318 (209688) */ + 1, /* 33319 (209689) */ + 1, /* 3331A (209690) */ + 1, /* 3331B (209691) */ + 1, /* 3331C (209692) */ + 1, /* 3331D (209693) */ + 1, /* 3331E (209694) */ + 1, /* 3331F (209695) */ + 1, /* 33320 (209696) */ + 1, /* 33321 (209697) */ + 1, /* 33322 (209698) */ + 1, /* 33323 (209699) */ + 1, /* 33324 (209700) */ + 1, /* 33325 (209701) */ + 1, /* 33326 (209702) */ + 1, /* 33327 (209703) */ + 1, /* 33328 (209704) */ + 1, /* 33329 (209705) */ + 1, /* 3332A (209706) */ + 1, /* 3332B (209707) */ + 1, /* 3332C (209708) */ + 1, /* 3332D (209709) */ + 1, /* 3332E (209710) */ + 1, /* 3332F (209711) */ + 1, /* 33330 (209712) */ + 1, /* 33331 (209713) */ + 1, /* 33332 (209714) */ + 1, /* 33333 (209715) */ + 1, /* 33334 (209716) */ + 1, /* 33335 (209717) */ + 1, /* 33336 (209718) */ + 1, /* 33337 (209719) */ + 1, /* 33338 (209720) */ + 1, /* 33339 (209721) */ + 1, /* 3333A (209722) */ + 1, /* 3333B (209723) */ + 1, /* 3333C (209724) */ + 1, /* 3333D (209725) */ + 1, /* 3333E (209726) */ + 1, /* 3333F (209727) */ + 1, /* 33340 (209728) */ + 1, /* 33341 (209729) */ + 1, /* 33342 (209730) */ + 1, /* 33343 (209731) */ + 1, /* 33344 (209732) */ + 1, /* 33345 (209733) */ + 1, /* 33346 (209734) */ + 1, /* 33347 (209735) */ + 1, /* 33348 (209736) */ + 1, /* 33349 (209737) */ + 1, /* 3334A (209738) */ + 1, /* 3334B (209739) */ + 1, /* 3334C (209740) */ + 1, /* 3334D (209741) */ + 1, /* 3334E (209742) */ + 1, /* 3334F (209743) */ + 1, /* 33350 (209744) */ + 1, /* 33351 (209745) */ + 1, /* 33352 (209746) */ + 1, /* 33353 (209747) */ + 1, /* 33354 (209748) */ + 1, /* 33355 (209749) */ + 1, /* 33356 (209750) */ + 1, /* 33357 (209751) */ + 1, /* 33358 (209752) */ + 1, /* 33359 (209753) */ + 1, /* 3335A (209754) */ + 1, /* 3335B (209755) */ + 1, /* 3335C (209756) */ + 1, /* 3335D (209757) */ + 1, /* 3335E (209758) */ + 1, /* 3335F (209759) */ + 1, /* 33360 (209760) */ + 1, /* 33361 (209761) */ + 1, /* 33362 (209762) */ + 1, /* 33363 (209763) */ + 1, /* 33364 (209764) */ + 1, /* 33365 (209765) */ + 1, /* 33366 (209766) */ + 1, /* 33367 (209767) */ + 1, /* 33368 (209768) */ + 1, /* 33369 (209769) */ + 1, /* 3336A (209770) */ + 1, /* 3336B (209771) */ + 1, /* 3336C (209772) */ + 1, /* 3336D (209773) */ + 1, /* 3336E (209774) */ + 1, /* 3336F (209775) */ + 1, /* 33370 (209776) */ + 1, /* 33371 (209777) */ + 1, /* 33372 (209778) */ + 1, /* 33373 (209779) */ + 1, /* 33374 (209780) */ + 1, /* 33375 (209781) */ + 1, /* 33376 (209782) */ + 1, /* 33377 (209783) */ + 1, /* 33378 (209784) */ + 1, /* 33379 (209785) */ + 1, /* 3337A (209786) */ + 1, /* 3337B (209787) */ + 1, /* 3337C (209788) */ + 1, /* 3337D (209789) */ + 1, /* 3337E (209790) */ + 1, /* 3337F (209791) */ + 1, /* 33380 (209792) */ + 1, /* 33381 (209793) */ + 1, /* 33382 (209794) */ + 1, /* 33383 (209795) */ + 1, /* 33384 (209796) */ + 1, /* 33385 (209797) */ + 1, /* 33386 (209798) */ + 1, /* 33387 (209799) */ + 1, /* 33388 (209800) */ + 1, /* 33389 (209801) */ + 1, /* 3338A (209802) */ + 1, /* 3338B (209803) */ + 1, /* 3338C (209804) */ + 1, /* 3338D (209805) */ + 1, /* 3338E (209806) */ + 1, /* 3338F (209807) */ + 1, /* 33390 (209808) */ + 1, /* 33391 (209809) */ + 1, /* 33392 (209810) */ + 1, /* 33393 (209811) */ + 1, /* 33394 (209812) */ + 1, /* 33395 (209813) */ + 1, /* 33396 (209814) */ + 1, /* 33397 (209815) */ + 1, /* 33398 (209816) */ + 1, /* 33399 (209817) */ + 1, /* 3339A (209818) */ + 1, /* 3339B (209819) */ + 1, /* 3339C (209820) */ + 1, /* 3339D (209821) */ + 1, /* 3339E (209822) */ + 1, /* 3339F (209823) */ + 1, /* 333A0 (209824) */ + 1, /* 333A1 (209825) */ + 1, /* 333A2 (209826) */ + 1, /* 333A3 (209827) */ + 1, /* 333A4 (209828) */ + 1, /* 333A5 (209829) */ + 1, /* 333A6 (209830) */ + 1, /* 333A7 (209831) */ + 1, /* 333A8 (209832) */ + 1, /* 333A9 (209833) */ + 1, /* 333AA (209834) */ + 1, /* 333AB (209835) */ + 1, /* 333AC (209836) */ + 1, /* 333AD (209837) */ + 1, /* 333AE (209838) */ + 1, /* 333AF (209839) */ + 1, /* 333B0 (209840) */ + 1, /* 333B1 (209841) */ + 1, /* 333B2 (209842) */ + 1, /* 333B3 (209843) */ + 1, /* 333B4 (209844) */ + 1, /* 333B5 (209845) */ + 1, /* 333B6 (209846) */ + 1, /* 333B7 (209847) */ + 1, /* 333B8 (209848) */ + 1, /* 333B9 (209849) */ + 1, /* 333BA (209850) */ + 1, /* 333BB (209851) */ + 1, /* 333BC (209852) */ + 1, /* 333BD (209853) */ + 1, /* 333BE (209854) */ + 1, /* 333BF (209855) */ + 1, /* 333C0 (209856) */ + 1, /* 333C1 (209857) */ + 1, /* 333C2 (209858) */ + 1, /* 333C3 (209859) */ + 1, /* 333C4 (209860) */ + 1, /* 333C5 (209861) */ + 1, /* 333C6 (209862) */ + 1, /* 333C7 (209863) */ + 1, /* 333C8 (209864) */ + 1, /* 333C9 (209865) */ + 1, /* 333CA (209866) */ + 1, /* 333CB (209867) */ + 1, /* 333CC (209868) */ + 1, /* 333CD (209869) */ + 1, /* 333CE (209870) */ + 1, /* 333CF (209871) */ + 1, /* 333D0 (209872) */ + 1, /* 333D1 (209873) */ + 1, /* 333D2 (209874) */ + 1, /* 333D3 (209875) */ + 1, /* 333D4 (209876) */ + 1, /* 333D5 (209877) */ + 1, /* 333D6 (209878) */ + 1, /* 333D7 (209879) */ + 1, /* 333D8 (209880) */ + 1, /* 333D9 (209881) */ + 1, /* 333DA (209882) */ + 1, /* 333DB (209883) */ + 1, /* 333DC (209884) */ + 1, /* 333DD (209885) */ + 1, /* 333DE (209886) */ + 1, /* 333DF (209887) */ + 1, /* 333E0 (209888) */ + 1, /* 333E1 (209889) */ + 1, /* 333E2 (209890) */ + 1, /* 333E3 (209891) */ + 1, /* 333E4 (209892) */ + 1, /* 333E5 (209893) */ + 1, /* 333E6 (209894) */ + 1, /* 333E7 (209895) */ + 1, /* 333E8 (209896) */ + 1, /* 333E9 (209897) */ + 1, /* 333EA (209898) */ + 1, /* 333EB (209899) */ + 1, /* 333EC (209900) */ + 1, /* 333ED (209901) */ + 1, /* 333EE (209902) */ + 1, /* 333EF (209903) */ + 1, /* 333F0 (209904) */ + 1, /* 333F1 (209905) */ + 1, /* 333F2 (209906) */ + 1, /* 333F3 (209907) */ + 1, /* 333F4 (209908) */ + 1, /* 333F5 (209909) */ + 1, /* 333F6 (209910) */ + 1, /* 333F7 (209911) */ + 1, /* 333F8 (209912) */ + 1, /* 333F9 (209913) */ + 1, /* 333FA (209914) */ + 1, /* 333FB (209915) */ + 1, /* 333FC (209916) */ + 1, /* 333FD (209917) */ + 1, /* 333FE (209918) */ + 1, /* 333FF (209919) */ + 1, /* 33400 (209920) */ + 1, /* 33401 (209921) */ + 1, /* 33402 (209922) */ + 1, /* 33403 (209923) */ + 1, /* 33404 (209924) */ + 1, /* 33405 (209925) */ + 1, /* 33406 (209926) */ + 1, /* 33407 (209927) */ + 1, /* 33408 (209928) */ + 1, /* 33409 (209929) */ + 1, /* 3340A (209930) */ + 1, /* 3340B (209931) */ + 1, /* 3340C (209932) */ + 1, /* 3340D (209933) */ + 1, /* 3340E (209934) */ + 1, /* 3340F (209935) */ + 1, /* 33410 (209936) */ + 1, /* 33411 (209937) */ + 1, /* 33412 (209938) */ + 1, /* 33413 (209939) */ + 1, /* 33414 (209940) */ + 1, /* 33415 (209941) */ + 1, /* 33416 (209942) */ + 1, /* 33417 (209943) */ + 1, /* 33418 (209944) */ + 1, /* 33419 (209945) */ + 1, /* 3341A (209946) */ + 1, /* 3341B (209947) */ + 1, /* 3341C (209948) */ + 1, /* 3341D (209949) */ + 1, /* 3341E (209950) */ + 1, /* 3341F (209951) */ + 1, /* 33420 (209952) */ + 1, /* 33421 (209953) */ + 1, /* 33422 (209954) */ + 1, /* 33423 (209955) */ + 1, /* 33424 (209956) */ + 1, /* 33425 (209957) */ + 1, /* 33426 (209958) */ + 1, /* 33427 (209959) */ + 1, /* 33428 (209960) */ + 1, /* 33429 (209961) */ + 1, /* 3342A (209962) */ + 1, /* 3342B (209963) */ + 1, /* 3342C (209964) */ + 1, /* 3342D (209965) */ + 1, /* 3342E (209966) */ + 1, /* 3342F (209967) */ + 1, /* 33430 (209968) */ + 1, /* 33431 (209969) */ + 1, /* 33432 (209970) */ + 1, /* 33433 (209971) */ + 1, /* 33434 (209972) */ + 1, /* 33435 (209973) */ + 1, /* 33436 (209974) */ + 1, /* 33437 (209975) */ + 1, /* 33438 (209976) */ + 1, /* 33439 (209977) */ + 1, /* 3343A (209978) */ + 1, /* 3343B (209979) */ + 1, /* 3343C (209980) */ + 1, /* 3343D (209981) */ + 1, /* 3343E (209982) */ + 1, /* 3343F (209983) */ + 1, /* 33440 (209984) */ + 1, /* 33441 (209985) */ + 1, /* 33442 (209986) */ + 1, /* 33443 (209987) */ + 1, /* 33444 (209988) */ + 1, /* 33445 (209989) */ + 1, /* 33446 (209990) */ + 1, /* 33447 (209991) */ + 1, /* 33448 (209992) */ + 1, /* 33449 (209993) */ + 1, /* 3344A (209994) */ + 1, /* 3344B (209995) */ + 1, /* 3344C (209996) */ + 1, /* 3344D (209997) */ + 1, /* 3344E (209998) */ + 1, /* 3344F (209999) */ + 1, /* 33450 (210000) */ + 1, /* 33451 (210001) */ + 1, /* 33452 (210002) */ + 1, /* 33453 (210003) */ + 1, /* 33454 (210004) */ + 1, /* 33455 (210005) */ + 1, /* 33456 (210006) */ + 1, /* 33457 (210007) */ + 1, /* 33458 (210008) */ + 1, /* 33459 (210009) */ + 1, /* 3345A (210010) */ + 1, /* 3345B (210011) */ + 1, /* 3345C (210012) */ + 1, /* 3345D (210013) */ + 1, /* 3345E (210014) */ + 1, /* 3345F (210015) */ + 1, /* 33460 (210016) */ + 1, /* 33461 (210017) */ + 1, /* 33462 (210018) */ + 1, /* 33463 (210019) */ + 1, /* 33464 (210020) */ + 1, /* 33465 (210021) */ + 1, /* 33466 (210022) */ + 1, /* 33467 (210023) */ + 1, /* 33468 (210024) */ + 1, /* 33469 (210025) */ + 1, /* 3346A (210026) */ + 1, /* 3346B (210027) */ + 1, /* 3346C (210028) */ + 1, /* 3346D (210029) */ + 1, /* 3346E (210030) */ + 1, /* 3346F (210031) */ + 1, /* 33470 (210032) */ + 1, /* 33471 (210033) */ + 1, /* 33472 (210034) */ + 1, /* 33473 (210035) */ + 1, /* 33474 (210036) */ + 1, /* 33475 (210037) */ + 1, /* 33476 (210038) */ + 1, /* 33477 (210039) */ + 1, /* 33478 (210040) */ + 1, /* 33479 (210041) */ }; /* From: E0001; To: E01EF */ @@ -184130,6093 +188662,6122 @@ static const uint16_t lxb_unicode_table_map_1114109_1114110[1] = }; -static const lxb_unicode_entry_t lxb_unicode_entries[6085] = +static const lxb_unicode_entry_t lxb_unicode_entries[6114] = { {0, 0}, - {0, 2}, - {4898, 2}, - {4917, 2}, - {5037, 2}, - {4936, 181}, - {5109, 171}, - {4880, 7}, - {5117, 101}, - {4981, 551}, - {5057, 184}, - {5073, 286}, - {4885, 29}, - {4828, 482}, - {5006, 68}, - {5087, 320}, - {4947, 268}, - {5027, 134}, - {4961, 131}, - {4833, 485}, - {4956, 307}, - {0, 191}, - {4980, 37}, - {5042, 544}, - {4877, 198}, - {4950, 57}, - {5095, 107}, - {4859, 44}, - {5053, 162}, - {5039, 120}, - {5065, 5}, - {5016, 2}, - {4970, 2}, - {4840, 2}, - {4957, 2}, - {5002, 2}, - {5041, 2}, - {4995, 2}, - {5059, 2}, - {4983, 2}, - {4899, 2}, - {4962, 2}, - {5101, 2}, - {4901, 2}, - {4978, 2}, - {4997, 2}, - {5046, 2}, - {5072, 2}, - {4987, 2}, - {4914, 2}, - {4974, 2}, - {5105, 2}, - {4913, 2}, - {4986, 2}, - {4949, 2}, - {4900, 2}, {0, 1}, - {1410, 722}, - {3338, 445}, - {1487, 181}, - {0, 13}, - {1069, 444}, - {3139, 731}, - {2328, 432}, - {823, 176}, - {2025, 291}, - {1817, 3783}, - {1733, 222}, - {142, 485}, - {3907, 3840}, - {487, 2642}, - {4501, 2018}, - {2403, 2058}, - {3068, 1844}, - {2696, 2271}, - {2761, 792}, - {3951, 1047}, - {4504, 2692}, - {4865, 487}, - {3694, 3656}, - {3689, 3913}, - {2780, 3113}, - {1519, 3848}, - {3327, 3661}, - {3556, 325}, - {3627, 2809}, - {4265, 3050}, - {3692, 2132}, - {0, 16}, - {4525, 1832}, - {1592, 2219}, - {696, 3128}, - {4180, 2301}, - {1257, 2525}, - {888, 2038}, - {4984, 2826}, - {1589, 172}, - {3513, 2206}, - {1908, 560}, - {1853, 463}, - {377, 1573}, - {0, 404}, - {0, 22}, - {811, 2}, - {729, 2}, - {2410, 2}, - {1844, 2}, - {3506, 2}, - {2132, 2}, - {4965, 2}, - {1932, 2}, - {3125, 2}, - {1299, 2}, - {1680, 2}, - {1622, 2}, - {352, 2}, - {957, 2}, - {3737, 2}, - {675, 2}, - {3547, 2}, - {2309, 2}, - {3008, 2}, - {2784, 2}, - {2710, 2}, - {4062, 2}, - {4954, 2}, - {3777, 2}, - {3652, 2}, - {2778, 2}, - {1497, 2}, - {3357, 2}, - {3637, 2}, - {4280, 2373}, - {3650, 2}, - {873, 951}, - {4541, 2}, - {3562, 1011}, - {4598, 2}, - {1111, 1068}, - {4006, 2}, - {3653, 3135}, - {3727, 2}, - {2940, 2119}, - {3557, 2}, - {1609, 3265}, - {2649, 2}, - {3496, 3664}, - {4648, 2}, - {0, 3703}, - {3852, 540}, - {3791, 2}, - {2878, 2902}, - {3494, 2}, - {1834, 464}, - {2568, 2}, - {4123, 3440}, - {2871, 2}, - {1683, 3477}, - {3468, 2}, - {3121, 857}, - {3169, 2}, - {4643, 2646}, - {4121, 2}, - {1049, 771}, - {4377, 2}, - {329, 2886}, - {1326, 2}, - {2509, 2843}, - {1915, 2}, - {0, 1693}, - {971, 3646}, - {334, 2}, - {4296, 1507}, - {1252, 2}, - {651, 2736}, - {1631, 2}, - {2827, 2790}, - {2216, 2}, - {1991, 1481}, - {1255, 748}, - {653, 748}, - {4568, 1710}, - {974, 2}, - {2739, 3492}, - {3722, 2}, - {4267, 3223}, - {4603, 2}, - {4519, 2377}, - {3331, 2}, - {2738, 1685}, - {1948, 2}, - {3623, 1340}, - {2532, 1340}, - {0, 233}, - {4425, 1705}, - {4642, 2}, - {4726, 652}, - {3123, 2}, - {2530, 3309}, - {2104, 2}, - {3396, 3369}, - {0, 1831}, - {2411, 1754}, - {3059, 2}, - {2705, 2563}, - {2767, 2}, - {3956, 690}, - {4514, 2}, - {0, 571}, - {852, 3172}, - {1994, 2}, - {3149, 3139}, - {1408, 2}, - {1627, 1066}, - {1704, 2}, - {278, 2223}, - {856, 2}, - {3679, 1132}, - {610, 2}, - {627, 2501}, - {1619, 2}, - {2797, 2566}, - {2246, 2}, - {2004, 1753}, - {1925, 2}, - {1263, 3407}, - {626, 2}, - {0, 1952}, - {2007, 1967}, - {877, 2}, - {4397, 1916}, - {215, 2}, - {629, 2641}, - {547, 2}, - {1349, 827}, - {2002, 2}, - {2759, 2479}, - {1648, 2}, - {2085, 2983}, - {808, 2}, - {4335, 2946}, - {136, 2}, - {384, 1296}, - {471, 2}, - {1418, 3760}, - {2081, 946}, - {2522, 2}, - {1721, 882}, - {179, 2}, - {1421, 3166}, - {2707, 2}, - {2035, 544}, - {0, 3052}, - {0, 3127}, - {0, 2153}, - {0, 2659}, - {0, 2957}, - {0, 395}, - {0, 43}, - {0, 2763}, - {0, 298}, - {0, 1041}, - {0, 133}, - {0, 1286}, - {0, 374}, - {0, 2071}, - {0, 1218}, - {0, 175}, - {0, 3866}, - {0, 1950}, - {0, 1803}, - {0, 895}, - {3300, 1192}, - {2786, 2}, - {0, 2276}, - {0, 3723}, - {0, 2097}, - {0, 3861}, - {0, 3027}, - {0, 369}, - {0, 987}, - {3609, 2267}, - {2444, 2}, - {0, 1772}, - {0, 973}, - {0, 2541}, - {0, 1300}, - {5012, 1646}, - {0, 1798}, - {0, 2457}, - {2844, 668}, - {2204, 668}, - {1979, 668}, - {1900, 1788}, - {1228, 1788}, - {672, 1788}, - {4620, 2880}, - {955, 2880}, - {1978, 2880}, - {903, 2337}, - {4376, 2}, - {252, 3479}, - {676, 2}, - {594, 2678}, - {1391, 2}, - {1976, 1449}, - {2733, 2}, - {1685, 1533}, - {2042, 2}, - {831, 1493}, - {4309, 2}, - {174, 132}, - {445, 2}, - {513, 1331}, - {1463, 2}, - {2487, 3722}, - {1763, 2}, - {106, 709}, - {1469, 2}, - {2647, 790}, - {2097, 2}, - {0, 3315}, - {832, 1853}, - {105, 2}, - {4428, 3481}, - {1114, 2}, - {3968, 1585}, - {3050, 2}, - {1867, 1489}, - {3585, 2}, - {3209, 2786}, - {3287, 2}, - {4487, 2}, - {3971, 2818}, - {1177, 2818}, - {4226, 2818}, - {2122, 3421}, - {772, 2}, - {0, 3483}, - {0, 3269}, - {503, 845}, - {439, 2}, - {1535, 2629}, - {2123, 2}, - {2562, 797}, - {1831, 2}, - {4720, 2778}, - {3432, 2}, - {2214, 2730}, - {2835, 2}, - {2610, 1591}, - {2535, 2}, - {4203, 3569}, - {4719, 2}, - {484, 1640}, - {3899, 2}, - {4518, 1001}, - {3591, 2}, - {2418, 1063}, - {3047, 2}, - {2674, 3144}, - {2742, 2}, - {3941, 2109}, - {4515, 2}, - {612, 3271}, - {3681, 2}, - {2498, 661}, - {3918, 2}, - {319, 572}, - {4461, 2}, - {4652, 3679}, - {4735, 2}, - {3129, 1679}, - {2502, 2}, - {2020, 3527}, - {3401, 2}, - {0, 3088}, - {4017, 3059}, - {1107, 2}, - {0, 1422}, - {0, 649}, - {0, 1240}, - {2119, 3620}, - {744, 2}, - {4229, 3676}, - {86, 2}, - {542, 578}, - {460, 2}, - {1558, 2852}, - {2116, 2}, - {2592, 522}, - {1875, 2}, - {544, 477}, - {1737, 2}, - {3000, 418}, - {2317, 2}, - {0, 3270}, - {0, 2397}, - {0, 3425}, - {0, 1170}, - {0, 1393}, - {0, 1605}, - {0, 2230}, - {0, 1266}, - {0, 3865}, - {0, 301}, - {0, 3041}, - {0, 52}, - {0, 2353}, - {5103, 2}, - {4457, 29}, - {1067, 2598}, - {3932, 68}, - {3052, 37}, - {1802, 1532}, - {3636, 1267}, - {3276, 2762}, - {3354, 44}, - {4543, 120}, - {3140, 3571}, - {2329, 2307}, - {1147, 953}, - {2262, 2004}, - {3456, 1052}, - {1696, 742}, - {613, 2071}, - {1149, 268}, - {3943, 544}, - {281, 162}, - {4239, 2467}, - {4764, 2}, - {4773, 2}, - {4785, 2}, - {4774, 2}, - {4765, 2}, - {4793, 2}, - {4759, 2}, - {4767, 2}, - {4776, 2}, - {4758, 2}, - {2458, 1121}, - {3013, 868}, - {2734, 1891}, - {3935, 2159}, - {4760, 480}, - {4805, 2}, - {4779, 2}, - {0, 3508}, - {0, 3469}, - {2454, 874}, - {0, 2602}, - {3988, 2806}, - {3224, 530}, - {0, 3919}, - {4659, 1577}, - {1131, 383}, - {4145, 41}, - {3915, 1045}, - {3838, 1263}, - {2922, 1522}, - {1812, 201}, - {794, 1907}, - {2043, 710}, - {3219, 2}, - {4851, 59}, - {0, 106}, - {0, 215}, - {0, 173}, - {5107, 15}, - {0, 278}, - {5082, 155}, - {0, 72}, - {5125, 480}, - {0, 615}, - {0, 1324}, - {0, 291}, - {0, 205}, - {0, 64}, - {4854, 83}, - {0, 36}, - {4866, 240}, + {5003, 1}, + {4934, 1}, + {5123, 1}, + {5119, 196}, + {5000, 158}, + {5033, 48}, + {5008, 57}, + {4832, 154}, + {5012, 187}, + {4918, 169}, + {5130, 119}, + {4944, 167}, + {4883, 4}, + {5128, 163}, + {4991, 115}, + {5019, 55}, + {5014, 22}, + {4844, 157}, + {4987, 160}, + {0, 397}, + {5081, 54}, + {4904, 80}, + {4851, 139}, + {5075, 213}, + {5028, 76}, + {4996, 150}, + {4985, 212}, + {4869, 19}, + {4850, 67}, + {4843, 1}, + {4855, 1}, + {5029, 1}, + {5038, 1}, + {4990, 1}, + {5027, 1}, + {5085, 1}, + {5015, 1}, + {5084, 1}, + {4865, 1}, + {5031, 1}, + {5099, 1}, + {4984, 1}, + {4906, 1}, + {4964, 1}, + {4916, 1}, + {4926, 1}, + {4866, 1}, + {5080, 1}, + {4902, 1}, + {4859, 1}, + {4974, 1}, + {5107, 1}, + {5079, 1}, + {5093, 1}, + {0, 2}, + {1247, 291}, + {228, 2803}, + {1914, 196}, + {0, 20}, + {1462, 1967}, + {3575, 89}, + {4719, 21}, + {3297, 608}, + {1248, 726}, + {2754, 2344}, + {4654, 206}, + {2054, 157}, + {235, 1136}, + {1548, 3105}, + {2613, 1368}, + {3741, 1427}, + {2830, 2049}, + {4280, 1684}, + {2826, 2739}, + {618, 310}, + {4588, 2563}, + {4901, 1923}, + {833, 1842}, + {3470, 439}, + {2064, 3405}, + {4574, 366}, + {3134, 830}, + {4003, 78}, + {3130, 3842}, + {977, 1488}, + {3749, 3178}, + {0, 888}, + {498, 1031}, + {1206, 3698}, + {4372, 880}, + {2422, 3661}, + {982, 3366}, + {1849, 3891}, + {4969, 2786}, + {1500, 1185}, + {4192, 1378}, + {2949, 3288}, + {1951, 176}, + {3427, 3200}, + {0, 81}, + {0, 658}, + {37, 1}, + {2344, 1}, + {4649, 1}, + {386, 1}, + {2604, 1}, + {3700, 1}, + {5069, 1}, + {2127, 1}, + {4659, 1}, + {3344, 1}, + {4068, 1}, + {3348, 1}, + {722, 1}, + {3811, 1}, + {1877, 1}, + {580, 1}, + {4179, 1}, + {1568, 1}, + {563, 1}, + {2191, 1}, + {565, 1}, + {2879, 1}, + {5078, 1}, + {3354, 1}, + {1044, 1}, + {4254, 1}, + {2225, 1}, + {849, 1}, + {848, 1}, + {3236, 277}, + {1337, 1}, + {4010, 3695}, + {2820, 1}, + {4597, 737}, + {826, 1}, + {3486, 647}, + {4199, 1}, + {2901, 980}, + {4200, 1}, + {2216, 1733}, + {2622, 1}, + {446, 2243}, + {1727, 1}, + {1402, 227}, + {2902, 1}, + {0, 309}, + {825, 628}, + {1665, 1}, + {4146, 1428}, + {1104, 1}, + {3100, 2838}, + {4332, 1}, + {4580, 2985}, + {847, 1}, + {3449, 2920}, + {4257, 1}, + {2850, 2680}, + {4255, 1}, + {2165, 3785}, + {2618, 1}, + {370, 430}, + {1734, 1}, + {3060, 1720}, + {1572, 1}, + {4176, 1776}, + {2688, 1}, + {0, 2056}, + {134, 747}, + {4490, 1}, + {2408, 3191}, + {1237, 1}, + {192, 3700}, + {4125, 1}, + {1460, 3663}, + {667, 1}, + {2110, 3887}, + {2791, 1180}, + {2391, 1180}, + {4441, 1370}, + {3268, 1}, + {2635, 443}, + {1691, 1}, + {2789, 838}, + {4311, 1}, + {2790, 3851}, + {681, 1}, + {4607, 3176}, + {1995, 1}, + {808, 1018}, + {4150, 1018}, + {0, 1207}, + {3861, 3119}, + {3598, 1}, + {3862, 416}, + {1396, 1}, + {3305, 903}, + {1186, 1}, + {2479, 3541}, + {0, 1181}, + {1404, 3348}, + {409, 1}, + {2038, 3157}, + {412, 1}, + {3020, 2453}, + {2301, 1}, + {0, 1953}, + {3384, 1915}, + {1993, 1}, + {4517, 1863}, + {3207, 1}, + {3926, 2103}, + {3209, 1}, + {899, 851}, + {3662, 1}, + {1710, 3282}, + {424, 1}, + {2741, 2890}, + {1919, 1}, + {3881, 2955}, + {2980, 1}, + {4436, 2764}, + {2979, 1}, + {457, 3814}, + {4714, 1}, + {0, 465}, + {1532, 3516}, + {2912, 1}, + {275, 3447}, + {1887, 1}, + {933, 3265}, + {1888, 1}, + {3967, 2565}, + {1228, 1}, + {3324, 2086}, + {4348, 1}, + {4643, 3751}, + {935, 1}, + {3526, 3796}, + {4471, 1}, + {2911, 3620}, + {4472, 1}, + {1955, 2967}, + {2685, 648}, + {625, 1}, + {1837, 3349}, + {1473, 1}, + {2978, 2428}, + {190, 1}, + {1920, 80}, + {0, 663}, + {0, 248}, + {0, 3666}, + {0, 930}, + {0, 1596}, {0, 130}, - {0, 1260}, - {5085, 1418}, - {0, 78}, - {0, 287}, - {0, 216}, - {4864, 297}, - {3382, 908}, - {2084, 1009}, - {2516, 2}, - {3908, 2}, - {325, 2}, - {4450, 2}, - {4666, 2}, - {4910, 2}, - {4992, 2}, - {4850, 2}, - {4825, 2}, - {5068, 2}, - {5015, 2}, - {5051, 2}, - {4976, 2}, - {3706, 2}, - {2726, 2}, - {1545, 2}, - {3303, 2}, - {3534, 2}, - {0, 1620}, - {4254, 106}, - {3707, 72}, - {911, 1418}, - {4510, 1907}, - {3346, 1009}, - {4246, 78}, - {755, 36}, - {0, 3138}, - {0, 2117}, - {0, 1213}, - {0, 1279}, - {0, 1235}, - {0, 2998}, - {0, 12}, - {0, 3065}, - {0, 529}, - {0, 2386}, - {0, 3237}, - {0, 2589}, - {721, 615}, - {2390, 240}, - {1271, 130}, - {3734, 72}, - {3519, 15}, - {0, 370}, - {446, 130}, + {0, 2447}, + {0, 2030}, + {0, 1164}, + {0, 278}, + {0, 1651}, + {0, 2733}, + {0, 958}, + {0, 2020}, + {0, 788}, + {0, 752}, + {0, 3219}, + {0, 1281}, + {0, 2691}, + {0, 743}, + {2785, 3527}, + {2400, 1}, + {0, 1194}, + {0, 1977}, + {0, 1511}, + {0, 1469}, + {0, 2639}, + {0, 3390}, + {0, 279}, + {1813, 2608}, + {3831, 1}, + {0, 1258}, + {0, 677}, + {0, 2983}, + {0, 2378}, + {5076, 915}, + {0, 3555}, + {0, 3840}, + {1386, 42}, + {493, 42}, + {2000, 42}, + {490, 2124}, + {2957, 2124}, + {2285, 2124}, + {4318, 615}, + {3076, 615}, + {3737, 615}, + {494, 2490}, + {2609, 1}, + {3976, 1903}, + {3140, 1}, + {3977, 3089}, + {1885, 1}, + {3453, 2259}, + {724, 1}, + {2059, 2008}, + {2353, 1}, + {3139, 3079}, + {1172, 1}, + {1961, 1245}, + {495, 1}, + {1964, 2491}, + {4470, 1}, + {2812, 3462}, + {4000, 1}, + {3767, 3121}, + {491, 1}, + {2624, 3170}, + {3933, 1}, + {0, 3416}, + {1925, 2308}, + {3480, 1}, + {795, 1779}, + {2045, 1}, + {3294, 470}, + {2497, 1}, + {4427, 413}, + {3557, 1}, + {3890, 26}, + {3559, 1}, + {1122, 1}, + {4139, 1061}, + {1484, 1061}, + {354, 1061}, + {2529, 3142}, + {1662, 1}, + {0, 3211}, + {0, 3900}, + {4196, 3393}, + {2895, 1}, + {536, 2330}, + {4511, 1}, + {2034, 1818}, + {771, 1}, + {335, 1137}, + {4148, 1}, + {1599, 1217}, + {534, 1}, + {2219, 895}, + {535, 1}, + {2907, 2188}, + {2484, 1}, + {4402, 2652}, + {3300, 1}, + {1695, 3350}, + {2647, 1}, + {471, 3402}, + {1369, 1}, + {1130, 3216}, + {1372, 1}, + {3887, 2510}, + {802, 1}, + {3397, 2015}, + {4619, 1}, + {2738, 3867}, + {1917, 1}, + {3875, 3927}, + {2974, 1}, + {4434, 3690}, + {2975, 1}, + {462, 3097}, + {4720, 1}, + {2084, 1699}, + {1006, 1}, + {0, 1238}, + {2375, 1323}, + {1017, 1}, + {0, 1580}, + {0, 106}, + {0, 3602}, + {97, 2667}, + {4044, 1}, + {1412, 2605}, + {417, 1}, + {2043, 2367}, + {415, 1}, + {3017, 3461}, + {2294, 1}, + {4216, 1121}, + {3212, 1}, + {3692, 3776}, + {402, 1}, + {2545, 3821}, + {3995, 1}, + {0, 3542}, + {0, 616}, + {0, 3563}, + {0, 3245}, + {0, 342}, + {0, 3935}, {0, 1725}, - {0, 3101}, - {0, 2432}, - {0, 1280}, - {3726, 3302}, - {3253, 1586}, - {0, 2680}, - {3927, 2204}, - {0, 591}, - {0, 3473}, - {4919, 100}, - {4435, 2888}, - {0, 702}, - {0, 1593}, - {0, 3502}, - {0, 1283}, - {355, 2429}, - {1048, 1974}, - {1539, 249}, - {0, 1784}, - {4836, 319}, - {0, 1364}, - {0, 1146}, - {4955, 2411}, - {0, 1104}, - {4963, 1084}, - {4857, 584}, - {5075, 1661}, - {4826, 2130}, - {187, 433}, - {4903, 1462}, - {0, 2340}, - {0, 1814}, - {0, 516}, - {5076, 1115}, - {0, 170}, - {0, 2392}, - {0, 636}, - {0, 203}, - {5000, 2047}, - {0, 1696}, - {0, 316}, - {0, 1906}, - {5119, 142}, - {0, 1400}, - {0, 475}, - {0, 2535}, - {4930, 425}, - {0, 1665}, - {4928, 2738}, - {0, 2665}, - {0, 1166}, - {4835, 2}, - {5058, 2}, - {4938, 2}, - {5040, 2}, - {4939, 2}, - {4863, 2}, - {2093, 2}, - {4998, 2}, - {4891, 2}, - {5044, 2}, - {5115, 2}, - {4929, 2}, - {4991, 2}, - {4090, 2}, - {3488, 2}, - {3861, 2}, - {4922, 2}, - {1799, 2}, - {3630, 2}, - {2526, 2}, - {4747, 2}, - {0, 1787}, - {0, 1509}, + {0, 2214}, + {0, 1764}, + {0, 2042}, + {0, 763}, + {0, 3183}, + {0, 2975}, + {4874, 1}, + {3985, 119}, + {2875, 2984}, + {1866, 4}, + {2766, 54}, + {638, 382}, + {1504, 863}, + {1265, 83}, + {1503, 150}, + {3747, 19}, + {2056, 1179}, + {712, 3017}, + {1830, 2942}, + {2674, 1986}, + {578, 2996}, + {1550, 2420}, + {3712, 2020}, + {945, 115}, + {3635, 80}, + {4651, 212}, + {4479, 203}, + {4762, 1}, + {4774, 1}, + {4791, 1}, + {4776, 1}, + {4771, 1}, + {4797, 1}, + {4765, 1}, + {4760, 1}, + {4775, 1}, + {4767, 1}, + {4363, 3595}, + {3619, 3523}, + {3618, 283}, + {1060, 2747}, + {4761, 369}, + {4779, 1}, + {4780, 1}, + {0, 2128}, + {0, 2182}, + {2610, 1891}, + {0, 1216}, + {2756, 2840}, + {4485, 2411}, + {0, 1228}, + {2476, 2246}, + {4450, 1305}, + {3562, 2184}, + {3866, 1569}, + {3564, 2212}, + {1116, 137}, + {1467, 1944}, + {772, 1919}, + {4512, 71}, + {1986, 1}, + {4837, 254}, + {0, 341}, + {0, 583}, + {0, 27}, + {4957, 6}, + {0, 112}, + {4917, 927}, + {0, 94}, + {5122, 369}, + {0, 533}, + {0, 186}, + {0, 726}, + {0, 1575}, + {0, 484}, + {5048, 2239}, + {0, 15}, + {5129, 351}, + {0, 123}, + {0, 887}, + {4888, 314}, + {0, 697}, + {0, 258}, + {0, 807}, + {4942, 63}, + {1397, 3518}, + {55, 1606}, + {475, 1}, + {3779, 1}, + {1699, 1}, + {67, 1}, + {2322, 1}, + {4961, 1}, + {4884, 1}, + {5118, 1}, + {5010, 1}, + {5127, 1}, + {5001, 1}, + {5057, 1}, + {4992, 1}, + {1868, 1}, + {2775, 1}, + {608, 1}, + {1515, 1}, + {1272, 1}, {0, 2913}, - {0, 3530}, + {3745, 341}, + {991, 94}, + {3520, 314}, + {4743, 1919}, + {4447, 1606}, + {1291, 697}, + {3307, 15}, + {0, 3799}, + {0, 2783}, + {0, 1350}, + {0, 1012}, + {0, 946}, + {0, 689}, + {0, 1968}, + {0, 2472}, + {0, 3209}, + {0, 1754}, {0, 1825}, - {0, 2051}, - {0, 3531}, - {0, 2720}, - {0, 3756}, - {0, 2080}, - {4846, 2543}, - {4887, 2}, - {1902, 160}, - {654, 2}, - {0, 1338}, - {0, 518}, - {0, 2508}, - {0, 976}, - {0, 2727}, - {0, 2916}, - {0, 3742}, - {0, 2716}, - {0, 763}, - {0, 3544}, - {0, 2040}, - {0, 1006}, - {0, 1804}, - {0, 3617}, - {0, 2574}, - {0, 271}, - {0, 1386}, - {0, 573}, - {0, 2667}, - {0, 3890}, - {0, 1972}, - {0, 926}, - {0, 2202}, - {0, 3873}, - {0, 2154}, - {0, 1770}, - {0, 691}, - {0, 2017}, - {0, 3798}, - {0, 2950}, - {0, 671}, - {0, 1781}, - {0, 971}, - {2752, 3340}, - {4499, 2}, - {0, 1404}, - {0, 1595}, - {0, 2891}, - {0, 3098}, - {0, 2520}, - {0, 334}, - {2362, 2057}, - {178, 2}, - {3521, 1051}, - {4055, 2}, - {0, 1846}, - {3946, 3551}, - {2732, 2}, - {5123, 56}, - {5055, 2}, - {2149, 2483}, - {434, 2}, - {3289, 3366}, - {3699, 2}, - {2571, 2274}, - {3510, 2}, - {0, 187}, - {2811, 2766}, - {1917, 2}, - {2050, 1060}, - {507, 2}, - {3208, 2110}, - {3755, 2}, - {5029, 794}, - {4944, 2}, - {3680, 2740}, - {3021, 2}, - {3867, 3008}, - {1244, 2}, - {1087, 744}, - {1454, 2}, - {4553, 1834}, - {2971, 2}, - {4173, 1044}, - {4227, 2}, - {3044, 2928}, - {3656, 2}, - {0, 2074}, - {492, 3609}, - {2030, 2}, - {0, 2784}, - {0, 3817}, - {0, 2048}, - {0, 303}, - {0, 2682}, - {0, 3503}, - {0, 2435}, - {0, 252}, - {0, 1886}, - {0, 3852}, - {0, 3051}, - {0, 3654}, - {0, 1992}, - {0, 3526}, - {0, 1417}, - {0, 322}, - {0, 1716}, - {0, 3436}, - {0, 2690}, - {0, 292}, - {0, 1433}, - {0, 623}, - {0, 2584}, - {0, 3458}, - {0, 1361}, - {0, 217}, - {0, 1637}, + {0, 216}, + {4528, 533}, + {590, 351}, + {604, 123}, + {2818, 94}, + {1998, 6}, + {0, 491}, + {3715, 123}, + {0, 2818}, + {0, 2771}, + {0, 1812}, + {0, 2401}, + {4226, 1897}, + {1399, 3386}, + {0, 315}, + {1630, 3136}, + {0, 1916}, + {0, 75}, + {5067, 660}, + {2418, 2637}, + {0, 1674}, + {0, 2977}, + {0, 1562}, + {0, 3659}, + {284, 1060}, + {149, 3884}, + {4276, 1543}, + {0, 2598}, + {5007, 402}, {0, 713}, - {0, 3255}, - {0, 1876}, - {0, 1635}, - {0, 2487}, - {0, 539}, - {0, 2265}, - {0, 1363}, - {0, 2805}, - {0, 3279}, - {0, 1000}, - {0, 893}, - {0, 2434}, - {0, 3102}, - {0, 2052}, - {0, 3916}, - {0, 1842}, - {0, 2893}, - {0, 1469}, - {0, 863}, - {0, 3384}, - {0, 2342}, - {0, 842}, - {0, 574}, - {0, 3313}, - {0, 1677}, - {0, 3143}, - {0, 270}, - {0, 3655}, - {0, 2451}, - {0, 2014}, - {0, 2618}, - {0, 1095}, - {0, 210}, - {0, 3154}, - {0, 1373}, - {0, 3359}, - {0, 548}, - {1811, 2094}, - {4784, 2}, - {4791, 2}, - {4813, 2}, - {4795, 2}, - {4814, 2}, - {4794, 2}, - {4817, 2}, - {4800, 2}, - {4786, 2}, - {4823, 2}, - {4775, 2}, - {4796, 2}, - {4811, 2}, - {4798, 2}, - {4812, 2}, - {4799, 2}, - {4821, 2}, - {4788, 2}, - {4973, 2}, - {5031, 2}, - {5084, 2}, - {5110, 2}, - {4948, 2}, - {5030, 2}, - {4911, 2}, - {5062, 2}, - {4844, 2}, - {5092, 2}, - {4845, 2}, - {5024, 2}, - {4856, 2}, - {4888, 2}, - {5081, 2}, - {4977, 2}, - {5033, 2}, - {4909, 2}, - {4953, 2}, - {5120, 2}, - {4883, 2}, - {5080, 2}, - {5097, 2}, - {4787, 2}, - {4804, 2}, - {4801, 2}, - {2185, 2}, - {2556, 2}, - {2718, 2}, - {4625, 2}, - {1439, 2}, - {5089, 2}, - {4862, 2}, - {5122, 2}, - {4797, 2}, - {4778, 2}, - {4820, 2}, - {4815, 2}, - {4803, 2}, - {4822, 2}, - {4542, 3463}, - {1526, 1487}, - {777, 2270}, - {1958, 4}, - {4135, 2}, - {5067, 2}, - {2021, 2}, - {4958, 2}, - {1600, 2}, - {5049, 2}, - {4818, 2}, - {4842, 2}, - {4941, 2}, - {5023, 2}, - {5116, 2}, - {5001, 2}, - {4906, 2}, - {5003, 2}, - {1521, 2}, - {5096, 2}, - {4969, 2}, - {5129, 2}, - {2963, 2}, - {4892, 2}, - {357, 2}, - {4763, 2}, - {4783, 2}, - {3252, 239}, - {4033, 3162}, - {2099, 1345}, - {165, 3357}, - {1323, 532}, - {2453, 3826}, - {59, 2638}, - {1876, 1797}, - {4940, 2}, - {4843, 2}, - {5114, 2}, - {4782, 2}, - {4761, 2}, - {4852, 2}, - {3107, 2}, - {4158, 2}, - {1161, 677}, - {1703, 3043}, - {941, 2460}, - {4905, 2}, - {4982, 2}, - {5118, 2}, - {5018, 2}, - {4896, 2}, - {1458, 3621}, - {2494, 2582}, - {4868, 2}, - {2500, 49}, - {2648, 1715}, - {2370, 3896}, - {3380, 2450}, - {5022, 2}, - {4886, 2}, - {4996, 2}, - {994, 2}, - {1688, 2}, - {1839, 2}, - {419, 2464}, - {1503, 1970}, - {4890, 2}, - {1778, 2}, - {5060, 2}, - {4873, 2}, - {1547, 2}, - {433, 2}, - {4193, 2}, - {5034, 2}, - {2538, 2}, - {4806, 2}, - {4762, 2}, - {4841, 2}, - {4018, 2}, - {4912, 2}, - {1233, 2}, - {1080, 2}, - {4616, 2}, - {2965, 2}, - {4920, 2}, - {5011, 2}, - {3073, 2}, - {4279, 2}, - {1809, 2}, - {4771, 2}, - {4943, 2}, - {1186, 2}, - {2369, 2}, - {814, 2}, - {978, 2}, - {465, 262}, - {4808, 2}, - {4792, 2}, - {2543, 2516}, - {4802, 2}, - {4781, 2}, - {2240, 1968}, - {652, 3789}, - {3900, 2131}, - {4777, 2}, - {5104, 2}, - {4942, 2}, - {3371, 2810}, - {4988, 2}, - {4736, 3628}, - {4990, 2}, - {4391, 1704}, - {5013, 2}, - {1217, 2857}, - {5045, 2}, - {226, 1427}, - {3390, 2025}, - {4819, 2}, - {4789, 2}, - {3477, 3396}, - {4807, 2}, - {3917, 3912}, - {3415, 2619}, - {4472, 1829}, - {3628, 2448}, - {1522, 879}, - {3435, 2114}, - {4975, 2}, - {5112, 2}, - {1747, 1603}, - {4921, 2}, - {2552, 1013}, - {5020, 2}, - {3213, 2897}, - {4993, 2}, - {2425, 1728}, - {4918, 2}, - {4332, 3713}, - {4967, 2}, - {5028, 2}, - {2644, 2029}, - {4855, 2}, - {2889, 2}, - {0, 93}, - {0, 3578}, - {0, 2321}, - {0, 2136}, - {0, 2504}, - {0, 958}, - {0, 27}, - {0, 3234}, - {0, 1238}, - {0, 3467}, - {0, 393}, - {0, 3746}, - {0, 2537}, - {0, 1917}, - {0, 1510}, - {0, 3765}, - {0, 3156}, - {0, 206}, - {0, 2261}, - {0, 556}, - {0, 3363}, - {0, 997}, - {0, 1624}, - {0, 2804}, - {0, 804}, - {0, 2382}, - {0, 3058}, - {0, 2024}, - {0, 3859}, - {0, 1756}, - {0, 2819}, - {0, 1388}, - {0, 915}, - {0, 3323}, - {0, 1439}, - {0, 3708}, - {0, 3509}, - {0, 454}, - {0, 143}, - {0, 1630}, - {2868, 368}, - {0, 1429}, - {0, 2308}, - {0, 313}, - {0, 2560}, - {0, 1706}, - {0, 3077}, - {4927, 2}, - {2525, 2}, - {4926, 2}, - {396, 2}, - {5005, 2}, - {4400, 2}, - {5099, 2}, - {879, 2}, - {5083, 2}, - {35, 2}, - {4972, 2}, - {4536, 2}, - {4952, 2}, - {2169, 2}, - {5093, 2}, - {615, 2}, - {5130, 2}, - {4861, 2}, - {2741, 2}, - {3385, 2}, - {4946, 2}, - {2822, 2}, - {0, 1115}, - {0, 1885}, - {0, 1217}, - {0, 3464}, - {0, 411}, - {0, 2604}, - {0, 3}, - {0, 3243}, - {0, 844}, - {0, 1447}, - {0, 2919}, - {0, 308}, - {0, 2885}, - {0, 2676}, - {0, 1558}, - {0, 368}, - {0, 1305}, - {0, 2437}, - {0, 1987}, - {0, 277}, - {0, 3790}, - {0, 616}, - {0, 3104}, - {0, 2440}, - {0, 1314}, - {0, 3288}, - {0, 1561}, - {0, 2675}, - {0, 2194}, + {0, 488}, + {4915, 1235}, + {0, 1229}, + {4860, 1301}, + {5117, 266}, + {4941, 2173}, + {4968, 633}, + {2416, 2937}, + {5068, 848}, + {0, 925}, + {0, 2449}, + {0, 1762}, + {4847, 2058}, + {0, 1143}, + {0, 612}, + {0, 652}, + {0, 876}, + {5002, 1317}, + {0, 681}, + {0, 1774}, + {0, 417}, + {5049, 2208}, + {0, 890}, + {0, 2480}, + {0, 1421}, + {5066, 1612}, + {0, 928}, + {4952, 1602}, + {0, 476}, + {0, 2004}, + {4933, 1}, + {4838, 1}, + {4909, 1}, + {4946, 1}, + {5131, 1}, + {5102, 1}, + {2680, 1}, + {4830, 1}, + {5036, 1}, + {5020, 1}, + {4882, 1}, + {5043, 1}, + {4963, 1}, + {1000, 1}, + {2707, 1}, + {3048, 1}, + {4970, 1}, + {1033, 1}, + {1432, 1}, + {1561, 1}, + {3338, 1}, + {0, 1138}, + {0, 184}, + {0, 2527}, + {0, 3804}, + {0, 2542}, + {0, 61}, + {0, 2741}, + {0, 2876}, + {0, 3312}, + {0, 2851}, + {4929, 813}, + {4947, 1}, + {3349, 2394}, + {1932, 1}, + {0, 2337}, + {0, 3623}, + {0, 2294}, + {0, 3387}, + {0, 2063}, + {0, 3545}, + {0, 3389}, + {0, 2959}, + {0, 2232}, + {0, 3732}, + {0, 1397}, + {0, 1254}, + {0, 655}, + {0, 1283}, + {0, 2577}, + {0, 1204}, + {0, 1015}, + {0, 1556}, + {0, 1045}, + {0, 622}, + {0, 3046}, + {0, 2640}, + {0, 3345}, + {0, 1087}, + {0, 1080}, + {0, 1952}, + {0, 2143}, {0, 562}, - {0, 3589}, - {0, 3856}, - {0, 1643}, - {0, 1882}, - {0, 2745}, - {0, 807}, - {0, 2936}, - {0, 2127}, - {0, 2572}, - {0, 3881}, - {0, 76}, - {0, 1735}, - {0, 3887}, - {0, 3277}, - {0, 194}, - {0, 2400}, - {0, 1147}, - {0, 1632}, - {0, 2774}, - {4195, 181}, - {2536, 487}, - {3306, 171}, - {1671, 101}, - {889, 551}, - {2872, 298}, - {4651, 286}, - {3593, 29}, - {2472, 482}, - {4714, 68}, - {3084, 320}, - {1355, 268}, - {3498, 134}, - {3638, 131}, - {2407, 485}, - {459, 649}, - {1666, 307}, - {2033, 37}, - {468, 198}, - {1432, 57}, - {3058, 44}, - {1970, 2696}, - {572, 1743}, - {3194, 3552}, - {3812, 171}, - {2787, 101}, - {3425, 551}, - {3882, 1041}, - {2850, 133}, - {2960, 1645}, - {2044, 286}, - {659, 320}, - {3085, 134}, - {3886, 1831}, - {3443, 2659}, - {3806, 3838}, - {2867, 197}, - {4073, 307}, - {792, 198}, - {931, 57}, - {1583, 3601}, - {4458, 1950}, - {2484, 107}, - {3760, 1158}, - {4661, 106}, - {2631, 215}, - {4120, 173}, - {486, 78}, - {4324, 287}, - {4443, 482}, - {2838, 37}, - {919, 57}, - {1303, 107}, - {125, 106}, - {1138, 215}, - {1373, 240}, - {557, 78}, - {4611, 287}, - {4132, 516}, - {2869, 2243}, - {2175, 7}, - {2542, 2746}, - {2709, 16}, - {1433, 184}, - {830, 1353}, - {1903, 673}, - {1815, 1796}, - {712, 175}, - {2406, 1218}, - {3257, 376}, - {1739, 3194}, - {1584, 2673}, - {950, 1144}, - {2851, 3016}, - {4707, 894}, - {3573, 3615}, - {2622, 196}, - {4656, 1803}, - {3192, 2657}, - {4263, 85}, - {408, 895}, - {576, 2463}, - {1965, 1657}, - {4134, 3027}, - {3466, 1409}, - {4548, 2230}, - {3903, 1772}, - {3403, 149}, - {4463, 973}, - {3296, 1266}, - {1879, 5}, - {1706, 3320}, - {913, 565}, - {2899, 1646}, - {4678, 72}, - {4810, 2}, - {4790, 2}, - {269, 3883}, - {4630, 2}, - {4482, 1983}, - {2727, 2}, - {1038, 922}, - {1791, 2}, - {601, 2195}, - {820, 2}, - {1776, 3849}, - {172, 2}, - {3937, 2581}, - {746, 2}, - {884, 254}, - {1677, 2}, - {4347, 1397}, - {2598, 2}, - {3666, 588}, - {4692, 2}, - {2503, 2695}, - {4154, 2}, - {4449, 3460}, - {643, 2}, - {490, 1359}, - {2032, 2}, - {4067, 238}, - {3528, 2}, - {4752, 1644}, - {3712, 2}, - {3620, 3491}, - {4275, 2}, - {3092, 2616}, - {1639, 2}, - {1777, 212}, - {851, 2}, - {2966, 1374}, - {4618, 2}, - {3384, 553}, - {2750, 2}, - {4498, 2647}, - {3318, 2}, - {1905, 3496}, - {2817, 2}, - {2956, 1445}, - {4305, 2}, - {1770, 288}, - {1076, 2}, - {2242, 1692}, - {1554, 2}, - {1041, 3428}, - {2165, 2}, - {2518, 3308}, - {2218, 2}, - {2361, 1689}, - {181, 2}, - {3523, 630}, - {4056, 2}, - {2799, 1446}, - {3295, 2}, - {3945, 3226}, - {2729, 2}, - {2892, 824}, - {1981, 2}, - {2150, 3038}, - {432, 2}, - {3288, 3869}, - {3697, 2}, - {2570, 2844}, - {3511, 2}, - {3741, 931}, - {2935, 2}, - {2812, 2413}, - {1916, 2}, - {2047, 633}, - {508, 2}, - {3211, 1741}, - {3758, 2}, - {2491, 364}, - {3580, 2}, - {3676, 2379}, - {3019, 2}, - {3868, 2685}, - {1241, 2}, - {1086, 300}, - {1457, 2}, - {4555, 1440}, - {2972, 2}, - {4174, 626}, - {4225, 2}, - {3042, 2587}, - {3655, 2}, - {4448, 1707}, - {644, 2}, - {491, 3293}, - {2031, 2}, - {4065, 2445}, - {3533, 2}, - {4750, 2979}, - {3713, 2}, - {3618, 1682}, - {4277, 2}, - {189, 747}, - {4557, 2}, - {4686, 3006}, - {2481, 2}, - {1240, 3812}, - {1563, 2}, - {524, 2777}, - {887, 2}, - {1701, 704}, - {248, 2}, - {4181, 1237}, - {967, 2}, - {813, 3352}, - {1760, 2}, - {4291, 2506}, - {2691, 2}, - {3865, 3159}, - {4486, 2}, - {2744, 1343}, - {3926, 2}, - {2550, 3639}, - {2195, 2}, - {2321, 2140}, - {133, 2}, - {3551, 1137}, - {4001, 2}, - {2840, 1936}, - {3333, 2}, - {3990, 3717}, - {2773, 2}, - {3873, 2802}, - {1238, 2}, - {1089, 1125}, - {1450, 2}, - {4562, 2155}, - {2980, 2}, - {4166, 855}, - {4220, 2}, - {3035, 2900}, - {3645, 2}, - {370, 3670}, - {4695, 2}, - {4572, 2201}, - {2658, 2}, - {1102, 1183}, - {1731, 2}, - {658, 1979}, - {748, 2}, - {1869, 3643}, - {61, 2}, - {4409, 2}, - {685, 2}, - {528, 2}, - {2090, 2}, - {4021, 935}, - {3559, 2979}, - {0, 3872}, - {4635, 580}, - {287, 2}, - {91, 2341}, - {2462, 2}, - {3685, 3225}, - {3351, 2}, - {4375, 2578}, - {4045, 2}, - {3226, 629}, - {4595, 2}, - {4701, 3106}, - {364, 2}, - {203, 890}, - {2379, 2}, - {3750, 1954}, - {3281, 2}, - {4424, 1153}, - {3944, 2}, - {3291, 3032}, - {4505, 2}, - {3097, 2869}, - {1635, 2}, - {1783, 1176}, - {847, 2}, - {2969, 2211}, - {4626, 2}, - {3376, 938}, - {2748, 2}, - {4493, 2828}, - {3316, 2}, - {2548, 1994}, - {2197, 2}, - {2324, 3879}, - {126, 2}, - {3546, 3084}, - {4007, 2}, - {2839, 3692}, - {3337, 2}, - {3985, 1887}, - {2775, 2}, - {2067, 494}, - {2961, 2}, - {2825, 2304}, - {4433, 2}, - {1644, 3171}, - {1231, 2}, - {2371, 2518}, - {1407, 2}, - {1184, 384}, - {2009, 2}, - {3372, 2049}, - {1333, 2}, - {1489, 3532}, - {1120, 2}, - {2687, 2721}, - {4340, 2}, - {3106, 3751}, - {3045, 2}, - {4233, 2076}, - {3607, 2}, - {1656, 2671}, - {3205, 2}, - {3358, 321}, - {3984, 2}, - {2130, 1415}, - {94, 2}, - {1372, 608}, - {2343, 2}, - {124, 2575}, - {1756, 2}, - {592, 3510}, - {4367, 2}, - {4245, 1435}, - {3031, 2}, - {759, 294}, - {1518, 2}, - {283, 1699}, - {1109, 2}, - {1444, 3426}, - {531, 2}, - {4091, 2613}, - {908, 2}, - {771, 219}, - {1877, 2}, - {4258, 1362}, - {2791, 2}, - {3805, 538}, - {4586, 2}, - {2659, 2660}, - {4035, 2}, - {0, 2366}, - {0, 541}, - {0, 1638}, - {894, 2}, - {511, 2}, - {2077, 2}, - {1094, 2}, - {985, 2}, - {4175, 2}, - {4009, 2}, - {3222, 2}, - {516, 3103}, - {2325, 733}, - {1242, 3705}, - {69, 347}, - {2457, 1898}, - {751, 2522}, - {916, 3215}, - {4081, 1926}, - {3931, 2}, - {3297, 2}, - {448, 2}, - {2399, 2}, - {1175, 2}, - {175, 2}, - {2298, 3447}, - {2569, 2137}, - {2736, 1372}, - {4491, 2260}, - {1543, 208}, - {718, 2494}, - {835, 2}, - {2358, 2}, - {1658, 2}, - {3202, 2}, - {3350, 2}, - {3989, 2}, - {2135, 2}, - {90, 2}, - {1375, 2596}, - {2339, 2139}, - {134, 647}, - {1750, 3534}, - {3615, 1776}, - {1540, 3150}, - {1395, 3761}, - {1180, 1103}, - {2573, 2}, - {4395, 2}, - {3282, 2}, - {2808, 2}, - {4431, 2}, - {3369, 2}, - {2014, 2}, - {2880, 2}, - {3027, 2565}, - {4230, 1708}, - {1846, 3406}, - {1016, 1425}, - {2264, 2310}, - {1464, 1847}, - {1116, 74}, - {2059, 3878}, - {1642, 2}, - {3090, 2}, - {3223, 2}, - {4004, 2}, - {2065, 2}, - {122, 2}, - {95, 3199}, - {1838, 1099}, - {645, 2224}, - {4447, 714}, - {4316, 438}, - {2984, 3445}, - {312, 2}, - {999, 2}, - {1517, 2}, - {381, 2}, - {4208, 2}, - {938, 2}, - {790, 2}, - {1729, 2}, - {2660, 2410}, - {4532, 2781}, - {3964, 1160}, - {3902, 2105}, - {3780, 2}, - {3563, 2}, - {152, 2}, - {2079, 2}, - {958, 2}, - {407, 2}, - {2110, 2}, - {1019, 2}, - {862, 989}, - {4136, 2472}, - {3987, 2715}, - {3353, 1931}, - {427, 3541}, - {2455, 2141}, - {1159, 2917}, - {156, 1502}, - {2326, 2}, - {805, 383}, - {933, 2}, - {4216, 1045}, - {4071, 2}, - {3277, 1263}, - {494, 2}, - {2383, 1522}, - {1225, 2}, - {42, 201}, - {2397, 2}, - {737, 1907}, - {2188, 2}, - {2554, 710}, - {1440, 1600}, - {838, 657}, - {1899, 161}, - {1820, 349}, - {717, 2251}, - {2412, 735}, - {1641, 1222}, - {3091, 3090}, - {3225, 1600}, - {4003, 657}, - {2064, 161}, - {138, 349}, - {1300, 2251}, - {2427, 735}, - {87, 1222}, - {1841, 3090}, - {3553, 1107}, - {1441, 2626}, - {1290, 1654}, - {1237, 1854}, - {2551, 3232}, - {4432, 86}, - {3271, 2334}, - {2929, 429}, - {4393, 1107}, - {3507, 2626}, - {1890, 1654}, - {2861, 1854}, - {2999, 3232}, - {4343, 86}, - {1746, 2334}, - {1117, 429}, - {2208, 1951}, - {1525, 1094}, - {1015, 1161}, - {2137, 2725}, - {3715, 3036}, - {998, 613}, - {1140, 888}, - {1345, 1691}, - {4654, 1951}, - {2876, 1094}, - {3958, 1161}, - {4446, 2725}, - {2849, 3036}, - {3884, 613}, - {2746, 888}, - {2435, 1691}, - {2278, 2}, - {258, 2}, - {3452, 909}, - {4117, 1871}, - {3015, 2183}, - {4191, 2}, - {2493, 195}, - {1549, 3040}, - {3579, 552}, - {3441, 819}, - {3793, 383}, - {2267, 1871}, - {546, 3422}, - {1848, 480}, - {1914, 3422}, - {692, 3073}, - {1308, 1250}, - {3298, 2839}, - {1874, 214}, - {1714, 1100}, - {2903, 2}, - {4682, 3566}, - {3597, 817}, - {2508, 1045}, - {4694, 2863}, - {3118, 1263}, - {3516, 214}, - {1473, 3696}, - {1332, 3498}, - {1261, 471}, - {2501, 2}, - {4470, 2}, - {3245, 2}, - {2887, 945}, - {3577, 2}, - {1550, 2}, - {1398, 2143}, - {1198, 2918}, - {2581, 1139}, - {4398, 1522}, - {2815, 2388}, - {4413, 3712}, - {3381, 413}, - {4219, 2}, - {458, 2}, - {607, 2}, - {2001, 2728}, - {4092, 2}, - {3495, 2}, - {4509, 2}, - {3875, 2}, - {3367, 3891}, - {4429, 81}, - {3717, 1113}, - {997, 1907}, - {1137, 2817}, - {1348, 1760}, - {4655, 1577}, - {2874, 1064}, - {2852, 1199}, - {3883, 1316}, - {881, 1215}, - {3938, 2}, - {3308, 546}, - {450, 2502}, - {2402, 201}, - {1202, 3155}, - {192, 710}, - {2350, 1316}, - {833, 176}, - {4480, 754}, - {272, 722}, - {2290, 722}, - {216, 722}, - {3687, 3362}, - {4022, 720}, - {402, 1}, - {1523, 1}, - {3143, 1}, - {1006, 2222}, - {2770, 281}, - {3173, 1680}, - {2986, 3063}, - {1423, 3695}, - {2702, 2703}, - {2028, 1058}, - {4053, 3079}, - {3518, 785}, - {3682, 1581}, - {2611, 50}, - {4353, 482}, - {4478, 30}, - {3416, 800}, - {4503, 167}, - {48, 1077}, - {251, 105}, - {2266, 637}, - {3792, 420}, - {3176, 362}, - {4235, 447}, - {4150, 755}, - {3105, 28}, - {4688, 131}, - {1051, 50}, - {3664, 222}, - {3800, 731}, - {3453, 432}, - {259, 30}, - {1955, 800}, - {740, 167}, - {668, 1077}, - {1936, 105}, - {1254, 637}, - {3925, 420}, - {760, 362}, - {900, 447}, - {1699, 755}, - {4370, 28}, - {3690, 181}, - {4711, 551}, - {2480, 485}, - {4184, 162}, - {3733, 1041}, - {1123, 29}, - {1268, 320}, - {1344, 268}, - {4725, 134}, - {2857, 131}, - {4031, 307}, - {4379, 544}, - {2885, 198}, - {3030, 1275}, - {1511, 1528}, - {374, 2859}, - {111, 7}, - {4386, 1539}, - {3057, 2812}, - {703, 705}, - {1533, 133}, - {1062, 2499}, - {522, 286}, - {71, 29}, - {85, 29}, - {3703, 1693}, - {431, 482}, - {415, 268}, - {632, 268}, - {582, 131}, - {1985, 667}, - {286, 307}, - {598, 191}, - {166, 37}, - {2782, 1651}, - {2393, 3846}, - {2248, 3236}, - {151, 5}, - {3069, 297}, - {1664, 320}, - {3177, 2692}, - {467, 171}, - {46, 551}, - {298, 551}, - {774, 184}, - {0, 1126}, - {426, 134}, - {616, 485}, - {3111, 1547}, - {3234, 1807}, - {4028, 2807}, - {2069, 700}, - {144, 482}, - {2449, 2486}, - {56, 36}, - {1866, 215}, - {635, 215}, - {74, 36}, - {4344, 716}, - {284, 101}, - {271, 101}, - {559, 68}, - {2762, 3779}, - {3970, 317}, - {1226, 3586}, - {3901, 1336}, - {3763, 2108}, - {3554, 3083}, - {115, 1070}, - {2060, 2849}, - {925, 1852}, - {404, 2319}, - {2139, 3556}, - {1017, 612}, - {868, 70}, - {4112, 2713}, - {3952, 2473}, - {3330, 1678}, - {375, 482}, - {2416, 521}, - {1146, 791}, - {112, 1769}, - {2330, 107}, - {786, 3851}, - {946, 1062}, - {4197, 140}, - {4050, 1048}, - {3256, 162}, - {477, 2073}, - {2347, 3394}, - {1218, 268}, - {5, 7}, - {2405, 101}, - {704, 134}, - {2202, 482}, - {2524, 521}, - {2699, 791}, - {4601, 1769}, - {1419, 107}, - {822, 3851}, - {1887, 1062}, - {1798, 140}, - {723, 1048}, - {2391, 162}, - {1604, 2073}, - {3108, 3394}, - {3233, 268}, - {4029, 7}, - {2070, 101}, - {139, 134}, - {0, 2420}, - {4412, 1333}, - {4837, 2}, - {4870, 2}, - {5021, 2}, - {3953, 2}, - {3328, 2}, - {1832, 2}, - {3940, 2}, - {2166, 2}, - {31, 2}, - {5090, 2}, - {5056, 2}, - {4834, 2}, - {4872, 2}, - {2257, 2}, - {5032, 2}, - {4415, 2}, - {4951, 2}, - {2344, 2}, - {5098, 2}, - {1829, 2}, - {4959, 2}, - {3161, 2}, - {339, 680}, - {1634, 3499}, - {3232, 694}, - {3109, 408}, - {4924, 2}, - {275, 2}, - {5063, 2}, - {4196, 2}, - {4985, 2}, - {2215, 2}, - {5108, 2}, - {209, 2}, - {4923, 2}, - {1430, 2}, - {4858, 2}, - {3439, 2}, - {5050, 2}, - {4935, 2}, - {2497, 2}, - {1258, 2}, - {1587, 2}, - {541, 2}, - {907, 2}, - {5061, 2}, - {4853, 2}, - {3732, 2}, - {1124, 2}, - {4931, 2}, - {5009, 2}, - {4723, 2}, - {2856, 2}, - {5121, 2}, - {4894, 2}, - {5111, 2}, - {4893, 2}, - {4159, 2}, - {3077, 2}, - {4904, 2}, - {5019, 2}, - {1096, 2}, - {247, 2}, - {5074, 2}, - {4831, 2}, - {1052, 2}, - {3662, 2}, - {4916, 2}, - {5086, 2}, - {4832, 2}, - {5007, 2}, - {4932, 2}, - {4933, 2}, - {1735, 2}, - {1974, 2}, - {566, 2}, - {1378, 2}, - {4838, 2}, - {5069, 2}, - {4875, 2}, - {5066, 2}, - {1340, 2}, - {678, 2}, - {4489, 2}, - {77, 2}, - {3080, 2}, - {4708, 2}, - {4300, 2}, - {537, 2}, - {267, 1271}, - {82, 1724}, - {3119, 222}, - {4188, 731}, - {1941, 432}, - {332, 30}, - {1475, 800}, - {2293, 167}, - {254, 1077}, - {1705, 105}, - {2939, 637}, - {2071, 1414}, - {1933, 2167}, - {680, 3000}, - {3110, 1162}, - {3916, 2782}, - {2679, 1960}, - {3463, 2409}, - {3787, 3630}, - {2888, 525}, - {2382, 3895}, - {2662, 1714}, - {2483, 1961}, - {4703, 2779}, - {1318, 880}, - {932, 2992}, - {2054, 2165}, - {1686, 2634}, - {912, 3828}, - {2280, 165}, - {2160, 526}, - {3017, 3064}, - {2866, 2390}, - {4352, 1228}, - {1673, 3241}, - {1129, 1497}, - {2434, 2591}, - {1309, 2142}, - {1267, 643}, - {1912, 3529}, - {2080, 3066}, - {2936, 663}, - {2802, 1}, - {4407, 1}, - {1608, 1}, - {1214, 1}, - {2354, 1}, - {1380, 1}, - {1193, 1}, - {1983, 1}, - {1115, 1}, - {3723, 1}, - {3856, 1}, - {3364, 1}, - {345, 1}, - {1886, 1}, - {827, 1}, - {588, 1}, - {1999, 1}, - {1174, 1}, - {469, 1}, - {4337, 1}, - {4464, 2247}, - {2853, 1056}, - {940, 746}, - {1328, 738}, - {162, 1411}, - {1162, 345}, - {1354, 1900}, - {579, 2528}, - {4716, 341}, - {337, 2997}, - {171, 2318}, - {2345, 472}, - {3730, 1138}, - {3260, 1713}, - {4417, 1571}, - {3922, 1747}, - {3305, 443}, - {4481, 2837}, - {834, 402}, - {3991, 3365}, - {4153, 2937}, - {3081, 279}, - {664, 2737}, - {2180, 1092}, - {1100, 3333}, - {242, 431}, - {2287, 181}, - {883, 171}, - {102, 7}, - {1249, 101}, - {1103, 551}, - {1462, 184}, - {4571, 286}, - {2988, 29}, - {4152, 482}, - {4231, 68}, - {3048, 320}, - {3660, 268}, - {2540, 134}, - {2179, 131}, - {2305, 485}, - {113, 307}, - {3541, 191}, - {163, 37}, - {2848, 544}, - {3326, 198}, - {3976, 57}, - {2764, 107}, - {1291, 44}, - {3421, 162}, - {3550, 120}, - {3767, 5}, - {2322, 181}, - {519, 171}, - {1572, 7}, - {2118, 101}, - {424, 551}, - {1506, 184}, - {3133, 286}, - {1585, 29}, - {1741, 482}, - {800, 68}, - {2998, 320}, - {4578, 268}, - {3436, 134}, - {2779, 131}, - {4517, 485}, - {3339, 307}, - {3491, 191}, - {1377, 37}, - {1529, 544}, - {1036, 198}, - {2793, 57}, - {4253, 107}, - {3189, 44}, - {3002, 162}, - {4327, 120}, - {3570, 5}, - {3413, 50}, - {1171, 3561}, - {4302, 999}, - {457, 1878}, - {4494, 354}, - {1274, 2749}, - {4867, 2}, - {0, 642}, - {0, 967}, - {0, 920}, + {0, 2106}, + {0, 451}, + {0, 2916}, + {0, 3032}, + {0, 2779}, + {504, 499}, + {4550, 1}, + {0, 2071}, + {0, 2947}, + {0, 2664}, + {0, 3112}, + {0, 3358}, + {0, 2921}, + {2560, 1453}, + {2273, 1}, + {1970, 1320}, + {3777, 1}, + {0, 740}, + {1049, 1348}, + {4076, 1}, + {5120, 68}, + {5064, 1}, + {4578, 1801}, + {123, 1}, + {503, 1909}, + {3369, 1}, + {3323, 280}, + {3145, 1}, + {0, 1946}, + {292, 1099}, + {3360, 1}, + {2563, 2614}, + {2272, 1}, + {1972, 2545}, + {3776, 1}, + {5070, 3679}, + {4972, 1}, + {1051, 2520}, + {4078, 1}, + {2582, 2452}, + {707, 1}, + {306, 1024}, + {4711, 1}, + {4456, 1195}, + {1461, 1}, + {1752, 1710}, + {1864, 1}, + {3627, 1153}, + {1763, 1}, + {0, 142}, + {4286, 2682}, + {470, 1}, {0, 2827}, - {0, 3001}, - {0, 3678}, - {0, 2371}, - {0, 3548}, - {0, 1277}, - {0, 1456}, - {0, 3904}, - {0, 3344}, - {0, 3290}, - {0, 1401}, - {0, 1608}, - {0, 314}, - {0, 3694}, - {0, 2303}, - {0, 682}, - {0, 832}, - {0, 2590}, - {0, 2970}, - {0, 2813}, - {0, 937}, - {0, 988}, - {0, 1890}, - {0, 381}, - {0, 2160}, + {0, 3253}, + {0, 2811}, + {0, 1955}, + {0, 3406}, + {0, 3528}, + {0, 3090}, {0, 3497}, - {0, 3375}, - {0, 1824}, - {0, 1407}, - {0, 1568}, - {0, 3331}, - {0, 3268}, - {0, 2556}, - {0, 3839}, - {0, 2497}, - {0, 1086}, - {0, 1164}, - {0, 2407}, - {0, 2733}, - {0, 3078}, - {0, 1106}, - {0, 753}, - {0, 2196}, - {0, 1662}, + {0, 3795}, + {0, 1495}, + {0, 1635}, + {0, 1145}, + {0, 1589}, + {0, 3931}, + {0, 1643}, + {0, 1475}, {0, 962}, - {0, 2158}, - {0, 2980}, - {0, 3116}, - {0, 356}, - {0, 3049}, - {0, 3884}, - {0, 3740}, - {0, 1743}, - {0, 3615}, - {0, 2696}, - {0, 2243}, - {0, 1335}, - {0, 2517}, - {3423, 68}, - {1364, 107}, - {0, 40}, - {0, 1911}, - {0, 3306}, - {0, 2078}, - {0, 1303}, - {0, 3482}, - {0, 655}, - {0, 3338}, - {0, 1925}, - {0, 1674}, - {0, 3157}, - {0, 3071}, - {0, 2035}, - {0, 3218}, - {0, 3832}, - {0, 1768}, - {0, 2399}, - {0, 1249}, - {0, 3831}, - {0, 3216}, - {0, 1499}, - {0, 1318}, - {0, 2338}, - {0, 985}, - {0, 67}, - {0, 2592}, - {0, 3274}, - {0, 96}, - {0, 3026}, - {0, 2344}, - {0, 396}, - {0, 1621}, - {0, 2579}, - {0, 729}, - {0, 453}, - {0, 2384}, - {0, 2650}, - {0, 1548}, - {0, 3635}, - {0, 3442}, - {0, 1232}, - {0, 2179}, - {0, 2956}, - {0, 230}, - {0, 1109}, - {0, 2712}, - {0, 555}, - {0, 3412}, - {0, 1963}, - {0, 1722}, - {0, 3185}, - {0, 3614}, - {0, 1765}, - {0, 3321}, - {0, 3915}, - {4544, 2610}, - {2643, 2085}, - {2626, 1718}, - {1384, 1655}, - {2151, 3579}, - {1002, 1569}, - {3454, 2163}, - {1035, 547}, - {4345, 3543}, - {164, 892}, - {4546, 2780}, - {2846, 1128}, - {1893, 3120}, - {4628, 1830}, - {3924, 1986}, - {2758, 3525}, - {257, 3738}, - {2790, 3720}, - {1676, 1905}, - {3571, 2112}, - {1530, 878}, - {4702, 961}, - {358, 1664}, - {2908, 3922}, - {3617, 3799}, - {4218, 1297}, - {1954, 1896}, - {4257, 2075}, - {1139, 3736}, - {4034, 3685}, - {770, 2994}, - {3539, 3871}, - {1443, 2455}, - {3933, 1046}, - {4636, 1189}, - {3184, 2447}, - {739, 2701}, - {3187, 3110}, - {2426, 1122}, - {2854, 798}, - {1963, 825}, - {2612, 596}, - {2258, 2003}, - {4411, 3385}, - {3728, 3517}, - {2981, 1997}, - {670, 1226}, - {3003, 1498}, - {1304, 3450}, - {3359, 3206}, - {1744, 2633}, - {4679, 2199}, - {208, 473}, - {2821, 2931}, - {3532, 3060}, - {4338, 265}, - {1937, 732}, - {4325, 224}, - {1260, 3096}, - {3967, 2741}, - {791, 3830}, - {3182, 2237}, - {1665, 3645}, - {3857, 1470}, - {4293, 1298}, - {3542, 3796}, - {1253, 3456}, - {3572, 3186}, - {1909, 1205}, - {2789, 1717}, - {2333, 164}, - {4301, 1111}, - {521, 1538}, - {2794, 3820}, - {3207, 1307}, - {4647, 1437}, - {2400, 1790}, - {4627, 1659}, - {730, 3829}, - {3858, 3591}, - {1176, 3095}, - {510, 2606}, - {4312, 3741}, - {2394, 1557}, - {1655, 1730}, - {253, 3707}, - {2766, 3145}, - {280, 968}, - {3965, 1156}, - {1259, 1323}, - {3808, 621}, - {660, 2825}, - {4438, 3130}, - {2253, 1819}, - {1805, 1971}, - {67, 3507}, - {2602, 3754}, - {80, 3709}, - {4118, 1928}, - {1112, 2098}, - {3672, 901}, - {1913, 1752}, - {2823, 139}, - {212, 2884}, - {714, 2752}, - {2428, 457}, - {4653, 1129}, - {2446, 734}, - {3183, 2719}, - {1474, 3068}, - {3605, 3616}, - {4149, 3659}, - {991, 2220}, - {3492, 761}, - {3070, 944}, - {3668, 2686}, - {1347, 2908}, - {3671, 2894}, - {563, 840}, - {4581, 1079}, - {79, 1945}, - {3405, 2026}, - {1295, 563}, - {4089, 3109}, - {4497, 2971}, - {3335, 146}, - {886, 829}, - {3342, 1050}, - {2277, 2905}, - {2994, 2874}, - {2121, 3803}, - {4570, 3054}, - {185, 3329}, - {3055, 2090}, - {3482, 2208}, - {4349, 3294}, - {2117, 3528}, - {4380, 3906}, - {1001, 2149}, - {4189, 1860}, - {915, 1143}, - {3794, 1673}, - {1201, 954}, - {3135, 2536}, - {2701, 2694}, - {3999, 936}, - {1573, 14}, - {4030, 656}, - {311, 2603}, - {4238, 2023}, - {533, 3480}, - {3464, 1196}, - {1389, 1565}, - {4209, 3748}, - {4619, 1791}, - {3246, 1403}, - {943, 1823}, - {3215, 2162}, - {2213, 1382}, - {3011, 3576}, - {2051, 3018}, - {4350, 1806}, - {614, 2823}, - {2531, 150}, - {3263, 144}, - {4566, 2973}, - {2181, 2593}, - {4582, 2296}, - {937, 18}, - {3669, 622}, - {1110, 1325}, - {843, 2174}, - {3994, 511}, - {1515, 2934}, - {1968, 3020}, - {1196, 223}, - {3643, 788}, - {1185, 1102}, - {4278, 3075}, - {351, 2704}, - {4634, 3864}, - {4012, 3520}, - {829, 2965}, - {3619, 412}, - {2909, 601}, - {3790, 2830}, - {1505, 2280}, - {3819, 2611}, - {382, 648}, - {4722, 87}, - {289, 1636}, - {4161, 3715}, - {981, 2291}, - {3484, 697}, - {3061, 869}, - {3657, 2612}, - {1360, 2960}, - {3683, 2834}, - {545, 924}, - {4597, 1002}, - {93, 1495}, - {3099, 757}, - {1630, 1458}, - {3824, 3653}, - {4260, 3545}, - {3575, 1517}, - {1150, 2193}, - {3616, 1775}, - {1949, 3581}, - {2678, 3843}, - {2456, 2729}, - {669, 759}, - {4427, 3180}, - {2250, 1757}, - {1800, 1130}, - {57, 2045}, - {2613, 3801}, - {1837, 722}, - {0, 327}, - {4780, 2}, - {2928, 2032}, - {1967, 3580}, - {4224, 3862}, - {4827, 2}, - {5078, 2}, - {3814, 2}, - {4966, 2}, - {3795, 2}, - {5036, 2}, - {4704, 2}, - {4839, 2}, - {4369, 2}, - {4847, 2}, - {2553, 2}, - {4860, 2}, - {4590, 2}, - {5038, 2}, - {4554, 2}, - {4971, 2}, - {3654, 2}, - {5054, 2}, - {2864, 2}, - {5094, 2}, - {4743, 2}, - {5070, 2}, - {2664, 2}, - {4937, 2}, - {2671, 2}, - {4960, 2}, - {1472, 2}, - {4882, 2}, - {1189, 2}, - {5004, 2}, - {2722, 2}, - {5052, 2}, - {3930, 2}, - {753, 2}, - {4829, 2}, - {2834, 2}, - {3853, 2}, - {4878, 2}, - {3877, 2}, - {475, 2}, - {4889, 2}, - {372, 2}, - {768, 2}, - {5017, 2}, - {1436, 2}, - {1896, 2}, - {1461, 2}, - {4770, 2}, - {3269, 2655}, - {4574, 897}, - {5048, 2}, - {4569, 2}, - {944, 2571}, - {4849, 2}, - {4879, 2}, - {3670, 2}, - {4994, 2}, - {3278, 2}, - {5008, 2}, - {4192, 2}, - {4881, 2}, - {4151, 2}, - {5124, 2}, - {4351, 2}, - {4902, 2}, - {4724, 2}, - {4908, 2}, - {2923, 2}, - {4925, 2}, - {4244, 2}, - {5126, 2}, - {4234, 2}, - {4884, 2}, - {4014, 2}, - {4989, 2}, - {2485, 2}, - {4999, 2}, - {4387, 2}, - {4945, 2}, - {564, 2}, - {4964, 2}, - {1346, 2}, - {4897, 2}, - {1878, 2}, - {5127, 2}, - {3661, 2}, - {575, 2}, - {5106, 2}, - {60, 2}, - {4010, 2}, - {5077, 2}, - {3622, 2}, - {2911, 2}, - {4871, 2}, - {1504, 2}, - {3815, 2}, - {5014, 2}, - {4729, 2}, - {282, 2}, - {4848, 2}, - {5071, 2}, - {5025, 2}, - {5010, 2}, - {1156, 2}, - {3851, 2}, - {1546, 2}, - {2925, 2}, - {2356, 2}, - {4907, 2}, - {2624, 2}, - {3345, 1114}, - {2991, 452}, - {3739, 1909}, - {1294, 1771}, - {3736, 2511}, - {648, 503}, - {4492, 269}, - {183, 1503}, - {2656, 1165}, - {2373, 726}, - {4264, 1182}, - {3829, 1579}, - {2877, 1375}, - {392, 1857}, - {2896, 1384}, - {1493, 1837}, - {3126, 2147}, - {1710, 3042}, - {2386, 2329}, - {2642, 3025}, - {406, 1504}, - {1153, 896}, - {1997, 1127}, - {4289, 782}, - {1996, 2213}, - {3639, 1744}, - {1615, 1255}, - {3154, 550}, - {2234, 703}, - {2478, 1195}, - {577, 461}, - {1026, 1762}, - {2163, 1472}, - {4403, 1488}, - {2156, 3399}, - {3497, 1990}, - {1766, 2036}, - {3294, 816}, - {371, 1826}, - {4687, 124}, - {1964, 860}, - {1513, 1032}, - {452, 390}, - {2931, 1200}, - {441, 681}, - {3842, 1220}, - {826, 1383}, - {3934, 3570}, - {3389, 3387}, - {1306, 1526}, - {4133, 241}, - {4540, 850}, - {3312, 13}, - {875, 2963}, - {3293, 2840}, - {2254, 916}, - {2951, 1014}, - {2155, 1868}, - {4212, 2079}, - {930, 640}, - {3465, 3061}, - {3040, 2929}, - {3714, 35}, - {1414, 917}, - {3709, 964}, - {606, 2968}, - {4609, 2801}, - {16, 3766}, - {2959, 3115}, - {2056, 3374}, - {4549, 2019}, - {4142, 2157}, - {2593, 3259}, - {32, 3587}, - {2563, 3874}, - {1824, 2190}, - {3366, 1812}, - {1388, 1098}, - {3171, 1742}, - {1674, 1030}, - {3904, 2470}, - {4333, 2608}, - {3526, 861}, - {1234, 125}, - {3522, 592}, - {1898, 2663}, - {2730, 2272}, - {2360, 3423}, - {4087, 1134}, - {901, 1492}, - {3402, 3800}, - {2974, 3921}, - {3724, 1471}, - {1282, 1759}, - {3748, 2203}, - {2594, 1655}, - {2270, 892}, - {4462, 263}, - {3773, 38}, - {2953, 491}, - {657, 108}, - {2952, 765}, - {1288, 116}, - {3292, 547}, - {1765, 1253}, - {3280, 3917}, - {1720, 391}, - {3674, 963}, - {4364, 1128}, - {1316, 2315}, - {3378, 3688}, - {858, 1351}, - {11, 1258}, - {1835, 3762}, - {4116, 3486}, - {1870, 3151}, - {2601, 1344}, - {2105, 1653}, - {3049, 51}, - {3395, 760}, - {1302, 1455}, - {4125, 3657}, - {4534, 3547}, - {3304, 1513}, - {880, 2191}, - {3301, 1773}, - {2259, 3583}, - {2943, 3844}, - {2159, 2726}, - {3536, 481}, - {1456, 2188}, - {3974, 3465}, - {4674, 3332}, - {3164, 1774}, - {731, 1459}, - {3152, 1516}, - {2401, 3377}, - {2809, 3233}, - {1987, 2485}, - {3751, 3516}, - {3343, 407}, - {2618, 595}, - {4093, 2835}, - {1822, 2282}, - {4085, 2614}, - {33, 645}, - {4416, 82}, - {602, 1639}, - {2377, 1556}, - {2645, 1197}, - {418, 2605}, - {1163, 2461}, - {2008, 666}, - {4283, 353}, - {1988, 372}, - {3634, 2538}, - {1625, 2336}, - {3153, 3367}, - {497, 3292}, - {4323, 2760}, - {2448, 6}, - {1698, 253}, - {233, 3046}, - {2749, 2539}, - {210, 2368}, - {3939, 359}, - {1221, 427}, - {3832, 1365}, - {1632, 123}, - {3088, 1989}, - {1167, 3244}, - {422, 3129}, - {1557, 2005}, - {3843, 1740}, - {1537, 1212}, - {2930, 3188}, - {2346, 3424}, - {2728, 2273}, - {2172, 1717}, - {3012, 2453}, - {443, 2228}, - {4240, 3649}, - {2307, 1451}, - {1564, 1287}, - {338, 3788}, - {2703, 3471}, - {368, 3176}, - {4049, 1239}, - {1200, 1697}, - {3879, 183}, - {1561, 2189}, - {3578, 483}, - {798, 2915}, - {314, 3047}, - {1628, 251}, - {4074, 756}, - {1623, 452}, - {2714, 2511}, - {1990, 1503}, - {2810, 726}, - {2945, 3042}, - {2075, 2329}, - {4524, 896}, - {4115, 782}, - {2566, 2213}, - {18, 1255}, - {2588, 550}, - {1794, 703}, - {3399, 1195}, - {1412, 461}, - {2101, 1201}, - {2937, 867}, - {27, 2430}, - {867, 2288}, - {2286, 1023}, - {4551, 585}, - {2283, 114}, - {3347, 2233}, - {1315, 2632}, - {3461, 3212}, - {1938, 1999}, - {2803, 598}, - {230, 3100}, - {727, 2964}, - {2447, 110}, - {4680, 847}, - {2430, 1022}, - {1467, 1655}, - {3584, 892}, - {697, 263}, - {4406, 38}, - {2255, 2060}, - {1813, 1836}, - {78, 3289}, - {2629, 1986}, - {66, 3903}, - {4130, 1896}, - {1099, 1790}, - {3667, 1156}, - {3116, 968}, - {1606, 1659}, - {3845, 622}, - {4281, 1189}, - {3606, 1307}, - {1165, 1908}, - {3586, 2082}, - {1961, 3726}, - {2669, 3690}, - {2429, 2986}, - {3919, 2832}, - {1211, 3114}, - {3167, 1838}, - {2743, 1993}, - {3975, 3519}, - {1709, 825}, - {3961, 3718}, - {273, 1912}, - {4331, 2103}, - {394, 891}, - {2675, 1778}, - {2352, 248}, - {4287, 2889}, - {3848, 2761}, - {2900, 491}, - {414, 108}, - {2873, 765}, - {1528, 355}, - {3082, 805}, - {1678, 3602}, - {3479, 2238}, - {1381, 3642}, - {4205, 1474}, - {4612, 1301}, - {3230, 3793}, - {963, 3454}, - {3229, 3184}, - {2206, 1208}, - {3022, 1721}, - {2062, 158}, - {3797, 3590}, - {1194, 2424}, - {3130, 858}, - {2692, 698}, - {3992, 2474}, - {1581, 3092}, - {4044, 2717}, - {297, 745}, - {4247, 1110}, - {543, 1801}, - {2905, 600}, - {1984, 2000}, - {4745, 3389}, - {4061, 3521}, - {2670, 1991}, - {333, 1221}, - {2667, 1746}, - {1590, 3452}, - {3587, 3210}, - {1468, 2627}, - {4084, 1582}, - {906, 1178}, - {3407, 2620}, - {2982, 2481}, - {3729, 689}, - {1281, 336}, - {3746, 399}, - {622, 2531}, - {4511, 2346}, - {196, 602}, - {910, 996}, - {4076, 871}, - {1286, 1097}, - {2034, 979}, - {1108, 2255}, - {3438, 2091}, - {1104, 632}, - {4467, 1074}, - {62, 839}, - {4573, 65}, - {766, 898}, - {3928, 983}, - {1437, 204}, - {1897, 61}, - {1266, 2943}, - {3568, 2658}, - {1251, 2254}, - {4334, 180}, - {261, 403}, - {4699, 1233}, - {1883, 290}, - {3284, 1863}, - {1075, 462}, - {640, 244}, - {1324, 1530}, - {3785, 1614}, - {1320, 1349}, - {2997, 849}, - {2276, 692}, - {2490, 2387}, - {4248, 2320}, - {437, 2722}, - {2713, 741}, - {3144, 1116}, - {4712, 1793}, - {2338, 925}, - {4698, 1293}, - {799, 1321}, - {3798, 1672}, - {1250, 21}, - {2788, 631}, - {2392, 1922}, - {4307, 3360}, - {3874, 3435}, - {2855, 1631}, - {540, 1330}, - {2845, 1652}, - {1471, 3475}, - {3185, 3140}, - {1580, 2597}, - {3813, 3413}, - {1181, 3072}, - {3145, 549}, - {2716, 450}, - {4037, 2742}, - {1594, 2396}, - {3995, 2512}, - {335, 501}, - {4223, 264}, - {509, 1505}, - {4591, 1078}, - {167, 1701}, - {3072, 3845}, - {3499, 3776}, - {4368, 1262}, - {2136, 1937}, - {4362, 2042}, - {1027, 3813}, - {4164, 3658}, - {896, 2914}, - {2665, 1549}, - {2372, 1091}, - {4259, 2645}, - {3823, 2557}, - {2862, 799}, - {400, 227}, - {2906, 524}, - {1498, 2489}, - {3114, 2446}, - {1711, 3381}, - {4042, 2866}, - {815, 3197}, - {3635, 1810}, - {2920, 1895}, - {3804, 3434}, - {1527, 3806}, - {3799, 3629}, - {413, 1948}, - {4696, 2016}, - {260, 836}, - {2912, 492}, - {1975, 2184}, - {4693, 3462}, - {3998, 3336}, - {2700, 1779}, - {342, 1461}, - {2715, 1518}, - {1621, 3380}, - {3632, 3229}, - {1434, 2488}, - {1962, 2984}, - {2917, 3494}, - {373, 2125}, - {850, 2039}, - {2342, 3148}, - {4706, 3680}, - {2304, 3758}, - {3117, 2111}, - {1499, 1899}, - {3540, 970}, - {2127, 2306}, - {3064, 3691}, - {200, 1356}, - {989, 1256}, - {2211, 3759}, - {4576, 3484}, - {2177, 3149}, - {3250, 1337}, - {1352, 1658}, - {3409, 45}, - {411, 1431}, - {4269, 775}, - {2385, 2245}, - {1640, 2335}, - {330, 1105}, - {2673, 517}, - {296, 225}, - {4038, 2406}, - {1135, 2462}, - {3881, 3256}, - {3349, 3207}, - {1803, 2854}, - {3745, 234}, - {4430, 80}, - {3433, 2954}, - {1113, 2637}, - {3410, 2269}, - {2102, 156}, - {2599, 597}, - {2176, 1209}, - {3678, 1711}, - {1046, 1067}, - {3273, 2513}, - {2549, 2583}, - {4187, 815}, - {1740, 169}, - {4156, 543}, - {159, 2639}, - {4348, 2229}, - {663, 3457}, - {2628, 2564}, - {2251, 3880}, - {4426, 1642}, - {3743, 1541}, - {2992, 3575}, - {694, 3272}, - {2987, 3371}, - {1327, 1601}, - {3332, 1406}, - {1727, 375}, - {3561, 2113}, - {1427, 606}, - {3949, 3030}, - {4646, 2947}, - {3206, 94}, - {752, 887}, - {3174, 1010}, - {2450, 2985}, - {2843, 2848}, - {1944, 3727}, - {3756, 441}, - {1085, 2124}, - {3299, 3488}, - {2575, 3420}, - {4122, 1859}, - {1830, 1350}, - {4128, 1616}, - {63, 3356}, - {4468, 3295}, - {571, 2529}, - {2990, 333}, - {2026, 2305}, - {4513, 717}, - {4101, 814}, - {2633, 2586}, - {76, 2999}, - {2600, 2811}, - {1871, 883}, - {3408, 972}, - {1351, 1901}, - {1660, 1490}, - {3188, 1136}, - {1239, 2674}, - {504, 2534}, - {1417, 736}, - {3862, 272}, - {1442, 459}, - {2800, 2482}, - {2409, 2393}, - {2723, 3418}, - {3200, 3774}, - {1652, 2570}, - {3870, 1155}, - {4304, 1076}, - {3565, 611}, - {1272, 2796}, - {3549, 3012}, - {1926, 981}, - {2771, 940}, - {2320, 2054}, - {3361, 3164}, - {1797, 2793}, - {3738, 312}, - {4422, 179}, - {3424, 3013}, - {1127, 1859}, - {3419, 2325}, - {2089, 60}, - {2608, 662}, - {2192, 1281}, - {3978, 237}, - {707, 1799}, - {3531, 3208}, - {2820, 3283}, - {3914, 2180}, - {1483, 1527}, - {3893, 1442}, - {529, 3221}, - {4664, 3388}, - {307, 1675}, - {2138, 2244}, - {3053, 1675}, - {188, 1430}, - {980, 1320}, - {2201, 3805}, - {4588, 1265}, - {2191, 3191}, - {3238, 1265}, - {1362, 1729}, - {3420, 148}, - {103, 1}, - {4483, 2044}, - {2029, 3401}, - {1285, 1482}, - {679, 1947}, - {3009, 1}, - {677, 1703}, - {3784, 3438}, - {890, 3174}, - {4170, 2688}, - {1369, 3347}, - {3490, 3034}, - {993, 611}, - {202, 502}, - {1754, 2770}, - {4176, 2349}, - {1717, 2547}, - {2504, 451}, - {2112, 333}, - {2973, 1594}, - {2336, 982}, - {2697, 1650}, - {456, 1}, - {1197, 3811}, - {1969, 1315}, - {4251, 1880}, - {1951, 2092}, - {3601, 3775}, - {1582, 3699}, - {3180, 2978}, - {117, 1609}, - {4613, 1154}, - {2152, 2567}, - {1387, 2490}, - {560, 712}, - {3023, 330}, - {583, 434}, - {3651, 2558}, - {965, 2363}, - {4141, 3335}, - {1748, 2792}, - {3261, 3163}, - {1047, 1855}, - {611, 1946}, - {1374, 3476}, - {3686, 3770}, - {1361, 3668}, - {3038, 1893}, - {2194, 2059}, - {2609, 943}, - {3500, 1241}, - {1367, 826}, - {4190, 2443}, - {4589, 2295}, - {3274, 1049}, - {979, 567}, - {3258, 145}, - {2235, 2216}, - {3056, 2662}, - {2018, 3189}, - {1358, 3559}, - {3504, 2356}, - {0, 2343}, + {0, 1521}, + {0, 1210}, + {0, 2583}, + {0, 2473}, + {0, 3754}, + {0, 2485}, + {0, 3870}, + {0, 1690}, + {0, 1541}, + {0, 1041}, + {0, 2576}, + {0, 3124}, + {0, 2750}, + {0, 1792}, + {0, 2422}, + {0, 1914}, + {0, 3346}, + {0, 343}, + {0, 3154}, + {0, 1896}, + {0, 2718}, + {0, 3641}, + {0, 2414}, + {0, 1430}, + {0, 2769}, {0, 1342}, - {0, 3888}, - {0, 3276}, - {0, 1580}, - {0, 2787}, - {0, 625}, - {0, 903}, - {0, 2972}, - {0, 324}, - {0, 3160}, - {0, 2135}, - {0, 1369}, - {0, 3341}, - {0, 3767}, - {0, 1167}, - {0, 2322}, + {0, 3862}, + {0, 795}, + {0, 3682}, + {0, 1303}, + {0, 2389}, + {0, 419}, + {0, 2077}, {0, 3004}, - {0, 934}, - {0, 545}, - {0, 3414}, - {0, 1959}, - {0, 3898}, - {0, 3285}, - {0, 1599}, - {0, 1216}, - {0, 2290}, - {0, 1033}, - {0, 126}, - {0, 2640}, - {0, 3260}, - {0, 135}, - {0, 3112}, - {0, 2452}, - {0, 515}, - {0, 1508}, - {2919, 2535}, - {3633, 1665}, - {0, 2580}, - {0, 33}, - {0, 728}, - {0, 3675}, - {0, 1623}, - {0, 1864}, - {0, 3918}, - {0, 1943}, - {0, 3404}, - {0, 3598}, - {0, 2187}, - {0, 54}, - {0, 3297}, - {0, 2086}, - {0, 1310}, - {0, 3489}, - {0, 975}, - {0, 3910}, - {0, 1312}, - {0, 2089}, - {0, 3689}, - {0, 3863}, - {0, 1053}, - {0, 2441}, - {0, 3105}, - {0, 780}, - {0, 2006}, - {0, 3097}, - {0, 117}, - {0, 1027}, - {0, 2851}, - {0, 3648}, - {0, 740}, - {0, 2672}, - {0, 2879}, - {0, 1071}, - {0, 669}, - {0, 1554}, - {2143, 1554}, - {0, 129}, - {0, 2615}, - {0, 48}, - {0, 603}, - {0, 2754}, - {0, 1904}, - {0, 3325}, - {0, 3536}, - {0, 977}, - {0, 1796}, - {0, 635}, - {0, 2316}, - {0, 236}, - {0, 2952}, - {0, 2266}, - {0, 599}, - {0, 1820}, - {0, 2816}, - {0, 379}, - {0, 674}, - {0, 3019}, - {0, 1562}, - {0, 2598}, - {0, 1645}, - {0, 673}, - {0, 357}, - {0, 376}, - {0, 2328}, - {0, 3372}, - {0, 2673}, - {0, 3791}, - {0, 1491}, - {0, 3647}, + {0, 1650}, + {0, 3052}, + {0, 92}, + {0, 3507}, + {0, 377}, + {0, 3083}, + {0, 1966}, + {0, 3051}, + {0, 3530}, + {0, 627}, + {0, 3808}, + {0, 460}, + {0, 2813}, + {0, 2017}, + {2202, 2528}, + {4809, 1}, + {4796, 1}, + {4792, 1}, + {4808, 1}, + {4807, 1}, + {4794, 1}, + {4824, 1}, + {4823, 1}, + {4814, 1}, + {4782, 1}, + {4789, 1}, + {4804, 1}, + {4786, 1}, + {4790, 1}, + {4802, 1}, + {4819, 1}, + {4800, 1}, + {4821, 1}, + {5004, 1}, + {4899, 1}, + {4854, 1}, + {4875, 1}, + {5125, 1}, + {5124, 1}, + {5062, 1}, + {4903, 1}, + {5100, 1}, + {5046, 1}, + {4943, 1}, + {5098, 1}, + {4842, 1}, + {4892, 1}, + {4932, 1}, + {4857, 1}, + {4879, 1}, + {5073, 1}, + {5109, 1}, + {4890, 1}, + {4891, 1}, + {4835, 1}, + {4827, 1}, + {4788, 1}, + {4785, 1}, + {4806, 1}, + {1202, 1}, + {2942, 1}, + {3442, 1}, + {1410, 1}, + {1778, 1}, + {4939, 1}, + {4936, 1}, + {5034, 1}, + {4801, 1}, + {4778, 1}, + {4813, 1}, + {4815, 1}, + {4818, 1}, + {4787, 1}, + {4273, 1544}, + {4610, 2953}, + {1651, 275}, + {1615, 3410}, + {1387, 1}, + {5106, 1}, + {895, 1}, + {5105, 1}, + {2505, 1}, + {5111, 1}, + {4803, 1}, + {4960, 1}, + {4981, 1}, + {4872, 1}, + {4923, 1}, + {4908, 1}, + {4959, 1}, + {4853, 1}, + {2284, 1}, + {4885, 1}, + {4980, 1}, + {4925, 1}, + {3386, 1}, + {4831, 1}, + {576, 1}, + {4766, 1}, + {4777, 1}, + {4564, 1522}, + {107, 3023}, + {526, 1608}, + {3396, 3616}, + {3340, 1073}, + {3180, 3794}, + {1443, 1645}, + {3330, 2498}, + {5016, 1}, + {4900, 1}, + {5045, 1}, + {4783, 1}, + {4759, 1}, + {5013, 1}, + {2776, 1}, + {2194, 1}, + {2459, 538}, + {4121, 2768}, + {3908, 2956}, + {5114, 1}, + {5116, 1}, + {5061, 1}, + {5052, 1}, + {4858, 1}, + {4310, 2129}, + {894, 2902}, + {4911, 1}, + {784, 2819}, + {2512, 976}, + {782, 1571}, + {4448, 2618}, + {4913, 1}, + {4965, 1}, + {5024, 1}, + {1586, 1}, + {2867, 1}, + {3502, 1}, + {3682, 1052}, + {971, 3860}, + {5055, 1}, + {266, 1}, + {4868, 1}, + {4910, 1}, + {2620, 1}, + {2221, 1}, + {903, 1}, + {5051, 1}, + {4399, 1}, + {4825, 1}, + {4769, 1}, + {5089, 1}, + {1476, 1}, + {4998, 1}, + {2209, 1}, + {1390, 1}, + {3081, 1}, + {145, 1}, + {5094, 1}, + {4975, 1}, + {1933, 1}, + {3347, 1}, + {3586, 1}, + {4763, 1}, + {4893, 1}, + {1805, 1}, + {3383, 1}, + {1797, 1}, + {4679, 1}, + {4594, 205}, + {4820, 1}, + {4816, 1}, + {2485, 51}, + {4795, 1}, + {4781, 1}, + {1423, 576}, + {4267, 2740}, + {3373, 3895}, + {4793, 1}, + {5041, 1}, + {4876, 1}, + {3024, 1718}, + {4828, 1}, + {1606, 2699}, + {4919, 1}, + {2727, 3141}, + {4889, 1}, + {4145, 1775}, + {4886, 1}, + {4120, 3858}, + {4362, 1772}, + {4822, 1}, + {4784, 1}, + {3067, 2649}, + {4811, 1}, + {2718, 2397}, + {2103, 708}, + {2516, 3688}, + {4127, 777}, + {2379, 1287}, + {353, 1318}, + {5096, 1}, + {4954, 1}, + {2376, 3190}, + {4841, 1}, + {1286, 1239}, + {4861, 1}, + {2094, 1177}, + {4966, 1}, + {1193, 2596}, + {4873, 1}, + {3572, 3893}, + {5044, 1}, + {4940, 1}, + {2192, 2416}, + {4922, 1}, + {413, 1}, + {0, 2793}, + {0, 1773}, + {0, 3271}, + {0, 121}, + {0, 3306}, + {0, 2824}, + {0, 1872}, + {0, 2233}, + {0, 1726}, + {0, 3540}, + {0, 49}, + {0, 3304}, + {0, 1743}, + {0, 2856}, + {0, 1644}, + {0, 1196}, + {0, 3928}, + {0, 459}, + {0, 3807}, + {0, 1398}, + {0, 2507}, + {0, 1591}, + {0, 3836}, + {0, 1082}, + {0, 921}, + {0, 1413}, + {0, 2391}, + {0, 1711}, + {0, 2215}, + {0, 1208}, + {0, 3559}, + {0, 891}, + {0, 2265}, + {0, 1438}, + {0, 2814}, + {0, 3321}, + {0, 344}, + {0, 3596}, + {0, 3050}, + {0, 3192}, + {3482, 551}, + {0, 2748}, + {0, 1457}, + {0, 2874}, + {0, 392}, + {0, 3326}, + {0, 95}, + {4907, 1}, + {3968, 1}, + {5112, 1}, + {2451, 1}, + {5037, 1}, + {4534, 1}, + {4956, 1}, + {406, 1}, + {4896, 1}, + {3235, 1}, + {5060, 1}, + {947, 1}, + {4988, 1}, + {4481, 1}, + {4948, 1}, + {1070, 1}, + {4921, 1}, + {4880, 1}, + {2950, 1}, + {2821, 1}, + {4930, 1}, + {2916, 1}, + {0, 2058}, + {0, 1300}, + {0, 1595}, + {0, 896}, + {0, 3203}, + {0, 772}, + {0, 2568}, + {0, 1346}, + {0, 2383}, + {0, 742}, + {0, 3677}, + {0, 1445}, + {0, 809}, + {0, 3649}, + {0, 90}, + {0, 551}, + {0, 1654}, + {0, 2251}, + {0, 1450}, + {0, 3569}, + {0, 904}, + {0, 2066}, + {0, 408}, + {0, 3354}, + {0, 1109}, {0, 3455}, - {0, 1261}, - {0, 486}, - {0, 3459}, - {0, 1783}, - {0, 1519}, - {0, 3227}, - {0, 1657}, - {0, 2439}, - {0, 3588}, - {0, 1405}, - {0, 3378}, - {0, 3254}, - {0, 1304}, - {0, 47}, - {0, 2585}, - {0, 2767}, - {0, 1919}, - {3270, 7}, - {987, 184}, - {3266, 191}, - {0, 3897}, - {4667, 1693}, - {225, 571}, - {898, 728}, - {4183, 2381}, - {1256, 2980}, - {3866, 2323}, - {3363, 3573}, - {0, 1553}, - {0, 366}, - {0, 2100}, - {0, 619}, - {0, 3021}, - {0, 2938}, - {0, 77}, - {0, 912}, - {0, 991}, - {0, 3010}, - {0, 2820}, - {0, 3744}, - {0, 3652}, - {0, 2221}, + {0, 1798}, + {0, 3012}, + {0, 2021}, + {0, 3484}, + {0, 447}, + {0, 1707}, + {0, 1123}, + {0, 3880}, + {0, 374}, + {0, 3757}, + {0, 1455}, + {0, 2451}, + {0, 1658}, + {0, 3790}, + {0, 1157}, + {0, 2743}, + {0, 3109}, + {0, 8}, + {0, 3684}, + {0, 273}, + {0, 2766}, + {0, 217}, + {0, 3206}, + {962, 196}, + {3695, 1923}, + {4754, 158}, + {2239, 57}, + {2528, 154}, + {2806, 1164}, + {1105, 169}, + {954, 119}, + {706, 167}, + {3688, 4}, + {964, 163}, + {2122, 115}, + {3816, 55}, + {4283, 22}, + {176, 157}, + {3101, 106}, + {3629, 160}, + {3468, 54}, + {1771, 139}, + {3624, 213}, + {980, 150}, + {3117, 2043}, + {1672, 1778}, + {1358, 2177}, + {4331, 158}, + {4642, 57}, + {4542, 154}, + {400, 278}, + {4633, 1651}, + {893, 873}, + {380, 169}, + {3889, 163}, + {4168, 55}, + {2389, 1181}, + {2185, 930}, + {2751, 2220}, + {2076, 1465}, + {1944, 160}, + {3710, 139}, + {4469, 213}, + {674, 2722}, + {322, 1281}, + {3277, 76}, + {3446, 682}, + {3641, 341}, + {1893, 583}, + {3438, 27}, + {4539, 697}, + {1625, 258}, + {2465, 167}, + {2734, 54}, + {3031, 213}, + {1183, 76}, + {855, 341}, + {985, 583}, + {3903, 351}, + {864, 697}, + {3156, 258}, + {3647, 1762}, + {525, 1042}, + {1748, 48}, + {4565, 3692}, + {4069, 888}, + {1225, 187}, + {3014, 2562}, + {2580, 1333}, + {2683, 866}, + {2152, 752}, + {2546, 788}, + {376, 311}, + {3417, 1827}, + {3033, 2790}, + {2203, 1286}, + {2466, 2727}, + {4123, 597}, + {3748, 3149}, + {3912, 329}, + {1003, 2691}, + {3721, 1931}, + {2326, 1249}, + {4027, 743}, + {4678, 3598}, + {261, 340}, + {527, 2639}, + {3616, 1476}, + {3085, 1725}, + {3258, 1258}, + {1468, 3708}, + {3089, 677}, + {3199, 2214}, + {118, 67}, + {887, 744}, + {4061, 3319}, + {3847, 915}, + {2190, 94}, + {4817, 1}, + {4810, 1}, + {2784, 3594}, + {1101, 1}, + {672, 1241}, + {4458, 1}, + {4718, 1404}, + {1852, 1}, + {1416, 864}, + {1617, 1}, + {3299, 1362}, + {1411, 1}, + {4030, 1728}, + {2327, 1}, + {1798, 3193}, + {3224, 1}, + {3574, 3308}, + {651, 1}, + {78, 2880}, + {216, 1}, + {4401, 3291}, + {70, 1}, + {3782, 1902}, + {2026, 1}, + {1478, 3246}, + {3521, 1}, + {3255, 3138}, + {285, 1}, + {425, 2723}, + {529, 1}, + {4668, 3116}, + {434, 1}, + {472, 2849}, + {3493, 1}, + {2958, 197}, + {2120, 1}, + {2396, 97}, + {4180, 1}, + {3675, 1745}, + {3844, 1}, + {914, 31}, + {3652, 1}, + {2646, 1831}, + {814, 1}, + {219, 3298}, + {4655, 1}, + {4391, 3204}, + {1569, 1}, + {1667, 2784}, + {1796, 1}, + {3536, 3168}, + {1687, 1}, + {3944, 1525}, + {2266, 1}, + {1926, 3839}, + {3339, 1}, + {3579, 3894}, + {564, 1}, + {106, 2631}, + {325, 1}, + {4433, 3925}, + {120, 1}, + {3198, 2120}, + {119, 1}, + {885, 3535}, + {4062, 1}, + {3846, 3396}, + {2193, 1}, + {2291, 2969}, + {2394, 1}, + {2973, 3424}, + {2263, 1}, + {3943, 2231}, + {2264, 1}, + {1924, 765}, + {3341, 1}, + {3578, 905}, + {566, 1}, + {110, 1463}, + {328, 1}, + {4432, 882}, + {117, 1}, + {1906, 825}, + {4715, 1}, + {3929, 2405}, + {728, 1}, + {1098, 2327}, + {2878, 1}, + {2702, 3617}, + {2537, 1}, + {2012, 2300}, + {2696, 1}, + {3496, 3054}, + {456, 1}, + {1192, 531}, + {3815, 1}, + {4109, 418}, + {2453, 1}, + {1996, 2007}, + {2091, 1}, + {2699, 359}, + {2005, 1}, + {766, 3240}, + {2540, 1}, + {3291, 1883}, + {1867, 1}, + {1621, 1823}, + {4375, 1}, + {4606, 162}, + {4713, 1}, + {686, 1783}, + {4600, 1}, + {2030, 1444}, + {3784, 1}, + {4393, 3646}, + {573, 1}, + {225, 3581}, + {3355, 1}, + {3381, 2258}, + {3571, 1}, + {1808, 3570}, + {3372, 1}, + {2332, 3384}, + {4017, 1}, + {4637, 2055}, + {198, 1}, + {601, 2171}, + {3611, 1}, + {3127, 579}, + {3252, 1}, + {1536, 2205}, + {3114, 1}, + {3159, 401}, + {143, 1}, + {976, 2988}, + {4126, 1}, + {3804, 3060}, + {2208, 1}, + {2222, 3515}, + {2421, 1}, + {2917, 3081}, + {2248, 1}, + {1153, 3430}, + {2862, 1}, + {3507, 1982}, + {1466, 1}, + {1845, 2115}, + {4710, 1}, + {4262, 515}, + {4373, 1}, + {278, 2139}, + {4219, 1}, + {1942, 1}, + {3707, 1}, + {4465, 1}, + {676, 1}, + {321, 1282}, + {3280, 2007}, + {0, 1253}, + {511, 3188}, + {3440, 1}, + {2951, 1717}, + {2114, 1}, + {2427, 1877}, + {4141, 1}, + {3678, 245}, + {3799, 1}, + {943, 1840}, + {3708, 1}, + {1945, 1215}, + {3709, 1}, + {4468, 2588}, + {675, 1}, + {323, 2466}, + {3278, 1}, + {3445, 3746}, + {3640, 1}, + {1892, 2495}, + {3439, 1}, + {4487, 2538}, + {1565, 1}, + {1962, 997}, + {2788, 1}, + {2548, 1077}, + {804, 1}, + {1215, 1600}, + {1032, 1}, + {3960, 1129}, + {1227, 1}, + {136, 91}, + {3181, 1}, + {2665, 2759}, + {2384, 1}, + {2146, 2852}, + {3882, 1}, + {3981, 3296}, + {4097, 1}, + {1222, 2877}, + {3969, 1}, + {2829, 2050}, + {1034, 1}, + {644, 3376}, + {4446, 1}, + {4732, 3441}, + {1794, 1}, + {1431, 3029}, + {1560, 1}, + {3334, 3459}, + {1439, 1}, + {4016, 3779}, + {2331, 1}, + {1847, 1581}, + {3270, 1}, + {3511, 1652}, + {666, 1}, + {12, 1173}, + {243, 1}, + {4356, 1681}, + {21, 1}, + {609, 141}, + {3633, 1}, + {2815, 2679}, + {2003, 1}, + {2251, 2832}, + {4056, 1}, + {3810, 3262}, + {3716, 1}, + {742, 2800}, + {3797, 1}, + {3905, 3177}, + {2179, 1}, + {1360, 1734}, + {3395, 1}, + {3121, 1854}, + {112, 1}, + {559, 264}, + {384, 1}, + {4525, 1836}, + {593, 1}, + {1876, 58}, + {4738, 1}, + {3951, 2742}, + {768, 1}, + {1054, 2878}, + {2900, 1}, + {2690, 3310}, + {2578, 1}, + {1982, 2853}, + {2652, 1}, + {0, 1135}, + {0, 2646}, + {0, 2529}, + {4170, 1}, + {4021, 1}, + {1167, 1}, + {4167, 1}, + {2460, 1}, + {4164, 1}, + {4543, 1}, + {86, 1}, + {388, 3070}, + {3488, 66}, + {3216, 3492}, + {3120, 353}, + {1324, 3106}, + {3244, 1947}, + {236, 3657}, + {3243, 2393}, + {2602, 1}, + {2308, 1}, + {2081, 1}, + {3676, 1}, + {4174, 1}, + {4022, 1}, + {2616, 1227}, + {840, 745}, + {260, 3604}, + {4681, 325}, + {4336, 3717}, + {1600, 1506}, + {3515, 1}, + {1652, 1}, + {2169, 1}, + {3920, 1}, + {4232, 1}, + {421, 1}, + {30, 1}, + {3211, 1}, + {3524, 549}, + {3426, 3418}, + {1646, 2117}, + {3517, 2978}, + {4652, 2684}, + {1832, 3194}, + {2360, 146}, + {2640, 3715}, + {2847, 1}, + {1073, 1}, + {986, 1}, + {839, 1}, + {3731, 1}, + {996, 1}, + {3637, 1}, + {615, 1}, + {1058, 2238}, + {3667, 1867}, + {3955, 2381}, + {2298, 1038}, + {2129, 3681}, + {1947, 792}, + {2569, 2346}, + {2141, 1354}, + {3720, 1}, + {2075, 1}, + {1519, 1}, + {3560, 1}, + {3248, 1}, + {362, 1}, + {4647, 2434}, + {377, 1242}, + {509, 3585}, + {3437, 2313}, + {2948, 1335}, + {2115, 2850}, + {3679, 1}, + {3800, 1}, + {940, 1}, + {3706, 1}, + {2599, 1}, + {865, 1}, + {244, 1}, + {4662, 1}, + {1613, 1070}, + {1848, 764}, + {1627, 1328}, + {2247, 2111}, + {1884, 1}, + {3292, 1}, + {3646, 1}, + {556, 1}, + {156, 1}, + {318, 1}, + {4480, 1}, + {144, 1}, + {3157, 1007}, + {141, 1501}, + {974, 2461}, + {4129, 2135}, + {3803, 2591}, + {2210, 754}, + {2223, 3889}, + {2423, 1067}, + {2915, 1}, + {2246, 1305}, + {3945, 1}, + {2245, 1569}, + {1883, 1}, + {3293, 2212}, + {3644, 1}, + {558, 137}, + {158, 1}, + {320, 1944}, + {4478, 1}, + {142, 1919}, + {1901, 1}, + {4731, 71}, + {1035, 1572}, + {2882, 2052}, + {2668, 1662}, + {2544, 1767}, + {1949, 1178}, + {2684, 111}, + {3433, 1677}, + {524, 2471}, + {1208, 1572}, + {3834, 2052}, + {4093, 1662}, + {2493, 1767}, + {1969, 1178}, + {2149, 111}, + {2677, 1677}, + {1953, 2471}, + {745, 855}, + {2550, 3572}, + {3350, 96}, + {1930, 1803}, + {1564, 823}, + {4390, 1439}, + {4553, 1374}, + {4727, 398}, + {631, 855}, + {4566, 3572}, + {2077, 96}, + {3722, 1803}, + {4371, 823}, + {548, 1439}, + {245, 1374}, + {3284, 398}, + {3408, 2027}, + {3506, 9}, + {1839, 445}, + {3418, 1715}, + {1541, 2078}, + {4338, 3011}, + {3746, 555}, + {1124, 2196}, + {845, 2027}, + {2508, 9}, + {3034, 445}, + {2843, 1715}, + {2350, 2078}, + {3046, 3011}, + {2930, 555}, + {1219, 2196}, + {499, 1}, + {4316, 1}, + {4571, 2952}, + {1678, 276}, + {1592, 3409}, + {3185, 1}, + {1552, 2113}, + {257, 3536}, + {3226, 3031}, + {2617, 2123}, + {2324, 1305}, + {2066, 276}, + {3661, 3318}, + {4151, 369}, + {4007, 3318}, + {1147, 1998}, + {4188, 3061}, + {1898, 3612}, + {4722, 2227}, + {3978, 1237}, + {1037, 1}, + {2884, 3801}, + {2666, 834}, + {2559, 1569}, + {1957, 1384}, + {2672, 2212}, + {952, 2227}, + {2675, 2789}, + {3142, 1826}, + {1696, 2280}, + {1442, 1}, + {4206, 1}, + {4751, 1}, + {4572, 3315}, + {1900, 1}, + {4724, 1}, + {3979, 2483}, + {793, 2104}, + {1038, 2570}, + {2883, 137}, + {2556, 1010}, + {1958, 2602}, + {2673, 1536}, + {3957, 1}, + {2255, 1}, + {1873, 1}, + {3288, 3331}, + {3636, 1}, + {552, 1}, + {164, 1}, + {314, 1}, + {4476, 982}, + {153, 3911}, + {1234, 257}, + {2920, 1919}, + {3451, 2866}, + {1413, 1327}, + {1741, 2246}, + {4497, 560}, + {138, 2778}, + {4484, 1833}, + {3317, 2180}, + {727, 1}, + {3930, 948}, + {3711, 3340}, + {2049, 1944}, + {2435, 2909}, + {2257, 71}, + {2824, 1833}, + {2415, 608}, + {4335, 3873}, + {2063, 291}, + {2893, 291}, + {396, 291}, + {3755, 1524}, + {215, 3558}, + {2175, 2}, + {2607, 2}, + {166, 2}, + {336, 1844}, + {649, 2364}, + {3170, 3642}, + {3356, 719}, + {2689, 2090}, + {2132, 183}, + {4596, 1124}, + {4292, 3464}, + {1385, 1791}, + {3464, 2260}, + {3165, 360}, + {77, 167}, + {4591, 265}, + {607, 350}, + {592, 1141}, + {3503, 387}, + {2869, 529}, + {2041, 1546}, + {2340, 567}, + {3924, 1248}, + {3896, 454}, + {3724, 109}, + {861, 1821}, + {3910, 22}, + {2653, 360}, + {968, 206}, + {147, 89}, + {4601, 21}, + {4302, 265}, + {1392, 350}, + {1889, 1141}, + {1781, 387}, + {3455, 529}, + {1869, 1546}, + {4161, 567}, + {2463, 1248}, + {1631, 454}, + {3074, 109}, + {3420, 1821}, + {272, 196}, + {25, 154}, + {4264, 157}, + {238, 212}, + {3239, 278}, + {241, 119}, + {870, 163}, + {4047, 115}, + {3727, 55}, + {1992, 22}, + {2454, 160}, + {2333, 80}, + {2858, 139}, + {1648, 1708}, + {749, 564}, + {3791, 3395}, + {427, 48}, + {3792, 806}, + {479, 93}, + {131, 3584}, + {3069, 1651}, + {3431, 1451}, + {89, 169}, + {765, 119}, + {113, 119}, + {2968, 2056}, + {187, 167}, + {751, 115}, + {268, 115}, + {76, 22}, + {313, 1965}, + {379, 160}, + {42, 397}, + {394, 54}, + {2919, 116}, + {1233, 1729}, + {502, 2697}, + {983, 67}, + {1585, 63}, + {4158, 163}, + {2473, 2563}, + {729, 158}, + {486, 154}, + {270, 154}, + {18, 187}, + {0, 884}, + {253, 55}, + {599, 157}, + {4237, 557}, + {3915, 3472}, + {1314, 956}, + {987, 1704}, + {46, 167}, + {3038, 2156}, + {175, 15}, + {1110, 583}, + {1276, 583}, + {1068, 15}, + {628, 571}, + {346, 57}, + {830, 57}, + {258, 4}, + {1252, 3428}, + {4013, 528}, + {1768, 1255}, + {4563, 736}, + {4098, 3601}, + {916, 332}, + {1214, 3730}, + {2997, 1481}, + {2552, 2426}, + {2659, 1261}, + {2121, 3705}, + {2588, 684}, + {710, 1841}, + {2586, 289}, + {3327, 3283}, + {1918, 798}, + {1590, 167}, + {4416, 1701}, + {4570, 2674}, + {4750, 1862}, + {639, 76}, + {4560, 240}, + {1766, 2497}, + {4561, 1102}, + {4096, 1054}, + {919, 212}, + {1212, 1170}, + {3001, 2261}, + {2554, 115}, + {2663, 48}, + {2119, 57}, + {2585, 55}, + {4071, 167}, + {2431, 1701}, + {1745, 2674}, + {3190, 1862}, + {3454, 76}, + {437, 240}, + {312, 2497}, + {163, 1102}, + {4301, 1054}, + {286, 212}, + {1050, 1170}, + {2810, 2261}, + {3643, 115}, + {1624, 48}, + {1878, 57}, + {4675, 55}, + {0, 3292}, + {2212, 3276}, + {4978, 1}, + {5018, 1}, + {4897, 1}, + {210, 1}, + {4648, 1}, + {1494, 1}, + {4477, 1}, + {4700, 1}, + {1834, 1}, + {4839, 1}, + {4989, 1}, + {5011, 1}, + {5097, 1}, + {201, 1}, + {5053, 1}, + {2914, 1}, + {4997, 1}, + {1092, 1}, + {4878, 1}, + {1703, 1}, + {4877, 1}, + {4113, 1}, + {2116, 2296}, + {2504, 1400}, + {2502, 2980}, + {3303, 2041}, + {4928, 1}, + {2393, 1}, + {4867, 1}, + {3842, 1}, + {5115, 1}, + {2746, 1}, + {4914, 1}, + {2956, 1}, + {4971, 1}, + {2595, 1}, + {4898, 1}, + {247, 1}, + {5082, 1}, + {5035, 1}, + {920, 1}, + {1213, 1}, + {3002, 1}, + {2553, 1}, + {2662, 1}, + {5095, 1}, + {4976, 1}, + {3735, 1}, + {2068, 1}, + {5092, 1}, + {5091, 1}, + {3232, 1}, + {341, 1}, + {4938, 1}, + {5113, 1}, + {5074, 1}, + {4905, 1}, + {629, 1}, + {4431, 1}, + {5030, 1}, + {5077, 1}, + {1440, 1}, + {1587, 1}, + {5022, 1}, + {4871, 1}, + {4291, 1}, + {1434, 1}, + {4937, 1}, + {4953, 1}, + {5059, 1}, + {5110, 1}, + {5108, 1}, + {5039, 1}, + {735, 1}, + {975, 1}, + {3814, 1}, + {717, 1}, + {5021, 1}, + {5026, 1}, + {4979, 1}, + {5090, 1}, + {2832, 1}, + {2411, 1}, + {4626, 1}, + {1858, 1}, + {3736, 1}, + {992, 1}, + {2767, 1}, + {994, 1}, + {2204, 952}, + {1384, 641}, + {2996, 206}, + {2181, 89}, + {2492, 21}, + {4094, 265}, + {3774, 350}, + {3885, 1141}, + {1019, 387}, + {3770, 529}, + {2535, 1546}, + {769, 3577}, + {350, 702}, + {4739, 3235}, + {4426, 804}, + {1502, 2548}, + {1709, 1390}, + {1908, 2309}, + {3588, 832}, + {1721, 3613}, + {4048, 3064}, + {2305, 3452}, + {1822, 540}, + {3245, 3769}, + {3547, 406}, + {626, 2848}, + {61, 2002}, + {196, 3093}, + {4385, 362}, + {85, 3538}, + {3077, 2499}, + {87, 3760}, + {1016, 953}, + {4165, 3474}, + {3884, 1126}, + {2144, 2298}, + {2316, 1642}, + {2494, 2546}, + {3011, 1079}, + {2310, 3837}, + {4049, 1937}, + {2307, 269}, + {1824, 2}, + {3242, 2}, + {3548, 2}, + {621, 2}, + {57, 2}, + {193, 2}, + {4387, 2}, + {88, 2}, + {1800, 2}, + {4680, 2}, + {4029, 2}, + {841, 2}, + {1126, 2}, + {2822, 2}, + {2735, 2}, + {2644, 2}, + {2050, 2}, + {2723, 2}, + {3376, 2}, + {420, 2}, + {1318, 3085}, + {3919, 593}, + {4142, 703}, + {2425, 1288}, + {2022, 1415}, + {2207, 1502}, + {2728, 994}, + {2047, 365}, + {815, 781}, + {2641, 1262}, + {3254, 2250}, + {1831, 827}, + {1475, 2369}, + {4473, 29}, + {4520, 3501}, + {4683, 117}, + {554, 2387}, + {4500, 1310}, + {1999, 1702}, + {3669, 536}, + {4422, 159}, + {616, 3062}, + {342, 305}, + {3231, 1945}, + {3499, 1889}, + {3601, 1873}, + {1936, 196}, + {3478, 158}, + {932, 48}, + {4051, 57}, + {4674, 154}, + {255, 187}, + {555, 169}, + {3642, 119}, + {3086, 167}, + {3276, 4}, + {1485, 163}, + {3079, 115}, + {3204, 55}, + {105, 22}, + {930, 157}, + {4102, 160}, + {3838, 397}, + {2187, 54}, + {2258, 80}, + {2387, 139}, + {2961, 213}, + {2287, 76}, + {1114, 150}, + {2896, 212}, + {3541, 19}, + {1510, 67}, + {1816, 196}, + {4746, 158}, + {4214, 48}, + {4412, 57}, + {232, 154}, + {4198, 187}, + {1983, 169}, + {3672, 119}, + {4438, 167}, + {633, 4}, + {364, 163}, + {3253, 115}, + {3491, 55}, + {3612, 22}, + {1931, 157}, + {3483, 160}, + {477, 397}, + {3484, 54}, + {2981, 80}, + {2151, 139}, + {2392, 213}, + {4169, 76}, + {3648, 150}, + {3835, 212}, + {892, 19}, + {3673, 67}, + {1985, 360}, + {3112, 1151}, + {4677, 326}, + {1810, 1292}, + {3531, 1224}, + {1354, 1671}, + {5063, 1}, + {0, 381}, + {0, 1564}, + {0, 3117}, + {0, 2888}, + {0, 1570}, + {0, 575}, + {0, 511}, + {0, 1334}, + {0, 2236}, + {0, 1679}, + {0, 3509}, + {0, 2581}, + {0, 293}, + {0, 1756}, + {0, 2594}, + {0, 3435}, + {0, 2999}, + {0, 3660}, + {0, 916}, + {0, 3764}, + {0, 1992}, + {0, 1035}, + {0, 2721}, + {0, 3284}, + {0, 1019}, + {0, 2093}, + {0, 2092}, + {0, 771}, + {0, 3553}, + {0, 1191}, + {0, 3069}, + {0, 3871}, + {0, 1899}, + {0, 101}, + {0, 3879}, + {0, 3001}, + {0, 667}, + {0, 2198}, + {0, 3008}, + {0, 1810}, + {0, 3593}, + {0, 2720}, + {0, 1037}, + {0, 1634}, + {0, 2732}, + {0, 3722}, + {0, 1297}, + {0, 546}, + {0, 3724}, + {0, 773}, + {0, 2796}, + {0, 862}, + {0, 2523}, + {0, 659}, + {0, 2165}, + {0, 1778}, + {0, 3149}, + {0, 2043}, + {0, 1042}, + {0, 2677}, + {0, 3373}, + {2206, 4}, + {3878, 76}, + {0, 1273}, + {0, 596}, + {0, 3487}, + {0, 2336}, + {0, 1560}, + {0, 3111}, + {0, 220}, + {0, 2460}, + {0, 3289}, + {0, 605}, + {0, 2382}, + {0, 1901}, + {0, 3815}, + {0, 2808}, + {0, 2088}, + {0, 3714}, + {0, 2843}, + {0, 1039}, + {0, 1849}, + {0, 3009}, + {0, 902}, + {0, 1353}, + {0, 3521}, + {0, 2264}, + {0, 1533}, + {0, 3195}, + {0, 2776}, + {0, 1190}, + {0, 1739}, + {0, 2934}, {0, 758}, - {0, 939}, - {0, 2691}, - {0, 2912}, - {0, 2896}, - {0, 837}, - {0, 1075}, - {0, 1949}, - {0, 1354}, - {0, 718}, - {0, 2317}, - {0, 2391}, - {0, 1148}, - {0, 446}, + {0, 507}, + {0, 2242}, + {0, 3503}, {0, 295}, - {0, 2345}, - {0, 2532}, - {0, 3296}, - {0, 2123}, - {0, 440}, - {0, 2990}, - {0, 3067}, - {0, 293}, - {0, 721}, - {0, 1145}, - {0, 3028}, + {0, 2587}, + {0, 3199}, + {0, 1694}, + {0, 84}, + {0, 3365}, + {0, 1309}, + {0, 233}, + {0, 2488}, + {0, 3322}, + {0, 625}, + {0, 2352}, {0, 2756}, - {0, 3907}, - {0, 2935}, - {0, 3443}, - {0, 2173}, - {0, 2099}, - {0, 3196}, + {0, 1163}, + {0, 1727}, + {0, 2905}, + {0, 785}, + {0, 1855}, + {0, 2757}, + {0, 2846}, {0, 3636}, - {0, 3809}, - {0, 2050}, - {0, 1966}, - {0, 1055}, - {0, 1112}, - {0, 1535}, - {0, 3824}, - {0, 3892}, - {0, 1434}, - {0, 1785}, - {0, 2176}, - {0, 3833}, - {0, 3592}, - {0, 3093}, - {0, 2747}, - {0, 3214}, - {0, 1953}, - {0, 1861}, - {0, 3419}, - {0, 3835}, - {0, 3619}, - {0, 1795}, - {0, 2207}, - {0, 737}, - {0, 1884}, - {0, 71}, - {0, 2788}, - {0, 2875}, - {0, 624}, - {0, 984}, - {0, 902}, - {0, 2800}, - {4757, 2}, - {4172, 1542}, - {1716, 2170}, - {4179, 1806}, - {116, 3608}, - {4373, 3860}, - {682, 2708}, - {3322, 3080}, - {1825, 2045}, - {4418, 2129}, - {3417, 622}, - {1088, 3605}, - {3426, 3842}, - {146, 1914}, - {2621, 1780}, - {2198, 1123}, - {4359, 2101}, - {605, 617}, - {2521, 3035}, - {3254, 2948}, - {2693, 89}, - {2190, 875}, - {4594, 1003}, - {923, 2993}, - {3684, 2833}, - {1125, 3737}, - {3996, 2559}, - {841, 3882}, - {3625, 1648}, - {2914, 1552}, - {3796, 3568}, - {1501, 3263}, - {3810, 3361}, - {403, 1610}, - {4709, 1399}, - {279, 388}, - {3240, 3773}, - {1761, 2569}, - {3718, 1157}, - {4404, 1073}, - {3476, 928}, - {1030, 115}, - {3448, 3014}, - {2140, 980}, - {2471, 941}, - {2273, 2061}, - {4564, 310}, - {197, 1856}, - {3065, 3165}, - {3486, 3230}, - {4355, 2128}, - {2113, 1597}, - {4372, 1050}, - {1018, 3267}, - {3644, 2107}, - {904, 2362}, - {383, 2403}, - {4286, 3611}, - {2353, 1247}, - {1614, 1015}, - {301, 3834}, - {2650, 3417}, - {323, 3219}, - {4015, 1443}, - {1152, 1495}, - {3911, 273}, - {4273, 927}, - {397, 1295}, - {2690, 3554}, - {3127, 3662}, - {4756, 1668}, - {2368, 2055}, - {4731, 1921}, - {839, 3701}, - {3830, 3768}, - {1210, 2794}, - {4399, 650}, - {561, 2069}, - {2507, 3342}, - {3248, 3466}, - {4622, 1923}, - {2232, 1282}, - {4605, 1671}, - {992, 3501}, - {3695, 3161}, - {1061, 2573}, - {2921, 3400}, - {1957, 3085}, - {4727, 582}, - {4043, 405}, - {2720, 2723}, - {356, 2428}, - {1637, 436}, - {3621, 242}, - {812, 1180}, - {871, 1731}, - {2958, 1043}, - {1334, 2361}, - {1601, 2588}, - {1079, 834}, - {3383, 147}, - {1060, 570}, - {4437, 2679}, - {4, 2258}, - {4606, 3433}, - {1399, 3167}, - {3455, 2899}, - {956, 256}, - {158, 24}, - {1780, 2909}, - {1610, 2689}, - {1151, 2218}, - {2555, 150}, - {2148, 527}, - {2941, 1274}, - {38, 346}, - {4521, 1833}, - {2076, 3117}, - {1329, 3239}, - {647, 2151}, - {2964, 1592}, - {634, 1394}, - {3740, 3301}, - {859, 3349}, - {4201, 2351}, - {1223, 3704}, - {3897, 2299}, - {1713, 676}, - {2465, 825}, - {738, 2600}, - {3160, 2976}, - {702, 2815}, - {4641, 929}, - {479, 994}, - {4262, 1881}, - {1275, 2360}, - {3440, 3553}, - {895, 961}, - {68, 1463}, - {1806, 3899}, - {4077, 3334}, - {1810, 3286}, - {2572, 1412}, - {2037, 1596}, - {3071, 331}, - {641, 2072}, - {4459, 651}, - {2303, 3039}, - {1884, 2911}, - {45, 23}, - {2580, 942}, - {3, 956}, - {4096, 2974}, - {1063, 2797}, - {3696, 3772}, - {3827, 3631}, - {1166, 2253}, - {3089, 784}, - {2653, 911}, - {4052, 2654}, - {4069, 2867}, - {353, 808}, - {4271, 1038}, - {489, 1980}, - {1155, 1385}, - {3833, 687}, - {1646, 2285}, - {2387, 2415}, - {3101, 409}, - {779, 344}, - {4718, 2376}, - {390, 2554}, - {4320, 3275}, - {1029, 2148}, - {3704, 398}, - {1782, 2962}, - {2238, 3086}, - {961, 343}, - {3242, 693}, - {927, 1179}, - {4593, 3053}, - {552, 2775}, - {4453, 3886}, - {1512, 2906}, - {3629, 3468}, - {848, 2192}, - {367, 2066}, - {1599, 1749}, - {1567, 3784}, - {2682, 2028}, - {1946, 1938}, - {2829, 1088}, - {4537, 1130}, - {20, 1500}, - {2962, 3802}, - {3388, 3920}, - {4471, 1465}, - {2083, 1751}, - {1095, 2197}, - {1126, 3854}, - {4105, 3613}, - {926, 3070}, - {3039, 2724}, - {2153, 3235}, - {4621, 1985}, - {4211, 1836}, - {2506, 3397}, - {148, 3858}, - {2476, 3596}, - {1749, 1761}, - {3446, 2181}, - {1310, 769}, - {4137, 1927}, - {857, 17}, - {3379, 2764}, - {3781, 653}, - {1336, 949}, - {3764, 933}, - {681, 2824}, - {4531, 3007}, - {114, 3672}, - {4336, 2375}, - {483, 3542}, - {2755, 1309}, - {3172, 1475}, - {4684, 3909}, - {2443, 3316}, - {4649, 3298}, - {767, 18}, - {3888, 1613}, - {1133, 299}, - {2977, 3724}, - {2041, 2275}, - {4495, 685}, - {4088, 854}, - {2615, 2622}, - {51, 2967}, - {2616, 2846}, - {1843, 918}, - {3428, 1012}, - {1370, 1874}, - {3774, 400}, - {1068, 1079}, - {3321, 3522}, - {2597, 3398}, - {4147, 1835}, - {1859, 1379}, - {4102, 1584}, - {88, 3328}, - {4454, 3273}, - {553, 2552}, - {720, 3351}, - {3973, 3031}, - {1445, 607}, - {1904, 497}, - {1206, 2772}, - {3524, 2354}, - {1235, 2548}, - {4295, 437}, - {235, 14}, - {4753, 1578}, - {3981, 2023}, - {709, 568}, - {3530, 3111}, - {2819, 2982}, - {2689, 1040}, - {3909, 587}, - {853, 828}, - {2459, 373}, - {1922, 1555}, - {3779, 1042}, - {1339, 564}, - {3769, 138}, - {687, 2225}, - {3290, 2648}, - {130, 3200}, - {3199, 829}, - {3871, 1302}, - {763, 3326}, - {936, 1376}, - {2772, 1622}, - {2227, 3284}, - {1771, 3168}, - {140, 2067}, - {2517, 1686}, - {129, 1291}, - {4186, 3136}, - {1009, 3091}, - {3768, 2324}, - {2300, 2594}, - {656, 1828}, - {646, 1572}, - {155, 957}, - {2073, 58}, - {1289, 1454}, - {2061, 3495}, - {3429, 1683}, - {1842, 1319}, - {3228, 628}, - {1023, 1498}, - {201, 1133}, - {1787, 2668}, - {348, 255}, - {962, 743}, - {2437, 111}, - {922, 468}, - {1764, 2468}, - {506, 2402}, - {3809, 2711}, - {324, 2920}, - {810, 2882}, - {781, 2185}, - {1553, 2062}, - {417, 3178}, - {2897, 3665}, - {393, 3726}, - {3801, 2020}, - {795, 1941}, - {3960, 1083}, - {2187, 2507}, - {2544, 3114}, - {591, 575}, - {1042, 387}, - {573, 1392}, - {4358, 2438}, - {41, 1035}, - {1751, 211}, - {3352, 1545}, - {951, 830}, - {2049, 872}, - {1403, 3585}, - {1032, 1734}, - {3469, 2027}, - {1008, 1973}, - {747, 3539}, - {132, 1360}, - {2804, 53}, - {2147, 2484}, - {733, 2881}, - {121, 1700}, - {2223, 3600}, - {3759, 542}, - {2230, 2743}, - {3265, 1544}, - {1400, 1457}, - {3373, 484}, - {4623, 3911}, - {481, 1641}, - {2510, 1311}, - {149, 1913}, - {2474, 2088}, - {1752, 3730}, - {3447, 84}, - {1311, 2699}, - {1992, 1897}, - {1039, 3044}, - {4075, 3182}, - {315, 1663}, - {2636, 1308}, - {1595, 3123}, - {3583, 3490}, - {1449, 2313}, - {4374, 3250}, - {597, 2706}, - {2545, 151}, - {3272, 361}, - {4583, 3108}, - {2203, 188}, - {4561, 2442}, - {3646, 509}, - {1693, 1214}, - {3157, 859}, - {1229, 2426}, - {499, 2294}, - {1491, 1025}, - {2537, 1995}, - {2420, 2625}, - {2637, 3095}, - {1643, 466}, - {1574, 122}, - {23, 2235}, - {4717, 583}, - {385, 178}, - {4318, 1709}, - {1687, 803}, - {485, 3512}, - {1222, 3382}, - {1924, 1816}, - {4342, 1398}, - {3566, 3337}, - {1118, 3266}, - {3094, 2013}, - {1330, 3729}, - {3032, 2358}, - {878, 1177}, - {1873, 2283}, - {4129, 2836}, - {2630, 974}, - {3020, 2120}, - {1247, 2526}, - {1357, 3560}, - {1657, 1660}, - {2395, 1483}, - {3178, 3307}, - {4668, 1576}, - {1930, 8}, - {239, 2755}, - {1053, 634}, - {4675, 960}, - {2419, 914}, - {3204, 2841}, - {1451, 2989}, - {1864, 3069}, - {2765, 435}, - {1065, 1037}, - {2019, 493}, - {2595, 283}, - {2236, 1485}, - {1881, 558}, - {3283, 660}, - {299, 3045}, - {642, 2923}, - {1325, 10}, - {3786, 932}, - {1321, 950}, - {2996, 2981}, - {4328, 3461}, - {1262, 1733}, - {3962, 1264}, - {788, 536}, - {3604, 1587}, - {1538, 1173}, - {4072, 1173}, - {587, 3710}, - {3028, 3755}, - {1376, 2063}, - {3218, 1889}, - {1847, 986}, - {1953, 2359}, - {4824, 2}, - {1136, 382}, - {4040, 318}, - {778, 1547}, - {3124, 700}, - {1603, 1288}, - {3839, 3549}, - {4274, 3651}, - {3599, 1681}, - {1173, 2065}, - {3592, 1932}, - {1972, 420}, - {2657, 3777}, - {2433, 2791}, - {1552, 3192}, - {3589, 2870}, - {804, 220}, - {326, 75}, - {1636, 2939}, - {4066, 2652}, - {1613, 2248}, - {2724, 193}, - {1980, 561}, - {2801, 1244}, - {3574, 1840}, - {4060, 2838}, - {4744, 2709}, - {3098, 410}, - {782, 1181}, - {3100, 696}, - {2895, 3037}, - {3449, 1589}, - {1406, 1175}, - {4608, 2469}, - {3220, 695}, - {3237, 406}, - {2193, 2519}, - {3037, 2357}, - {2091, 3345}, - {3789, 2684}, - {1204, 3787}, - {3137, 1515}, - {2704, 1684}, - {4011, 3660}, - {1565, 3170}, - {4023, 1736}, - {306, 1736}, - {4241, 458}, - {526, 458}, - {2271, 458}, - {2591, 458}, - {631, 1466}, - {1064, 1466}, - {2057, 1466}, - {4451, 1466}, - {2092, 1479}, - {3418, 1479}, - {1855, 1479}, - {3236, 1479}, - {554, 1210}, - {4401, 1210}, - {2221, 1210}, - {1762, 1210}, - {119, 1473}, - {2475, 1473}, - {150, 1473}, - {4169, 1473}, - {1022, 235}, - {3783, 235}, - {1840, 235}, - {3310, 235}, - {1057, 654}, - {624, 654}, - {1307, 654}, - {3762, 654}, - {1337, 9}, - {2975, 9}, - {2297, 9}, - {2505, 9}, - {1906, 1764}, - {2826, 1764}, - {218, 1764}, - {719, 1764}, - {2436, 1839}, - {4650, 1839}, - {2438, 1839}, - {3181, 1839}, - {1478, 724}, - {3603, 724}, - {684, 724}, - {4419, 724}, - {2261, 121}, - {1823, 121}, - {99, 121}, - {2620, 121}, - {49, 42}, - {4140, 42}, - {1093, 614}, - {3649, 614}, - {1298, 1174}, - {3391, 1174}, - {863, 3733}, - {25, 3733}, - {1852, 1380}, - {4107, 1380}, - {1857, 2144}, - {2607, 2144}, - {2088, 670}, - {3036, 670}, - {1790, 670}, - {3214, 670}, - {1021, 1564}, - {569, 1564}, - {1397, 1564}, - {3721, 1564}, - {1394, 1822}, - {3074, 1822}, - {2220, 1822}, - {2574, 1822}, - {3217, 1332}, - {1775, 1332}, - {3700, 1332}, - {4384, 1332}, - {3450, 659}, - {1004, 659}, - {3473, 112}, - {2106, 112}, - {2512, 112}, - {2295, 112}, - {3095, 2949}, - {1629, 2949}, - {3825, 2102}, - {4261, 2102}, - {3576, 2102}, - {1143, 2102}, - {3614, 1020}, - {1947, 1020}, - {2681, 1020}, - {2463, 1020}, - {4165, 426}, - {982, 426}, - {3483, 3015}, - {3060, 3015}, - {2768, 764}, - {1929, 764}, - {2886, 764}, - {2274, 764}, - {2583, 821}, - {628, 821}, - {1059, 1059}, - {2052, 1059}, - {4456, 157}, - {2096, 157}, - {3400, 2270}, - {1880, 2669}, - {3247, 2669}, - {285, 772}, - {4632, 772}, - {1895, 3557}, - {1435, 3557}, - {534, 1537}, - {2859, 1537}, - {520, 1537}, - {3906, 1537}, - {749, 2121}, - {4000, 2121}, - {1681, 2951}, - {3166, 2951}, - {1212, 500}, - {476, 500}, - {1453, 2264}, - {3891, 2264}, - {1484, 559}, - {2831, 559}, - {2461, 109}, - {2680, 109}, - {1868, 2284}, - {3286, 2284}, - {1077, 1225}, - {649, 1225}, - {1331, 1225}, - {1071, 1313}, - {1317, 1313}, - {2989, 1313}, - {2281, 97}, - {2486, 97}, - {3302, 97}, - {1863, 97}, - {3754, 3318}, - {4442, 1766}, - {3362, 1230}, - {3394, 1811}, - {2023, 3217}, - {2589, 2510}, - {2243, 2697}, - {3151, 136}, - {1702, 2171}, - {3887, 3141}, - {4321, 947}, - {3514, 1809}, - {1219, 1424}, - {3537, 1231}, - {1885, 3403}, - {2751, 2252}, - {2376, 2454}, - {4086, 31}, - {899, 2991}, - {3404, 448}, - {2976, 557}, - {3725, 2458}, - {1283, 2314}, - {3749, 1732}, - {623, 618}, - {4506, 32}, - {204, 1666}, - {1989, 1598}, - {2890, 1168}, - {300, 1521}, - {787, 1252}, - {2351, 520}, - {4741, 137}, - {2375, 421}, - {3128, 2561}, - {1562, 577}, - {3538, 1057}, - {211, 843}, - {4676, 231}, - {1910, 62}, - {1452, 207}, - {474, 3024}, - {2807, 1566}, - {496, 1191}, - {3854, 311}, - {734, 380}, - {4070, 678}, - {1536, 168}, - {3611, 1958}, - {789, 338}, - {305, 385}, - {1617, 2037}, - {4047, 442}, - {1633, 1254}, - {2706, 1290}, - {1998, 2339}, - {2818, 2242}, - {2225, 3599}, - {2496, 930}, - {549, 812}, - {996, 706}, - {2146, 952}, - {4396, 1016}, - {2173, 2263}, - {3485, 789}, - {1779, 39}, - {3319, 19}, - {369, 2256}, - {4685, 848}, - {1966, 1416}, - {1514, 1317}, - {453, 2855}, - {2932, 3446}, - {442, 3202}, - {3841, 243}, - {828, 99}, - {3936, 141}, - {1624, 386}, - {3104, 512}, - {1130, 2298}, - {376, 177}, - {1531, 209}, - {3835, 779}, - {1560, 1096}, - {2913, 323}, - {2378, 1850}, - {2753, 3158}, - {92, 1649}, - {4490, 2198}, - {2036, 1625}, - {1287, 1529}, - {686, 3565}, - {3005, 2595}, - {671, 3358}, - {3778, 1615}, - {893, 1381}, - {4162, 401}, - {4496, 1039}, - {73, 1738}, - {2978, 3875}, - {3406, 3752}, - {4410, 1230}, - {2027, 1965}, - {1058, 1811}, - {4097, 3633}, - {995, 2942}, - {4633, 136}, - {277, 1976}, - {2842, 2171}, - {3544, 3141}, - {4294, 2015}, - {1888, 1726}, - {4308, 1231}, - {1205, 3175}, - {3948, 3403}, - {844, 2252}, - {2578, 3310}, - {2289, 2748}, - {4441, 31}, - {3752, 275}, - {2934, 2991}, - {636, 448}, - {2967, 1958}, - {1278, 338}, - {3314, 442}, - {1784, 1254}, - {1182, 1290}, - {3811, 930}, - {1571, 812}, - {2311, 706}, - {818, 952}, - {3136, 39}, - {845, 19}, - {4734, 2256}, - {464, 2577}, - {4310, 2855}, - {1654, 3500}, - {3193, 2977}, - {1246, 386}, - {512, 579}, - {1420, 512}, - {3859, 2298}, - {1438, 2595}, - {2796, 664}, - {2414, 63}, - {2719, 1649}, - {436, 476}, - {4249, 2198}, - {2319, 1625}, - {1576, 3318}, - {347, 1766}, - {2698, 1477}, - {361, 1230}, - {4057, 1370}, - {1192, 3217}, - {3869, 2510}, - {975, 2697}, - {4177, 136}, - {1350, 1124}, - {2111, 947}, - {1040, 1809}, - {3489, 1424}, - {1050, 1231}, - {4383, 1036}, - {199, 31}, - {4512, 557}, - {1645, 2458}, - {3079, 2314}, - {1154, 1732}, - {410, 618}, - {1548, 1666}, - {3850, 1598}, - {1544, 1168}, - {2927, 1521}, - {2355, 1252}, - {2735, 520}, - {350, 1977}, - {4705, 137}, - {1943, 421}, - {1496, 2561}, - {435, 577}, - {2918, 1057}, - {463, 843}, - {3826, 62}, - {846, 207}, - {3950, 3024}, - {715, 1566}, - {3969, 1191}, - {1446, 311}, - {1907, 380}, - {1209, 678}, - {3520, 168}, - {1230, 385}, - {4292, 2037}, - {237, 2339}, - {4754, 2242}, - {3983, 3599}, - {711, 930}, - {3529, 812}, - {2814, 1016}, - {3912, 2263}, - {1486, 789}, - {3895, 39}, - {532, 1072}, - {4662, 848}, - {302, 1416}, - {4146, 1317}, - {854, 2855}, - {3374, 243}, - {2955, 99}, - {3775, 141}, - {1343, 386}, - {3771, 2118}, - {691, 177}, - {4527, 209}, - {127, 1223}, - {3197, 323}, - {1651, 1850}, - {3872, 3158}, - {4306, 1649}, - {3567, 2134}, - {1270, 1230}, - {3548, 1370}, - {1923, 136}, - {2776, 1124}, - {2323, 1231}, - {585, 1036}, - {4381, 31}, - {2228, 1346}, - {1772, 1252}, - {141, 1468}, - {2511, 1525}, - {128, 1536}, - {4182, 930}, - {1010, 812}, - {3770, 39}, - {2301, 386}, - {2561, 2118}, - {639, 1649}, - {1073, 2134}, - {2068, 1865}, - {4477, 1334}, - {2066, 1626}, - {3431, 228}, - {1836, 495}, - {3221, 2515}, - {1020, 2417}, - {3710, 3076}, - {1788, 534}, - {2245, 422}, - {964, 1794}, - {3231, 1867}, - {918, 2493}, - {4587, 508}, - {558, 261}, - {4445, 1506}, - {328, 1069}, - {4739, 851}, - {2003, 899}, - {1551, 1322}, - {416, 1259}, - {2901, 1964}, - {395, 1647}, - {3807, 1377}, - {793, 1888}, - {3957, 2926}, - {2183, 1525}, - {2541, 1117}, - {593, 2425}, - {1043, 2550}, - {2115, 767}, - {4356, 228}, - {2131, 495}, - {3442, 2515}, - {1755, 2417}, - {3356, 3076}, - {960, 534}, - {4200, 422}, - {1401, 1794}, - {2164, 1867}, - {1028, 2493}, - {3475, 508}, - {1011, 261}, - {4371, 1506}, - {123, 1069}, - {4526, 851}, - {3816, 899}, - {1178, 1322}, - {3142, 1259}, - {2712, 1964}, - {4025, 1647}, - {1596, 1377}, - {4008, 1888}, - {317, 2926}, - {4236, 1525}, - {515, 1117}, - {1188, 2425}, - {3803, 2550}, - {1568, 767}, - {2308, 1377}, - {816, 1888}, - {3138, 2926}, - {849, 1525}, - {4738, 1468}, - {462, 1536}, - {4313, 231}, - {1045, 1598}, - {3675, 1168}, - {1726, 1521}, - {2182, 1377}, - {970, 1888}, - {3264, 2926}, - {984, 231}, - {4602, 62}, - {619, 1108}, - {4436, 1108}, - {4099, 719}, - {983, 1845}, - {3063, 1845}, - {2126, 332}, - {4559, 2829}, - {4157, 2714}, - {2528, 416}, - {176, 1186}, - {2547, 699}, - {1757, 699}, - {3509, 3033}, - {1292, 3558}, - {4079, 2895}, - {909, 3173}, - {3412, 1777}, - {2985, 1934}, - {3731, 1934}, - {1277, 3781}, - {3744, 1978}, - {637, 1978}, - {4500, 811}, - {190, 811}, - {4299, 1467}, - {530, 751}, - {2763, 751}, - {3175, 2385}, - {4629, 456}, - {2398, 456}, - {4644, 266}, - {710, 266}, - {3876, 2509}, - {1203, 866}, - {2970, 866}, - {2048, 1203}, - {4535, 1203}, - {4126, 3714}, - {2579, 1748}, - {44, 2011}, - {2576, 1996}, - {1816, 1996}, - {3368, 3819}, - {1393, 2853}, - {3735, 3391}, - {1106, 3099}, - {3323, 417}, - {2603, 417}, - {4078, 1327}, - {1807, 2419}, - {4100, 620}, - {7, 474}, - {4434, 229}, - {618, 1357}, - {461, 1357}, - {4228, 715}, - {2331, 715}, - {1588, 1152}, - {359, 1152}, - {2717, 449}, - {349, 302}, - {4064, 2352}, - {1187, 2524}, - {3860, 3299}, - {4237, 3650}, - {451, 2227}, - {4689, 2681}, - {2327, 2904}, - {4728, 2892}, - {785, 831}, - {3817, 1080}, - {1273, 1942}, - {4354, 1942}, - {609, 2921}, - {2529, 489}, - {3262, 658}, - {4565, 2214}, - {2184, 2214}, - {4584, 2683}, - {920, 566}, - {3693, 185}, - {1121, 1698}, - {2884, 419}, - {2000, 2138}, - {4730, 3515}, - {4046, 3392}, - {2635, 1843}, - {310, 1390}, - {2688, 1590}, - {1575, 3319}, - {3608, 3280}, - {1488, 2545}, - {891, 2599}, - {4095, 3747}, - {1276, 1563}, - {2022, 1723}, - {1092, 3706}, - {3414, 3142}, - {1122, 3505}, - {4444, 1667}, - {97, 1327}, - {4585, 620}, - {1359, 11}, - {3503, 1933}, - {968, 3146}, - {173, 3177}, - {1723, 1285}, - {4163, 337}, - {1743, 1285}, - {2468, 3146}, - {2142, 3474}, - {3004, 2326}, - {58, 3247}, - {4507, 2710}, - {2024, 103}, - {1279, 337}, - {667, 2011}, - {2983, 1467}, - {690, 2433}, - {3772, 274}, - {1236, 1634}, - {3847, 90}, - {4341, 776}, - {472, 1432}, - {2737, 3638}, - {3159, 3572}, - {4670, 1540}, - {2460, 2168}, - {4665, 1802}, - {764, 3604}, - {3890, 3867}, - {1144, 2702}, - {4474, 507}, - {953, 1607}, - {4199, 1159}, - {1404, 1}, - {2167, 1272}, - {1033, 530}, - {3472, 289}, - {1003, 428}, - {4366, 2555}, - {137, 2372}, - {4529, 1}, - {1626, 1}, - {2366, 701}, - {797, 2496}, - {796, 25}, - {4713, 755}, - {391, 28}, - {4330, 1151}, - {1365, 725}, - {3493, 2768}, - {966, 1421}, - {169, 1328}, - {1719, 3807}, - {4171, 3441}, - {1753, 3193}, - {2473, 1271}, - {2133, 1724}, - {3010, 153}, - {586, 2084}, - {4382, 506}, - {2226, 2933}, - {2513, 793}, - {135, 818}, - {4185, 2703}, - {1005, 2703}, - {3765, 2703}, - {1759, 2703}, - {565, 25}, - {1390, 1607}, - {3698, 1159}, - {1402, 1}, - {2229, 530}, - {2584, 1272}, - {3235, 428}, - {1767, 289}, - {3720, 701}, - {4405, 755}, - {3478, 28}, - {1024, 1151}, - {3444, 725}, - {2134, 2768}, - {2477, 1421}, - {2265, 1269}, - {3112, 1619}, - {1618, 1141}, - {3846, 420}, - {4282, 2505}, - {3610, 723}, - {1164, 296}, - {3582, 447}, - {2638, 1251}, - {2421, 3317}, - {4178, 2651}, - {976, 3810}, - {3648, 3437}, - {584, 1702}, - {4558, 1234}, - {1928, 496}, - {238, 3429}, - {732, 3350}, - {2452, 1792}, - {4673, 1438}, - {2422, 1524}, - {3201, 3416}, - {1448, 3238}, - {3581, 2478}, - {321, 2401}, - {4742, 3612}, - {2010, 1246}, - {1555, 1348}, - {420, 1348}, - {2891, 3220}, - {388, 3220}, - {3821, 1441}, - {780, 1441}, - {3954, 276}, - {1480, 276}, - {3515, 906}, - {728, 906}, - {234, 906}, - {1700, 906}, - {3980, 69}, - {1684, 69}, - {2781, 806}, - {1920, 806}, - {2881, 806}, - {2288, 806}, - {2577, 1877}, - {655, 1877}, - {1083, 1358}, - {2100, 1358}, - {4465, 1358}, - {2046, 1358}, - {3437, 260}, - {1833, 260}, - {3210, 260}, - {245, 260}, - {4645, 166}, - {1892, 166}, - {1431, 166}, - {525, 166}, - {2832, 79}, - {527, 79}, - {3894, 79}, - {765, 79}, - {4024, 1061}, - {1695, 1061}, - {3156, 1061}, - {1232, 1061}, - {500, 1347}, - {1492, 1347}, - {3910, 1520}, - {1447, 1520}, - {2860, 554}, - {2423, 554}, - {2640, 1163}, - {2950, 1163}, - {2072, 306}, - {4516, 306}, - {4106, 306}, - {2558, 306}, - {24, 786}, - {2596, 786}, - {1801, 786}, - {3387, 786}, - {1415, 163}, - {2095, 163}, - {2938, 163}, - {34, 163}, - {872, 371}, - {2292, 371}, - {4545, 371}, - {2275, 371}, - {3340, 199}, - {1322, 199}, - {3458, 199}, - {1939, 199}, - {2795, 1453}, - {229, 1453}, - {726, 1453}, - {2445, 1453}, - {4681, 329}, - {2431, 329}, - {3195, 329}, - {1466, 329}, - {3596, 498}, - {695, 498}, - {4414, 498}, - {2256, 498}, - {1814, 609}, - {81, 609}, - {2627, 609}, - {64, 609}, - {4127, 127}, - {1101, 127}, - {3659, 127}, - {3120, 127}, - {1605, 787}, - {3837, 787}, - {4270, 787}, - {3598, 787}, - {1170, 221}, - {3595, 221}, - {1971, 221}, - {2654, 221}, - {2432, 189}, - {3921, 189}, - {1207, 189}, - {3162, 189}, - {2740, 328}, - {3972, 328}, - {1712, 328}, - {3963, 328}, - {276, 95}, - {4326, 95}, - {401, 95}, - {2672, 95}, - {2363, 352}, - {4288, 352}, - {3849, 2121}, - {2904, 2121}, - {412, 304}, - {2870, 304}, - {1520, 304}, - {3083, 304}, - {1672, 2287}, - {3474, 2287}, - {1382, 904}, - {4207, 904}, - {4614, 778}, - {3244, 778}, - {952, 2785}, - {3216, 2785}, - {1199, 289}, - {3132, 1368}, - {2695, 1269}, - {3993, 3317}, - {1579, 2651}, - {4039, 1619}, - {295, 1326}, - {4255, 755}, - {539, 28}, - {2898, 1141}, - {1986, 420}, - {4748, 1607}, - {4068, 2505}, - {2677, 327}, - {327, 707}, - {2655, 50}, - {1586, 222}, - {3594, 731}, - {1465, 432}, - {2365, 30}, - {2663, 800}, - {428, 167}, - {1169, 1077}, - {2015, 105}, - {4272, 637}, - {1982, 1272}, - {3640, 530}, - {1611, 723}, - {3147, 447}, - {2651, 296}, - {2380, 428}, - {4266, 3810}, - {3831, 181}, - {2879, 171}, - {389, 7}, - {2894, 101}, - {1508, 551}, - {3102, 184}, - {1697, 286}, - {2470, 29}, - {2244, 482}, - {4392, 68}, - {3711, 320}, - {3026, 268}, - {551, 134}, - {3034, 131}, - {1363, 485}, - {3243, 307}, - {1862, 191}, - {4691, 37}, - {363, 544}, - {2916, 198}, - {3626, 57}, - {4232, 107}, - {1945, 44}, - {4242, 162}, - {1145, 120}, - {4019, 5}, - {762, 793}, - {1296, 1251}, - {3393, 818}, - {861, 2398}, - {22, 25}, - {1849, 1064}, - {4104, 181}, - {1860, 171}, - {2605, 7}, - {2082, 101}, - {3033, 551}, - {921, 184}, - {4217, 286}, - {1392, 29}, - {2158, 482}, - {1012, 68}, - {3445, 320}, - {1025, 268}, - {4357, 134}, - {147, 131}, - {4533, 485}, - {2063, 307}, - {2954, 191}, - {6, 37}, - {855, 544}, - {2269, 198}, - {4530, 57}, - {2299, 107}, - {3325, 44}, - {1335, 162}, - {3480, 120}, - {1679, 5}, - {3170, 1151}, - {1216, 1150}, - {480, 725}, - {1460, 2312}, - {3889, 2803}, - {1477, 2988}, - {2847, 327}, - {2442, 153}, - {2676, 2084}, - {905, 1159}, - {4082, 3889}, - {1293, 1631}, - {2040, 1523}, - {1119, 3563}, - {3427, 3281}, - {1091, 3354}, - {4476, 1611}, - {52, 1391}, - {4560, 394}, - {2272, 1870}, - {2590, 98}, - {633, 2776}, - {1066, 2346}, - {2058, 602}, - {4455, 996}, - {2086, 871}, - {3422, 1097}, - {1858, 979}, - {3241, 2255}, - {2170, 2091}, - {3016, 632}, - {153, 1074}, - {948, 839}, - {2233, 65}, - {4617, 898}, - {2219, 983}, - {3268, 204}, - {1396, 61}, - {3370, 2943}, - {3029, 2658}, - {2161, 2254}, - {4600, 180}, - {4194, 403}, - {2467, 1233}, - {131, 290}, - {2519, 1863}, - {1724, 462}, - {3470, 244}, - {1338, 1530}, - {2882, 1614}, - {2006, 1349}, - {4737, 849}, - {4048, 692}, - {2646, 2387}, - {304, 2320}, - {2683, 2722}, - {1566, 741}, - {3613, 1116}, - {1481, 1793}, - {4361, 925}, - {604, 1293}, - {2523, 1321}, - {3259, 1672}, - {4556, 21}, - {2196, 631}, - {4592, 1922}, - {928, 3700}, - {3688, 3771}, - {1128, 2798}, - {1682, 13}, - {3165, 452}, - {1213, 1909}, - {478, 1771}, - {1455, 2511}, - {3892, 503}, - {1482, 269}, - {2833, 1503}, - {2466, 1165}, - {2684, 726}, - {1142, 1182}, - {3844, 1579}, - {1607, 1375}, - {2348, 1857}, - {784, 1384}, - {3093, 1837}, - {806, 2147}, - {4690, 3042}, - {425, 2329}, - {4339, 3025}, - {2424, 1504}, - {2747, 896}, - {482, 1127}, - {1220, 782}, - {1919, 2213}, - {4322, 1744}, - {1927, 1255}, - {3555, 550}, - {1694, 703}, - {3113, 1195}, - {1319, 461}, - {1827, 1762}, - {4124, 1472}, - {1882, 1488}, - {2604, 3399}, - {2094, 1990}, - {3051, 2036}, - {1663, 816}, - {2404, 1826}, - {754, 124}, - {3203, 860}, - {750, 1032}, - {4671, 390}, - {1921, 1200}, - {2813, 681}, - {205, 1220}, - {701, 1383}, - {2415, 3570}, - {4663, 3387}, - {1479, 1526}, - {3612, 241}, - {2103, 850}, - {2284, 2769}, - {4550, 2347}, - {2282, 2544}, - {3348, 444}, - {1312, 339}, - {3459, 1588}, - {2946, 2031}, - {4522, 3107}, - {4114, 2975}, - {2565, 152}, - {14, 838}, - {2586, 1054}, - {1795, 2910}, - {3397, 2871}, - {0, 2858}, - {0, 3204}, - {0, 1786}, - {0, 1873}, - {0, 3431}, - {0, 3823}, - {0, 3626}, - {0, 1955}, - {0, 2008}, - {0, 856}, - {0, 1423}, - {0, 781}, - {0, 2249}, - {0, 2332}, - {0, 1101}, - {0, 513}, - {0, 218}, - {0, 2404}, - {0, 2465}, - {0, 3252}, - {0, 801}, - {0, 1268}, - {0, 3603}, - {0, 3671}, - {0, 1695}, + {4702, 1405}, + {3898, 3775}, + {691, 1697}, + {2885, 688}, + {1307, 3906}, + {3285, 2179}, + {1177, 1095}, + {1334, 1510}, + {4211, 3114}, + {1981, 1104}, + {3683, 2024}, + {1217, 1636}, + {989, 133}, + {2605, 3143}, + {979, 512}, + {3631, 2642}, + {819, 3444}, + {1683, 1473}, + {4532, 657}, + {2275, 1220}, + {3936, 2514}, + {3009, 422}, + {2697, 3033}, + {790, 2169}, + {2693, 2706}, + {549, 666}, + {2572, 1796}, + {4579, 3753}, + {1702, 2673}, + {4009, 1806}, + {2352, 861}, + {2587, 1116}, + {2845, 1770}, + {1275, 2717}, + {2861, 1158}, + {173, 3944}, + {2982, 3010}, + {4411, 911}, + {1507, 1252}, + {3823, 3016}, + {2117, 1344}, + {2679, 3820}, + {3036, 2791}, + {1170, 1939}, + {3030, 2891}, + {308, 992}, + {2888, 2019}, + {4213, 3574}, + {1331, 2421}, + {3659, 2023}, + {2007, 1105}, + {2147, 1610}, + {2449, 179}, + {4023, 3123}, + {2456, 636}, + {4489, 2619}, + {2295, 3488}, + {75, 1437}, + {3107, 679}, + {767, 3480}, + {2533, 2535}, + {2551, 2536}, + {2877, 3232}, + {1239, 335}, + {2866, 3336}, + {130, 1530}, + {3018, 148}, + {4394, 2266}, + {1544, 3709}, + {3856, 453}, + {2089, 1609}, + {2615, 1011}, + {2809, 1860}, + {1230, 2845}, + {2816, 1989}, + {31, 3759}, + {2960, 523}, + {4445, 654}, + {1559, 1468}, + {3863, 2986}, + {2220, 2559}, + {843, 1491}, + {1066, 336}, + {2913, 3229}, + {1055, 494}, + {3106, 2500}, + {1194, 3367}, + {1607, 1326}, + {4491, 842}, + {2218, 3382}, + {3869, 2660}, + {259, 2465}, + {624, 3324}, + {3458, 191}, + {611, 3431}, + {2768, 1539}, + {474, 432}, + {2016, 2301}, + {3691, 3674}, + {1380, 435}, + {4205, 1683}, + {4682, 2130}, + {4435, 732}, + {1417, 3589}, + {4424, 1162}, + {2490, 3104}, + {4285, 3855}, + {2831, 1921}, + {1076, 36}, + {3413, 3846}, + {391, 2963}, + {4334, 2586}, + {4749, 3174}, + {1746, 104}, + {4741, 3495}, + {2168, 1700}, + {4618, 519}, + {2517, 2425}, + {748, 3552}, + {3103, 506}, + {52, 1551}, + {1601, 759}, + {1823, 2146}, + {4501, 3059}, + {1811, 1755}, + {3830, 3550}, + {1655, 2047}, + {852, 728}, + {2650, 1680}, + {182, 2777}, + {3138, 3668}, + {1639, 3892}, + {1445, 2752}, + {4461, 1744}, + {1453, 3074}, + {3996, 1203}, + {1611, 2114}, + {1184, 3729}, + {2938, 2221}, + {543, 2109}, + {3551, 1008}, + {1828, 1071}, + {1594, 1852}, + {4277, 2870}, + {1576, 1973}, + {4156, 3777}, + {1424, 2973}, + {1080, 699}, + {2827, 1423}, + {448, 1672}, + {3363, 3845}, + {3514, 2556}, + {3343, 3198}, + {152, 40}, + {3351, 872}, + {1253, 1664}, + {3208, 548}, + {3921, 2404}, + {2236, 3028}, + {4510, 559}, + {1671, 1584}, + {1650, 1583}, + {1433, 228}, + {4475, 1419}, + {1429, 395}, + {4011, 2484}, + {1604, 3411}, + {1198, 1279}, + {2932, 877}, + {533, 2332}, + {3568, 2557}, + {501, 3763}, + {43, 2879}, + {3218, 1824}, + {29, 2995}, + {2807, 1013}, + {218, 1999}, + {2487, 3610}, + {4194, 2380}, + {1938, 2012}, + {4696, 1198}, + {3467, 2506}, + {3111, 3251}, + {274, 304}, + {3119, 3355}, + {1061, 1493}, + {3257, 469}, + {4144, 2230}, + {2452, 3738}, + {4691, 487}, + {1939, 1647}, + {2923, 1540}, + {2763, 234}, + {859, 3297}, + {2774, 410}, + {635, 2468}, + {2643, 3422}, + {4494, 1232}, + {1643, 933}, + {3938, 3426}, + {2268, 2603}, + {2093, 3098}, + {2488, 665}, + {4039, 780}, + {2495, 3864}, + {4437, 2127}, + {2355, 1183}, + {6, 2825}, + {3088, 3165}, + {741, 1167}, + {2567, 1949}, + {2441, 1112}, + {2162, 44}, + {3753, 3212}, + {2177, 290}, + {4756, 586}, + {2031, 3514}, + {2002, 291}, + {0, 1311}, + {4805, 1}, + {2825, 3899}, + {1084, 3630}, + {1422, 1976}, + {4958, 1}, + {4962, 1}, + {401, 1}, + {5086, 1}, + {4709, 1}, + {4983, 1}, + {4136, 1}, + {5040, 1}, + {3042, 1}, + {5058, 1}, + {738, 1}, + {5050, 1}, + {585, 1}, + {4912, 1}, + {4612, 1}, + {4870, 1}, + {4036, 1}, + {4849, 1}, + {2470, 1}, + {5088, 1}, + {3713, 1}, + {5103, 1}, + {4657, 1}, + {4951, 1}, + {476, 1}, + {4833, 1}, + {2908, 1}, + {4829, 1}, + {2584, 1}, + {5087, 1}, + {2579, 1}, + {5009, 1}, + {1178, 1}, + {713, 1}, + {5083, 1}, + {726, 1}, + {3424, 1}, + {5042, 1}, + {1929, 1}, + {4730, 1}, + {5006, 1}, + {4149, 1}, + {2846, 1}, + {4977, 1}, + {937, 1}, + {2577, 1}, + {746, 1}, + {4764, 1}, + {1577, 270}, + {4159, 2355}, + {4862, 1}, + {1081, 1}, + {2835, 1047}, + {5054, 1}, + {4864, 1}, + {4239, 1}, + {4852, 1}, + {1872, 1}, + {4863, 1}, + {2058, 1}, + {4993, 1}, + {2694, 1}, + {5121, 1}, + {3267, 1}, + {5065, 1}, + {4333, 1}, + {5032, 1}, + {1744, 1}, + {5023, 1}, + {2167, 1}, + {4894, 1}, + {2514, 1}, + {4935, 1}, + {3102, 1}, + {4949, 1}, + {248, 1}, + {4994, 1}, + {3441, 1}, + {5017, 1}, + {483, 1}, + {4950, 1}, + {3699, 1}, + {4967, 1}, + {4203, 1}, + {4986, 1}, + {2719, 1}, + {957, 1}, + {5101, 1}, + {213, 1}, + {1335, 1}, + {4881, 1}, + {4734, 1}, + {1779, 1}, + {4840, 1}, + {1928, 1}, + {890, 1}, + {5071, 1}, + {205, 1}, + {3264, 1}, + {4887, 1}, + {4895, 1}, + {4826, 1}, + {5005, 1}, + {2506, 1}, + {755, 1}, + {1750, 1}, + {4611, 1}, + {2365, 1}, + {5104, 1}, + {2823, 1}, + {1203, 3755}, + {2576, 28}, + {372, 3096}, + {2711, 525}, + {4704, 1363}, + {1905, 56}, + {4147, 1395}, + {2481, 748}, + {3906, 2898}, + {4074, 2462}, + {2242, 820}, + {4059, 3101}, + {1534, 2037}, + {3932, 988}, + {3210, 734}, + {140, 1753}, + {2631, 978}, + {821, 2194}, + {2178, 1749}, + {2430, 908}, + {3972, 1212}, + {2444, 1446}, + {4359, 361}, + {2282, 1577}, + {92, 388}, + {3160, 2862}, + {827, 854}, + {2628, 554}, + {1361, 468}, + {1742, 1417}, + {4752, 572}, + {1757, 1049}, + {3750, 1971}, + {1909, 2550}, + {910, 30}, + {2657, 1917}, + {185, 1156}, + {3279, 3184}, + {3393, 556}, + {3193, 2571}, + {357, 1811}, + {3200, 1369}, + {1132, 796}, + {3316, 2149}, + {4090, 3302}, + {2374, 250}, + {4624, 2159}, + {1855, 969}, + {3122, 391}, + {3452, 373}, + {627, 1657}, + {3469, 241}, + {851, 20}, + {3600, 2611}, + {3828, 242}, + {2143, 1786}, + {4403, 2617}, + {1474, 3347}, + {111, 2695}, + {435, 3948}, + {3550, 1075}, + {452, 3633}, + {2518, 1766}, + {581, 704}, + {2172, 2966}, + {3880, 3469}, + {1579, 715}, + {4466, 1925}, + {561, 2200}, + {315, 664}, + {3143, 3614}, + {300, 1098}, + {3032, 3037}, + {127, 3910}, + {2269, 1879}, + {3983, 128}, + {1688, 3917}, + {4493, 2894}, + {385, 2931}, + {168, 3702}, + {3325, 829}, + {178, 3813}, + {2852, 2051}, + {349, 959}, + {2377, 2780}, + {4087, 3238}, + {1809, 968}, + {4673, 2160}, + {4526, 589}, + {4306, 1267}, + {1549, 2307}, + {4290, 1628}, + {2328, 3453}, + {4452, 2653}, + {2965, 198}, + {594, 688}, + {281, 1104}, + {3182, 1394}, + {294, 2522}, + {3065, 480}, + {96, 1500}, + {2279, 349}, + {3948, 2798}, + {1668, 1510}, + {4515, 587}, + {850, 746}, + {1047, 2138}, + {2931, 3055}, + {1063, 1636}, + {3419, 1477}, + {3154, 318}, + {301, 3242}, + {3144, 474}, + {1162, 2521}, + {3287, 3353}, + {4131, 1312}, + {2419, 860}, + {4666, 3360}, + {1815, 2672}, + {389, 1029}, + {162, 1875}, + {3329, 2837}, + {181, 2003}, + {2854, 3748}, + {345, 2994}, + {2380, 672}, + {4092, 1458}, + {1812, 3003}, + {4676, 3876}, + {1274, 3810}, + {934, 2817}, + {2590, 1890}, + {953, 2927}, + {3530, 935}, + {764, 2067}, + {1718, 3571}, + {4547, 2436}, + {2300, 2076}, + {4052, 1131}, + {3883, 623}, + {2289, 2335}, + {4114, 1598}, + {1493, 3490}, + {3958, 2623}, + {3155, 230}, + {90, 1781}, + {2594, 2615}, + {875, 3342}, + {4166, 3933}, + {3806, 2686}, + {1960, 1817}, + {3818, 3015}, + {1841, 1149}, + {3665, 2163}, + {3475, 3670}, + {513, 2295}, + {2905, 2157}, + {1111, 957}, + {2385, 1247}, + {2211, 634}, + {3772, 3443}, + {2217, 175}, + {4706, 2284}, + {2069, 3159}, + {371, 1552}, + {3378, 1114}, + {1057, 3153}, + {2814, 2431}, + {2055, 2670}, + {2256, 3132}, + {4060, 165}, + {2243, 3450}, + {4218, 1627}, + {2404, 607}, + {339, 2386}, + {3359, 3592}, + {1024, 602}, + {2726, 1478}, + {2174, 453}, + {2433, 313}, + {2747, 3896}, + {2945, 2709}, + {1039, 1780}, + {2934, 3034}, + {242, 1097}, + {2804, 2186}, + {4321, 3648}, + {1446, 2338}, + {3780, 2192}, + {2021, 998}, + {2082, 999}, + {2226, 1912}, + {4099, 2816}, + {2235, 2034}, + {4260, 3824}, + {2369, 2908}, + {355, 28}, + {3322, 1363}, + {1012, 748}, + {2740, 2462}, + {4568, 2194}, + {4241, 1749}, + {1527, 1446}, + {4227, 1577}, + {2237, 388}, + {4392, 854}, + {3021, 554}, + {1254, 468}, + {3589, 1417}, + {690, 572}, + {1759, 2917}, + {1346, 3742}, + {4352, 803}, + {1362, 3838}, + {3963, 2025}, + {1477, 1002}, + {1292, 2746}, + {3052, 3256}, + {688, 995}, + {3597, 2185}, + {2445, 1970}, + {2160, 929}, + {3757, 3650}, + {2182, 1064}, + {4757, 2950}, + {2027, 3788}, + {432, 1784}, + {1074, 688}, + {2800, 1104}, + {2710, 1394}, + {2987, 2522}, + {1137, 86}, + {2994, 3494}, + {361, 1692}, + {2849, 512}, + {4242, 2433}, + {1365, 1796}, + {3685, 523}, + {1974, 842}, + {2929, 1326}, + {2762, 654}, + {863, 2332}, + {2777, 1158}, + {637, 1989}, + {2639, 3850}, + {4499, 1927}, + {1647, 59}, + {3940, 3859}, + {2271, 2970}, + {1298, 3185}, + {905, 2595}, + {2523, 1656}, + {922, 2272}, + {3558, 12}, + {739, 1344}, + {1736, 3351}, + {4605, 3086}, + {2357, 1357}, + {4002, 251}, + {709, 565}, + {1180, 1315}, + {3027, 2262}, + {1166, 1665}, + {3135, 480}, + {1315, 1500}, + {1469, 349}, + {4377, 1142}, + {2111, 1294}, + {3827, 3397}, + {946, 3427}, + {1262, 2360}, + {2857, 1456}, + {1268, 2464}, + {3332, 400}, + {1131, 1548}, + {1363, 3163}, + {4244, 2842}, + {2011, 1554}, + {3654, 522}, + {3786, 2097}, + {4189, 778}, + {2335, 3565}, + {4171, 1200}, + {1558, 3073}, + {4058, 3882}, + {3080, 1886}, + {32, 88}, + {2536, 3869}, + {758, 2992}, + {756, 2991}, + {1148, 3656}, + {3061, 909}, + {1159, 3758}, + {3178, 1981}, + {1281, 1021}, + {1486, 2729}, + {4343, 3290}, + {2088, 1032}, + {3860, 2099}, + {2759, 3526}, + {2925, 2222}, + {1053, 1347}, + {2910, 2561}, + {264, 568}, + {2787, 1659}, + {4330, 3259}, + {1430, 2753}, + {3769, 1661}, + {2040, 386}, + {988, 1101}, + {1218, 2885}, + {2817, 687}, + {1231, 1110}, + {3229, 2022}, + {1090, 1093}, + {1395, 2861}, + {4289, 1845}, + {2044, 1106}, + {3766, 1020}, + {44, 1979}, + {496, 751}, + {3638, 2388}, + {507, 1176}, + {2611, 1221}, + {658, 2525}, + {2107, 1941}, + {3795, 24}, + {1459, 3374}, + {4420, 1480}, + {4518, 496}, + {4319, 2247}, + {1618, 223}, + {4325, 504}, + {2319, 1557}, + {4454, 414}, + {2941, 255}, + {1181, 3286}, + {3501, 403}, + {595, 1696}, + {4240, 1954}, + {4567, 914}, + {1875, 912}, + {4586, 1051}, + {2060, 2593}, + {4707, 3088}, + {2695, 1763}, + {966, 253}, + {3269, 3771}, + {202, 2144}, + {1408, 1166}, + {1680, 2475}, + {4669, 1568}, + {1689, 2370}, + {3655, 244}, + {1843, 1448}, + {984, 3478}, + {2733, 2945}, + {303, 1435}, + {3336, 5}, + {1829, 396}, + {1593, 1467}, + {4275, 2351}, + {1575, 1578}, + {4157, 3399}, + {1425, 2493}, + {1079, 136}, + {2828, 1859}, + {450, 2489}, + {3364, 3524}, + {1640, 3520}, + {1444, 2278}, + {4460, 1306}, + {1451, 2607}, + {3998, 530}, + {1612, 1705}, + {1182, 3241}, + {2940, 2762}, + {544, 1695}, + {3553, 405}, + {3406, 1984}, + {3183, 869}, + {283, 3678}, + {3162, 1006}, + {1142, 2993}, + {3306, 3743}, + {4118, 1805}, + {2447, 221}, + {4687, 3752}, + {1791, 3075}, + {1854, 3076}, + {1551, 3587}, + {4307, 733}, + {1574, 3890}, + {4193, 2102}, + {1400, 1218}, + {1087, 2801}, + {2808, 3202}, + {418, 1211}, + {3390, 1983}, + {1863, 642}, + {1539, 1251}, + {4229, 2322}, + {1529, 1616}, + {4070, 3473}, + {1393, 2638}, + {1113, 259}, + {2874, 1769}, + {492, 2633}, + {3474, 3332}, + {4748, 2131}, + {4337, 731}, + {1357, 3588}, + {4347, 1161}, + {2446, 3102}, + {4202, 3853}, + {2898, 1922}, + {1143, 38}, + {3477, 3849}, + {485, 2964}, + {3966, 3043}, + {3744, 3599}, + {2173, 710}, + {3752, 3903}, + {1749, 2211}, + {3876, 1085}, + {3540, 2863}, + {586, 3130}, + {2969, 1078}, + {1188, 2028}, + {779, 1490}, + {1125, 339}, + {3000, 3230}, + {1141, 495}, + {3197, 2502}, + {1259, 3368}, + {1511, 1325}, + {4409, 840}, + {2140, 3381}, + {3802, 2657}, + {1067, 2906}, + {842, 3728}, + {2772, 800}, + {856, 3831}, + {3462, 2016}, + {1013, 990}, + {1814, 2754}, + {4629, 3260}, + {2370, 1000}, + {4133, 2193}, + {2909, 323}, + {2510, 1479}, + {921, 2540}, + {2521, 1367}, + {439, 3274}, + {2655, 2396}, + {4747, 558}, + {1912, 2039}, + {4152, 2403}, + {2472, 3131}, + {2681, 3333}, + {3035, 2430}, + {1169, 1383}, + {3029, 2537}, + {309, 461}, + {2889, 1517}, + {4212, 3173}, + {1333, 2834}, + {3660, 1523}, + {2008, 635}, + {2589, 581}, + {2844, 1264}, + {1273, 2290}, + {2860, 1623}, + {174, 3448}, + {2984, 2647}, + {4410, 202}, + {1508, 1822}, + {3825, 2658}, + {2118, 3380}, + {1967, 2935}, + {2346, 3707}, + {4175, 849}, + {2337, 3817}, + {4288, 2053}, + {2482, 965}, + {231, 2775}, + {3230, 3225}, + {898, 951}, + {2709, 2153}, + {2660, 2152}, + {3044, 685}, + {1157, 3603}, + {3056, 1118}, + {298, 3021}, + {2906, 3923}, + {4197, 1834}, + {1340, 180}, + {3668, 3929}, + {1994, 2936}, + {3916, 3471}, + {4065, 2286}, + {2253, 1289}, + {4073, 2622}, + {1545, 638}, + {3923, 1599}, + {3205, 3307}, + {129, 2696}, + {2623, 1590}, + {829, 458}, + {2164, 3099}, + {2440, 3564}, + {3956, 779}, + {2434, 3863}, + {4346, 2125}, + {2290, 1182}, + {104, 2826}, + {3177, 3166}, + {832, 1169}, + {2621, 1951}, + {1348, 2206}, + {1755, 675}, + {4745, 3622}, + {1747, 1111}, + {3740, 3041}, + {1915, 2053}, + {931, 1870}, + {2669, 113}, + {194, 3907}, + {3271, 2889}, + {3382, 2504}, + {3201, 3252}, + {343, 306}, + {3189, 3356}, + {1118, 1494}, + {3331, 471}, + {4100, 2229}, + {2390, 3736}, + {4632, 485}, + {1846, 833}, + {3109, 2014}, + {2708, 833}, + {617, 3704}, + {3461, 975}, + {837, 2904}, + {3607, 346}, + {3839, 1724}, + {2153, 346}, + {4415, 3822}, + {1463, 3049}, + {98, 2}, + {445, 2526}, + {3534, 1513}, + {436, 2045}, + {2501, 320}, + {591, 2}, + {2186, 3539}, + {3891, 2896}, + {1591, 1388}, + {4457, 118}, + {574, 464}, + {302, 1409}, + {3149, 2125}, + {310, 1529}, + {3039, 3335}, + {121, 2543}, + {2259, 52}, + {3975, 1935}, + {1679, 2152}, + {4502, 3467}, + {373, 3449}, + {180, 2329}, + {3313, 2}, + {161, 2668}, + {2839, 584}, + {360, 1639}, + {2388, 3301}, + {4103, 2712}, + {1821, 1646}, + {4661, 486}, + {4536, 2059}, + {4294, 805}, + {1573, 3741}, + {4304, 941}, + {2342, 2940}, + {4442, 3802}, + {2962, 1741}, + {1223, 301}, + {3561, 3797}, + {537, 3024}, + {584, 3025}, + {293, 3631}, + {3173, 644}, + {287, 3943}, + {3053, 2155}, + {108, 1139}, + {2288, 2857}, + {3961, 3151}, + {1673, 1150}, + {4509, 2057}, + {2936, 3548}, + {2755, 3080}, + {872, 2105}, + {2748, 2760}, + {645, 749}, + {2630, 1740}, + {4516, 3803}, + {1634, 2610}, + {3931, 1746}, + {2280, 932}, + {1211, 2289}, + {997, 3477}, + {0, 2342}, + {0, 378}, + {0, 1432}, + {0, 2626}, + {0, 239}, + {0, 3505}, + {0, 2240}, + {0, 1487}, + {0, 3207}, + {0, 3685}, + {0, 1990}, + {0, 919}, + {0, 3941}, + {0, 1846}, + {0, 723}, + {0, 3068}, + {0, 3554}, + {0, 950}, + {0, 2767}, + {0, 3719}, + {0, 2083}, + {0, 859}, + {0, 2432}, + {0, 1693}, + {0, 3239}, + {0, 2678}, + {0, 673}, + {0, 1782}, + {0, 2951}, + {0, 695}, + {0, 1225}, + {0, 3446}, + {0, 2292}, + {0, 1542}, + {0, 3147}, + {0, 3938}, + {2836, 1421}, + {1210, 928}, + {0, 3164}, + {0, 1555}, + {0, 527}, + {0, 2244}, + {0, 3519}, + {0, 286}, + {0, 2585}, + {0, 2541}, + {0, 3273}, + {0, 561}, + {0, 2406}, + {0, 1874}, + {0, 3772}, + {0, 2864}, + {0, 2209}, + {0, 3662}, + {0, 2829}, + {0, 972}, + {0, 1920}, + {0, 3103}, + {0, 824}, + {0, 1231}, + {0, 3456}, + {0, 2299}, + {0, 1538}, + {0, 3139}, + {0, 2685}, + {0, 1107}, + {0, 1789}, + {0, 2946}, + {0, 680}, + {0, 643}, + {0, 2320}, + {0, 3475}, + {0, 256}, + {0, 2632}, + {0, 3133}, + {0, 122}, + {3854, 122}, + {0, 1416}, + {0, 2448}, {0, 2046}, - {0, 1940}, - {0, 3640}, - {0, 3780}, - {0, 2901}, - {0, 3409}, - {0, 3074}, - {0, 531}, - {0, 423}, - {0, 2735}, - {0, 2412}, - {0, 2500}, + {0, 2441}, + {0, 2705}, + {0, 1140}, + {0, 1807}, + {0, 2987}, + {0, 1004}, + {0, 866}, + {0, 2107}, + {0, 3733}, + {0, 433}, + {0, 1471}, + {0, 2644}, + {0, 201}, + {0, 3739}, + {0, 2061}, + {0, 845}, + {0, 3886}, + {0, 1906}, + {0, 934}, + {0, 2984}, + {0, 873}, + {0, 1333}, + {0, 1626}, + {0, 311}, + {0, 2847}, + {0, 3546}, + {0, 2790}, + {0, 2579}, + {0, 1668}, + {0, 34}, + {0, 3337}, + {0, 1338}, + {0, 725}, + {0, 3067}, + {0, 3557}, + {0, 947}, + {0, 2765}, + {0, 340}, + {0, 2601}, + {0, 3187}, + {0, 3506}, + {0, 532}, + {0, 2445}, + {0, 543}, + {0, 1316}, + {0, 3493}, + {0, 2219}, + {0, 1503}, + {0, 3222}, + {0, 2362}, + {0, 354}, + {697, 80}, + {2731, 48}, + {517, 187}, + {1943, 397}, + {0, 2481}, + {3194, 2056}, + {3394, 1953}, + {4173, 527}, + {2458, 755}, + {2986, 773}, + {2715, 2091}, + {2100, 3434}, + {0, 260}, + {0, 1336}, + {0, 1337}, {0, 510}, - {0, 259}, - {0, 1511}, - {0, 3567}, - {0, 1851}, - {0, 2156}, - {0, 679}, - {0, 884}, + {0, 3534}, + {0, 13}, + {0, 2274}, + {0, 3169}, + {0, 1520}, + {0, 1187}, + {0, 3179}, + {0, 2368}, + {0, 2694}, + {0, 3949}, + {0, 1074}, + {0, 3634}, + {0, 1765}, + {0, 705}, + {0, 2965}, + {0, 3470}, + {0, 716}, + {0, 1924}, + {0, 3167}, + {0, 2578}, + {0, 1667}, + {0, 2257}, + {0, 33}, + {0, 1330}, + {0, 3339}, + {0, 3100}, {0, 1339}, - {0, 3562}, - {0, 3627}, - {0, 1629}, - {0, 2106}, - {0, 1872}, - {0, 3693}, - {0, 3728}, - {0, 2842}, - {0, 2995}, - {0, 3485}, - {0, 2122}, - {0, 2034}, - {0, 3153}, - {0, 3686}, - {0, 3764}, - {0, 2104}, - {0, 1915}, - {0, 959}, - {0, 2169}, - {0, 519}, - {0, 2945}, - {0, 3023}, - {0, 200}, - {0, 777}, - {0, 1090}, - {0, 3082}, - {0, 2700}, - {0, 3870}, - {0, 2631}, - {0, 3818}, - {0, 2873}, - {0, 3804}, - {0, 3057}, - {0, 3322}, - {0, 2083}, - {0, 2212}, - {0, 3303}, - {0, 3533}, + {0, 271}, + {0, 114}, + {0, 1622}, + {0, 2628}, + {0, 1263}, + {0, 3128}, + {0, 2318}, + {0, 363}, + {0, 2207}, + {0, 2325}, + {0, 3277}, + {0, 3737}, + {0, 2907}, + {0, 2062}, + {0, 2804}, + {0, 846}, + {0, 1911}, + {0, 3885}, + {0, 2505}, + {0, 1905}, + {0, 651}, + {0, 345}, + {0, 1504}, + {0, 2539}, + {0, 1386}, + {0, 3258}, + {0, 2419}, + {0, 570}, + {0, 2013}, + {0, 2408}, + {0, 3110}, + {0, 2899}, + {0, 3726}, + {0, 821}, + {0, 3828}, + {0, 2038}, + {0, 987}, + {0, 2735}, + {0, 3270}, + {0, 977}, + {0, 2195}, + {0, 1934}, + {0, 945}, + {0, 3835}, + {0, 808}, + {0, 2836}, + {0, 3694}, + {0, 2121}, + {0, 463}, + {4758, 1}, + {3907, 1086}, + {1704, 2210}, + {801, 1583}, + {2573, 2315}, + {63, 2199}, + {3092, 973}, + {4449, 1265}, + {1677, 586}, + {4665, 120}, + {2101, 2332}, + {4530, 3118}, + {2619, 1563}, + {816, 1091}, + {3146, 3107}, + {165, 2415}, + {4538, 2621}, + {4272, 3144}, + {1597, 147}, + {4282, 3465}, + {2366, 1615}, + {4429, 621}, + {2970, 2349}, + {1200, 3628}, + {3543, 617}, + {551, 1531}, + {4646, 1482}, + {4467, 324}, + {1438, 3247}, + {4455, 483}, + {2461, 2530}, + {4322, 3359}, + {2803, 1304}, + {1045, 852}, + {3370, 3357}, + {433, 2669}, + {598, 3947}, + {291, 2693}, + {3174, 1794}, + {297, 3022}, + {3057, 1117}, + {95, 1065}, + {2281, 3683}, + {3950, 2287}, + {1663, 2178}, + {4519, 943}, + {4523, 944}, + {4296, 1926}, + {1563, 2809}, + {4287, 2054}, + {2338, 3816}, + {4453, 2925}, + {2964, 728}, + {1232, 1408}, + {1465, 2919}, + {528, 3945}, + {3422, 769}, + {3150, 2087}, + {304, 3094}, + {1697, 1713}, + {1165, 3580}, + {3286, 2734}, + {4134, 986}, + {2426, 1670}, + {4670, 2603}, + {1819, 3664}, + {383, 1284}, + {170, 606}, + {3326, 3460}, + {179, 140}, + {2851, 2319}, + {348, 3129}, + {2378, 1576}, + {4086, 1088}, + {1807, 3134}, + {4672, 2400}, + {1269, 2273}, + {938, 3502}, + {2583, 553}, + {948, 3180}, + {3527, 1329}, + {770, 32}, + {1714, 2553}, + {4545, 3857}, + {2296, 53}, + {4050, 1429}, + {3886, 1838}, + {4107, 1055}, + {2293, 3765}, + {4116, 918}, + {1499, 2858}, + {3949, 3675}, + {93, 426}, + {2596, 3671}, + {876, 77}, + {4163, 2356}, + {1168, 853}, + {1956, 384}, + {1420, 3316}, + {1840, 1449}, + {3670, 243}, + {3472, 2613}, + {510, 3782}, + {2903, 236}, + {1109, 1349}, + {2383, 1066}, + {2213, 1848}, + {3768, 2873}, + {2215, 1969}, + {4703, 3773}, + {2072, 653}, + {369, 706}, + {3374, 1419}, + {1052, 2957}, + {2811, 3852}, + {2057, 188}, + {2250, 3000}, + {4063, 1957}, + {2244, 2884}, + {4223, 885}, + {2403, 1876}, + {340, 3908}, + {3362, 2477}, + {1027, 1871}, + {2729, 770}, + {2180, 753}, + {2429, 2142}, + {3970, 3063}, + {2443, 1344}, + {4360, 3549}, + {2283, 2782}, + {91, 960}, + {3161, 1676}, + {828, 2773}, + {2629, 3672}, + {2749, 2374}, + {2943, 3391}, + {1040, 422}, + {2935, 3287}, + {246, 1461}, + {2802, 200}, + {4323, 2656}, + {1448, 3766}, + {3785, 207}, + {2024, 1321}, + {2079, 1322}, + {2227, 574}, + {4095, 3498}, + {2232, 98}, + {518, 2224}, + {2373, 3220}, + {352, 1497}, + {3320, 1189}, + {1009, 3215}, + {2739, 2373}, + {4575, 2710}, + {4238, 3902}, + {1531, 1147}, + {4231, 3597}, + {2240, 1820}, + {3023, 2982}, + {1257, 3445}, + {3592, 645}, + {694, 1907}, + {1754, 3224}, + {1349, 2574}, + {4349, 1682}, + {1359, 2249}, + {1481, 1324}, + {1288, 3371}, + {3047, 3056}, + {683, 1319}, + {3594, 189}, + {2442, 178}, + {2163, 1611}, + {3754, 2661}, + {2176, 1244}, + {4755, 3146}, + {2032, 2303}, + {426, 431}, + {3400, 2151}, + {1072, 2291}, + {2798, 3231}, + {2712, 3687}, + {2985, 2923}, + {1139, 2029}, + {2998, 2812}, + {363, 815}, + {4249, 3854}, + {1367, 2549}, + {3686, 1930}, + {1975, 711}, + {2924, 290}, + {2765, 1515}, + {860, 2519}, + {2773, 1399}, + {634, 3243}, + {2645, 2427}, + {969, 517}, + {1644, 2084}, + {3939, 2438}, + {2267, 3162}, + {1294, 2928}, + {907, 3696}, + {2520, 836}, + {917, 3494}, + {3552, 2044}, + {743, 954}, + {1731, 2785}, + {4603, 3237}, + {2354, 967}, + {3997, 2166}, + {714, 1904}, + {1176, 991}, + {3028, 3800}, + {3137, 2787}, + {1311, 3731}, + {1472, 2112}, + {4382, 482}, + {2113, 3735}, + {3829, 2711}, + {950, 2690}, + {1260, 3940}, + {2859, 1081}, + {1270, 3629}, + {3337, 1761}, + {1127, 700}, + {1366, 2972}, + {4251, 877}, + {2013, 712}, + {3656, 1929}, + {3789, 327}, + {4187, 1486}, + {2339, 2547}, + {4178, 1377}, + {1566, 3280}, + {4054, 2407}, + {3083, 547}, + {34, 2031}, + {2541, 2398}, + {761, 3126}, + {754, 3125}, + {1149, 506}, + {3058, 1592}, + {1158, 2328}, + {3176, 107}, + {1283, 1280}, + {1483, 3408}, + {4339, 3038}, + {2086, 1285}, + {3859, 328}, + {1010, 1083}, + {4544, 1802}, + {1903, 2702}, + {4555, 2190}, + {2080, 3915}, + {4695, 3039}, + {2703, 875}, + {939, 1277}, + {3261, 2973}, + {224, 3832}, + {1319, 1672}, + {1776, 103}, + {4728, 3175}, + {1761, 578}, + {896, 1380}, + {227, 3412}, + {2424, 3160}, + {3973, 127}, + {2412, 683}, + {4366, 1593}, + {2274, 637}, + {125, 2363}, + {3152, 2871}, + {807, 629}, + {2642, 1516}, + {3012, 2047}, + {786, 3727}, + {546, 1246}, + {873, 316}, + {4001, 3805}, + {1031, 338}, + {2937, 3334}, + {237, 1528}, + {2801, 446}, + {4324, 2267}, + {1452, 3710}, + {711, 457}, + {2029, 1613}, + {891, 812}, + {720, 2068}, + {2881, 1993}, + {1308, 1618}, + {3282, 1653}, + {1175, 2823}, + {1336, 1186}, + {4215, 1519}, + {1973, 2831}, + {3684, 3625}, + {1156, 3574}, + {731, 2435}, + {2670, 1918}, + {438, 1553}, + {3141, 231}, + {909, 2026}, + {1911, 3590}, + {3289, 611}, + {2491, 2033}, + {1048, 1089}, + {1245, 1133}, + {972, 897}, + {2547, 2708}, + {965, 2168}, + {3505, 3920}, + {796, 3018}, + {1712, 59}, + {4587, 1234}, + {2321, 3027}, + {4032, 3806}, + {22, 2513}, + {3812, 2595}, + {1952, 312}, + {3821, 3361}, + {1774, 1508}, + {3663, 490}, + {3479, 2218}, + {2899, 481}, + {1115, 1637}, + {1160, 1638}, + {723, 134}, + {2682, 3140}, + {705, 603}, + {904, 2429}, + {1934, 1472}, + {2687, 656}, + {1394, 3436}, + {4143, 2511}, + {1042, 3861}, + {866, 2774}, + {2757, 1716}, + {329, 1154}, + {646, 2136}, + {869, 3711}, + {4641, 2268}, + {2399, 2141}, + {4115, 1056}, + {999, 132}, + {2592, 2582}, + {516, 1607}, + {2732, 618}, + {4688, 2353}, + {1838, 3638}, + {1201, 626}, + {2397, 1532}, + {3247, 62}, + {5, 2572}, + {3237, 545}, + {3095, 3522}, + {4038, 1379}, + {2368, 794}, + {4616, 3531}, + {1700, 2496}, + {1603, 3002}, + {1827, 3665}, + {4496, 913}, + {1817, 3768}, + {3822, 1994}, + {1654, 1040}, + {862, 2715}, + {171, 1027}, + {1895, 1582}, + {1518, 222}, + {4247, 3313}, + {1506, 393}, + {4083, 2482}, + {316, 878}, + {469, 3403}, + {3494, 2559}, + {1414, 1975}, + {2933, 1160}, + {1870, 1861}, + {1085, 2487}, + {2214, 1856}, + {398, 789}, + {1041, 302}, + {1857, 2887}, + {4531, 1956}, + {1978, 3787}, + {4663, 2948}, + {978, 1431}, + {280, 2384}, + {356, 1505}, + {4482, 3874}, + {3094, 867}, + {1645, 1758}, + {2138, 1213}, + {4504, 2096}, + {857, 2237}, + {116, 1025}, + {319, 1550}, + {568, 263}, + {3423, 3285}, + {579, 428}, + {414, 3433}, + {3725, 917}, + {3281, 2589}, + {1509, 100}, + {1948, 358}, + {4690, 516}, + {2730, 2424}, + {1002, 3551}, + {3310, 505}, + {3436, 1737}, + {2048, 738}, + {692, 2962}, + {2134, 1355}, + {4396, 3084}, + {1480, 3793}, + {13, 1605}, + {514, 171}, + {3123, 2252}, + {520, 632}, + {2600, 2616}, + {693, 3482}, + {2085, 1442}, + {3805, 692}, + {9, 1100}, + {3090, 1559}, + {730, 2875}, + {2571, 3573}, + {2329, 3792}, + {1971, 1864}, + {3793, 1864}, + {2006, 3071}, + {464, 857}, + {3460, 1298}, + {1121, 3066}, + {2892, 3749}, + {2532, 411}, + {4798, 1}, + {1780, 3686}, + {4053, 421}, + {2297, 557}, + {2361, 1704}, + {1946, 45}, + {3819, 3208}, + {1950, 537}, + {4541, 2590}, + {2090, 3512}, + {685, 1410}, + {3615, 567}, + {1287, 3504}, + {3015, 2454}, + {4577, 161}, + {4225, 1594}, + {1546, 2671}, + {4234, 1230}, + {2252, 3161}, + {4389, 2283}, + {3008, 412}, + {1236, 2170}, + {3584, 2282}, + {696, 3244}, + {1740, 1759}, + {4345, 3872}, + {1345, 760}, + {3959, 2770}, + {1492, 3566}, + {1300, 2069}, + {704, 3561}, + {2439, 2726}, + {2184, 3913}, + {2171, 3608}, + {4744, 1800}, + {454, 2997}, + {3414, 3439}, + {1083, 661}, + {2794, 1893}, + {2705, 1366}, + {3003, 479}, + {1117, 3344}, + {2990, 322}, + {344, 2413}, + {2855, 3257}, + {4266, 1003}, + {1379, 1003}, + {3689, 2333}, + {1966, 2333}, + {2922, 2333}, + {2779, 2333}, + {838, 837}, + {2771, 837}, + {613, 837}, + {2648, 837}, + {4506, 850}, + {1657, 850}, + {3942, 850}, + {2261, 850}, + {1290, 493}, + {925, 493}, + {2500, 493}, + {911, 493}, + {3535, 105}, + {747, 105}, + {1756, 105}, + {4623, 105}, + {2363, 2531}, + {3994, 2531}, + {718, 2531}, + {1163, 2531}, + {3040, 281}, + {1171, 281}, + {3148, 281}, + {1310, 281}, + {1457, 164}, + {4367, 164}, + {2104, 164}, + {3833, 164}, + {941, 131}, + {1277, 131}, + {2840, 131}, + {1266, 131}, + {3312, 394}, + {1136, 394}, + {1377, 394}, + {4270, 394}, + {2014, 2334}, + {3651, 2334}, + {3801, 2334}, + {4185, 2334}, + {2343, 811}, + {4191, 811}, + {1571, 811}, + {4041, 811}, + {3075, 3078}, + {23, 3078}, + {2527, 801}, + {775, 801}, + {737, 1134}, + {1152, 1134}, + {3054, 701}, + {1146, 701}, + {3172, 2675}, + {1301, 2675}, + {1490, 620}, + {4350, 620}, + {2098, 906}, + {3845, 906}, + {2561, 906}, + {2865, 906}, + {1255, 1832}, + {2871, 1832}, + {146, 1832}, + {3013, 1832}, + {4383, 1119}, + {1526, 1119}, + {3850, 1119}, + {2092, 1119}, + {734, 303}, + {1150, 303}, + {3050, 303}, + {1144, 303}, + {3171, 1243}, + {1304, 1243}, + {1487, 940}, + {4355, 940}, + {2097, 940}, + {3849, 940}, + {290, 2385}, + {597, 2385}, + {3403, 219}, + {588, 219}, + {2654, 219}, + {440, 219}, + {2037, 226}, + {3756, 226}, + {1421, 226}, + {4317, 226}, + {4694, 1193}, + {4419, 1193}, + {1364, 774}, + {4408, 774}, + {3025, 901}, + {663, 901}, + {3606, 901}, + {1891, 901}, + {1522, 2010}, + {4245, 2010}, + {1505, 1881}, + {4081, 1881}, + {1375, 1094}, + {1138, 1094}, + {2856, 275}, + {467, 2882}, + {3492, 2882}, + {3639, 2256}, + {3222, 2256}, + {33, 569}, + {3228, 569}, + {1229, 7}, + {3071, 7}, + {4046, 7}, + {2334, 7}, + {4592, 23}, + {1728, 23}, + {1735, 434}, + {1352, 434}, + {4344, 272}, + {1344, 272}, + {3952, 2357}, + {1495, 2357}, + {1297, 1046}, + {3059, 1046}, + {700, 2254}, + {3580, 2254}, + {4576, 2377}, + {4224, 2377}, + {1543, 389}, + {4233, 389}, + {2249, 389}, + {1496, 284}, + {3007, 284}, + {1240, 284}, + {3583, 573}, + {698, 573}, + {1738, 573}, + {1350, 573}, + {4342, 802}, + {1341, 2064}, + {3954, 735}, + {1295, 1751}, + {3063, 942}, + {702, 996}, + {3581, 2181}, + {2437, 646}, + {2183, 931}, + {3739, 2655}, + {2170, 1063}, + {4740, 2949}, + {2033, 3789}, + {451, 1785}, + {3415, 232}, + {1082, 497}, + {2795, 3082}, + {2706, 514}, + {3006, 3171}, + {1120, 85}, + {2992, 2914}, + {347, 1691}, + {2853, 513}, + {4269, 1371}, + {1376, 2552}, + {3690, 524}, + {1965, 455}, + {2918, 1076}, + {2778, 727}, + {836, 2692}, + {2770, 16}, + {610, 610}, + {2649, 1223}, + {4505, 1928}, + {1658, 60}, + {3941, 3476}, + {2265, 2612}, + {1293, 247}, + {928, 883}, + {2503, 1290}, + {913, 2271}, + {3538, 10}, + {744, 1345}, + {1758, 2981}, + {4620, 1960}, + {2364, 1358}, + {3992, 249}, + {721, 566}, + {1164, 790}, + {3041, 1375}, + {1174, 1666}, + {3151, 2494}, + {1309, 2569}, + {1458, 348}, + {4365, 1721}, + {2106, 1868}, + {3832, 793}, + {942, 2410}, + {1280, 1171}, + {2842, 441}, + {1267, 2463}, + {3314, 399}, + {1133, 1549}, + {1378, 1365}, + {4265, 333}, + {2015, 1496}, + {3650, 521}, + {3798, 2098}, + {4182, 347}, + {2341, 1276}, + {4190, 1201}, + {1567, 424}, + {4042, 3881}, + {3072, 1885}, + {24, 87}, + {2526, 261}, + {777, 2348}, + {733, 2990}, + {1151, 2802}, + {3051, 907}, + {1145, 1058}, + {3167, 1980}, + {1303, 1022}, + {1489, 2730}, + {4353, 2763}, + {2096, 1033}, + {3848, 1219}, + {2410, 1723}, + {2201, 709}, + {3718, 856}, + {2196, 1144}, + {4721, 3013}, + {2046, 2101}, + {422, 1847}, + {3429, 156}, + {1093, 3942}, + {2783, 2924}, + {4105, 526}, + {3893, 1343}, + {2078, 2245}, + {3901, 1687}, + {1899, 735}, + {3758, 2592}, + {375, 1751}, + {2781, 2584}, + {1102, 3429}, + {4556, 646}, + {4243, 2321}, + {1521, 931}, + {4259, 2655}, + {2233, 609}, + {4407, 1625}, + {2988, 1785}, + {1263, 2716}, + {3604, 232}, + {671, 497}, + {103, 993}, + {430, 1908}, + {3556, 514}, + {441, 2032}, + {2522, 3171}, + {587, 85}, + {2159, 790}, + {3872, 1375}, + {1581, 2569}, + {4459, 348}, + {521, 1721}, + {4, 1171}, + {3251, 441}, + {15, 2463}, + {2837, 399}, + {189, 1496}, + {2489, 521}, + {4154, 2098}, + {1913, 1509}, + {4717, 424}, + {3391, 1888}, + {3186, 974}, + {365, 2990}, + {3196, 831}, + {1140, 2802}, + {3319, 907}, + {4084, 2101}, + {2372, 500}, + {4631, 3720}, + {1853, 1723}, + {3346, 2918}, + {3518, 709}, + {393, 856}, + {3509, 802}, + {959, 2064}, + {3371, 937}, + {3781, 735}, + {2061, 2922}, + {4320, 942}, + {1415, 996}, + {3175, 2181}, + {3405, 646}, + {600, 720}, + {3410, 1063}, + {753, 2949}, + {3544, 3789}, + {3874, 1785}, + {2157, 143}, + {4428, 514}, + {1616, 2914}, + {1437, 1691}, + {1635, 513}, + {4645, 1371}, + {1626, 2552}, + {3701, 455}, + {1804, 1076}, + {1025, 727}, + {2752, 2692}, + {338, 16}, + {3298, 610}, + {3335, 613}, + {3522, 1223}, + {381, 1928}, + {3529, 60}, + {949, 3476}, + {3375, 2612}, + {3764, 247}, + {2071, 1290}, + {4326, 2271}, + {1409, 10}, + {2838, 1345}, + {2593, 2981}, + {1001, 1960}, + {2601, 1358}, + {522, 249}, + {2722, 566}, + {4685, 1666}, + {1835, 2494}, + {4108, 1868}, + {2407, 793}, + {1036, 2410}, + {880, 1171}, + {2745, 441}, + {867, 1549}, + {3430, 1365}, + {1028, 333}, + {1801, 1496}, + {4656, 3825}, + {2401, 347}, + {4111, 1276}, + {640, 1201}, + {252, 424}, + {3128, 87}, + {234, 261}, + {2939, 2348}, + {71, 2990}, + {2318, 1614}, + {3999, 1058}, + {1707, 1980}, + {4604, 2270}, + {4444, 2763}, + {4667, 1033}, + {1682, 1219}, + {4660, 1723}, + {2108, 1752}, + {4533, 735}, + {2614, 2922}, + {809, 646}, + {3153, 720}, + {159, 1785}, + {4723, 143}, + {4376, 514}, + {1323, 3543}, + {4364, 16}, + {2413, 2275}, + {4217, 639}, + {2886, 1518}, + {1173, 1171}, + {3498, 441}, + {458, 1496}, + {1787, 2990}, + {1622, 1614}, + {4314, 1723}, + {1610, 1752}, + {4138, 1165}, + {1454, 2145}, + {1043, 3699}, + {2797, 2263}, + {407, 1483}, + {3399, 1043}, + {1436, 797}, + {1649, 2116}, + {4634, 2390}, + {1659, 1735}, + {3693, 415}, + {1806, 2755}, + {1014, 989}, + {2769, 229}, + {351, 2663}, + {3295, 3640}, + {1556, 214}, + {1851, 1296}, + {4529, 1991}, + {1844, 2859}, + {3794, 108}, + {1685, 1853}, + {811, 1588}, + {2612, 630}, + {128, 1168}, + {3187, 722}, + {3328, 639}, + {3519, 550}, + {387, 3508}, + {3525, 64}, + {956, 1730}, + {3385, 2263}, + {3759, 1483}, + {2067, 1043}, + {4328, 797}, + {1406, 2116}, + {1441, 2390}, + {1641, 1735}, + {4640, 415}, + {1629, 2755}, + {3698, 989}, + {1799, 229}, + {1029, 2663}, + {2758, 3640}, + {333, 214}, + {3302, 1296}, + {132, 1991}, + {403, 2859}, + {3508, 108}, + {392, 1853}, + {2555, 1588}, + {557, 630}, + {2205, 1168}, + {3914, 722}, + {1623, 639}, + {4423, 550}, + {3179, 3508}, + {3401, 64}, + {603, 1730}, + {3411, 630}, + {757, 1168}, + {3539, 722}, + {3877, 639}, + {2161, 2275}, + {4430, 1518}, + {1620, 883}, + {2671, 1076}, + {3049, 727}, + {1154, 2692}, + {3066, 630}, + {296, 1168}, + {2897, 722}, + {4201, 883}, + {1347, 1290}, + {3664, 3040}, + {2001, 3040}, + {762, 2903}, + {2538, 2402}, + {3888, 2402}, + {4110, 3364}, + {2286, 467}, + {4119, 3264}, + {1488, 1387}, + {3947, 331}, + {3169, 2555}, + {99, 2555}, + {2591, 321}, + {881, 1278}, + {3974, 1526}, + {3729, 297}, + {2195, 3275}, + {3717, 456}, + {1767, 456}, + {3871, 3338}, + {3570, 816}, + {577, 816}, + {2966, 2627}, + {1189, 2627}, + {4101, 1537}, + {3894, 177}, + {2074, 177}, + {3899, 3442}, + {1896, 595}, + {3760, 595}, + {3380, 2372}, + {374, 2372}, + {2780, 582}, + {1097, 955}, + {1224, 955}, + {993, 1938}, + {2603, 1938}, + {981, 2065}, + {3628, 3798}, + {810, 429}, + {1686, 766}, + {4535, 766}, + {2270, 2938}, + {3937, 3934}, + {3965, 3936}, + {3738, 2687}, + {2189, 1816}, + {3751, 1816}, + {1760, 1036}, + {3879, 2162}, + {3537, 2100}, + {582, 2293}, + {2972, 2154}, + {1187, 539}, + {1320, 539}, + {1777, 1360}, + {4729, 1360}, + {1762, 1709}, + {3726, 1709}, + {1941, 2609}, + {897, 298}, + {2686, 1738}, + {229, 2597}, + {3256, 3413}, + {4261, 2158}, + {4546, 690}, + {2083, 3026}, + {4693, 3926}, + {2704, 1830}, + {936, 166}, + {3262, 3918}, + {221, 2930}, + {3904, 2930}, + {4089, 3576}, + {2231, 756}, + {4106, 3878}, + {1514, 1202}, + {3934, 1202}, + {3192, 2788}, + {167, 3217}, + {2638, 1192}, + {817, 1996}, + {1302, 1573}, + {912, 209}, + {2513, 3311}, + {926, 371}, + {3546, 2478}, + {736, 3400}, + {1743, 1295}, + {4608, 886}, + {2351, 3407}, + {4005, 2566}, + {1005, 2989}, + {1205, 3655}, + {2834, 910}, + {1216, 3756}, + {3246, 1978}, + {1069, 1023}, + {1418, 2731}, + {4278, 3293}, + {2025, 1036}, + {3783, 2100}, + {2720, 194}, + {2991, 1566}, + {1134, 2011}, + {3005, 1454}, + {359, 585}, + {2841, 2375}, + {4252, 585}, + {1371, 2011}, + {3680, 2379}, + {1980, 3218}, + {2863, 3425}, + {2564, 2347}, + {963, 1459}, + {2542, 2375}, + {395, 429}, + {2700, 1537}, + {4712, 3145}, + {1874, 2860}, + {2890, 1771}, + {1119, 814}, + {2457, 2276}, + {2137, 3513}, + {3697, 563}, + {2150, 3189}, + {4639, 1340}, + {2010, 46}, + {460, 2544}, + {3448, 3847}, + {1129, 37}, + {2887, 1424}, + {1661, 1293}, + {3416, 518}, + {3163, 473}, + {295, 2}, + {3184, 317}, + {1155, 2411}, + {3296, 357}, + {4112, 1259}, + {2438, 1001}, + {4684, 3261}, + {1803, 2}, + {3622, 2}, + {523, 2724}, + {2597, 650}, + {689, 938}, + {3813, 109}, + {1479, 1821}, + {4395, 841}, + {4228, 1403}, + {4590, 450}, + {1860, 3115}, + {4569, 294}, + {2053, 2444}, + {4716, 3234}, + {2698, 1678}, + {970, 952}, + {3273, 641}, + {186, 1617}, + {277, 449}, + {606, 3481}, + {3471, 580}, + {461, 170}, + {2009, 799}, + {3681, 183}, + {1373, 183}, + {4210, 183}, + {288, 183}, + {583, 938}, + {2658, 518}, + {447, 473}, + {2036, 2}, + {1426, 2411}, + {4309, 317}, + {3352, 1259}, + {3504, 357}, + {408, 2724}, + {3516, 109}, + {973, 1821}, + {3368, 841}, + {3773, 1403}, + {2052, 450}, + {4313, 3115}, + {1419, 192}, + {2570, 1630}, + {2868, 2248}, + {1249, 567}, + {2876, 3172}, + {139, 1352}, + {3010, 14}, + {4388, 454}, + {3843, 25}, + {2095, 1443}, + {2276, 1850}, + {2042, 741}, + {569, 2172}, + {3569, 404}, + {1220, 3676}, + {1977, 2366}, + {4186, 368}, + {2349, 3328}, + {4299, 1426}, + {2475, 268}, + {209, 2629}, + {3219, 3770}, + {884, 252}, + {2716, 1332}, + {3778, 1053}, + {3925, 1839}, + {2402, 2883}, + {3928, 1958}, + {1389, 1958}, + {4064, 676}, + {3345, 676}, + {332, 1436}, + {2744, 1436}, + {1004, 3651}, + {4082, 3651}, + {3895, 900}, + {2070, 900}, + {3892, 900}, + {1894, 900}, + {3771, 784}, + {3389, 784}, + {382, 509}, + {2786, 509}, + {1089, 509}, + {3988, 509}, + {3723, 2133}, + {2200, 2133}, + {3734, 936}, + {1775, 936}, + {3864, 936}, + {3567, 936}, + {571, 126}, + {2959, 126}, + {1199, 126}, + {1059, 126}, + {858, 409}, + {2764, 409}, + {844, 409}, + {3450, 409}, + {1015, 210}, + {1826, 210}, + {4638, 210}, + {2386, 210}, + {4122, 375}, + {4072, 375}, + {3909, 375}, + {2065, 375}, + {3917, 74}, + {1880, 74}, + {3775, 1256}, + {3366, 1256}, + {390, 285}, + {2793, 285}, + {1077, 508}, + {3055, 508}, + {2656, 786}, + {752, 786}, + {2661, 786}, + {596, 786}, + {2509, 70}, + {4602, 70}, + {1732, 70}, + {4026, 70}, + {2320, 204}, + {1244, 204}, + {967, 204}, + {2557, 204}, + {960, 135}, + {3512, 135}, + {800, 135}, + {1705, 135}, + {4582, 145}, + {2325, 145}, + {4025, 145}, + {399, 145}, + {151, 39}, + {3342, 39}, + {135, 39}, + {2864, 39}, + {334, 383}, + {2406, 383}, + {4079, 383}, + {1795, 383}, + {4686, 218}, + {4207, 218}, + {4599, 218}, + {1923, 218}, + {4595, 390}, + {2039, 390}, + {4735, 390}, + {2691, 390}, + {900, 11}, + {3225, 11}, + {263, 11}, + {4527, 11}, + {4303, 238}, + {1555, 238}, + {4293, 238}, + {2330, 238}, + {4451, 865}, + {2967, 865}, + {1235, 865}, + {3573, 865}, + {531, 1452}, + {1701, 1452}, + {1391, 1452}, + {4386, 1452}, + {1388, 1057}, + {3922, 1057}, + {1540, 1057}, + {1258, 1057}, + {3022, 898}, + {652, 898}, + {3621, 898}, + {1512, 898}, + {1890, 696}, + {4558, 696}, + {1897, 23}, + {3900, 23}, + {1719, 1090}, + {759, 1090}, + {2574, 1090}, + {79, 1090}, + {3078, 3568}, + {1325, 3568}, + {1784, 2095}, + {4725, 2095}, + {1769, 739}, + {3719, 739}, + {1935, 1757}, + {901, 1757}, + {3459, 357}, + {623, 3432}, + {3465, 192}, + {846, 1443}, + {3603, 1850}, + {3826, 1630}, + {2142, 1034}, + {4400, 109}, + {1470, 1821}, + {1530, 2248}, + {1871, 567}, + {4573, 518}, + {1861, 3172}, + {3913, 1311}, + {1708, 102}, + {797, 360}, + {2565, 206}, + {69, 89}, + {3087, 21}, + {3808, 265}, + {4162, 350}, + {2358, 1141}, + {4153, 387}, + {1582, 529}, + {4037, 1546}, + {3096, 317}, + {16, 2411}, + {2524, 1352}, + {785, 454}, + {2130, 14}, + {2462, 1259}, + {4004, 741}, + {2467, 196}, + {4462, 158}, + {2317, 48}, + {49, 57}, + {3126, 154}, + {789, 187}, + {2515, 169}, + {1449, 119}, + {1632, 167}, + {4650, 4}, + {1638, 163}, + {3704, 115}, + {1789, 55}, + {1021, 22}, + {2750, 157}, + {326, 160}, + {3308, 397}, + {3500, 54}, + {3073, 80}, + {223, 139}, + {3084, 213}, + {1095, 76}, + {3215, 150}, + {4184, 212}, + {2478, 19}, + {4726, 67}, + {1904, 170}, + {3147, 25}, + {3421, 799}, + {575, 3734}, + {3428, 938}, + {719, 560}, + {3563, 196}, + {3867, 158}, + {2197, 48}, + {4439, 57}, + {1605, 154}, + {68, 187}, + {482, 169}, + {3590, 119}, + {489, 167}, + {2627, 4}, + {641, 163}, + {2128, 115}, + {3851, 55}, + {1528, 22}, + {4357, 157}, + {614, 160}, + {273, 397}, + {3110, 54}, + {262, 80}, + {2921, 139}, + {84, 213}, + {2304, 76}, + {4018, 150}, + {1729, 212}, + {4593, 19}, + {508, 67}, + {26, 841}, + {3227, 1257}, + {47, 1403}, + {2813, 619}, + {204, 1603}, + {2480, 3327}, + {4181, 1311}, + {1927, 1617}, + {4705, 449}, + {4552, 473}, + {4268, 844}, + {1501, 244}, + {4253, 983}, + {2224, 2912}, + {4413, 3823}, + {3004, 1719}, + {1279, 334}, + {3610, 3819}, + {665, 3045}, + {647, 3044}, + {239, 3605}, + {3131, 678}, + {249, 1661}, + {2946, 386}, + {60, 1101}, + {2311, 2885}, + {3991, 687}, + {1692, 1110}, + {4614, 2022}, + {3617, 1093}, + {3241, 2861}, + {11, 1845}, + {3234, 1106}, + {1207, 1020}, + {3099, 1979}, + {4033, 751}, + {2362, 2388}, + {4622, 1176}, + {1690, 1221}, + {648, 2525}, + {240, 1941}, + {3132, 24}, + {251, 3374}, + {2947, 1480}, + {58, 496}, + {2312, 2247}, + {3990, 223}, + {1694, 504}, + {4613, 1557}, + {1046, 414}, + {871, 255}, + {2753, 3286}, + {879, 403}, + {3435, 1696}, + {1018, 1954}, + {1792, 914}, + {4644, 912}, + {2395, 1051}, + {4117, 2593}, + {3658, 3088}, + {4045, 1763}, + {2483, 253}, + {4057, 3771}, + {1405, 2144}, + {4172, 1166}, + {3221, 2475}, + {214, 3186}, + {2678, 1155}, + {958, 1959}, + {3986, 20}, + {3728, 28}, + {2199, 3096}, + {3732, 525}, + {1773, 1363}, + {3865, 56}, + {3565, 1395}, + {567, 748}, + {2954, 2898}, + {1197, 2462}, + {2323, 820}, + {1991, 3101}, + {3855, 2037}, + {1997, 988}, + {4513, 734}, + {2123, 1753}, + {643, 978}, + {3585, 2194}, + {1238, 1749}, + {3064, 908}, + {2139, 1212}, + {2455, 1446}, + {4015, 361}, + {2450, 1577}, + {4483, 388}, + {2309, 2862}, + {82, 854}, + {3116, 554}, + {778, 468}, + {2530, 1417}, + {1979, 572}, + {4300, 1049}, + {2474, 1971}, + {211, 2550}, + {3223, 30}, + {886, 1917}, + {2721, 1156}, + {1264, 3184}, + {2848, 556}, + {160, 2571}, + {2995, 1811}, + {4421, 1369}, + {1520, 796}, + {2131, 2149}, + {2464, 3302}, + {4008, 250}, + {2469, 2159}, + {4463, 969}, + {2314, 391}, + {791, 373}, + {2511, 1657}, + {3809, 241}, + {1584, 3329}, + {4034, 2358}, + {3097, 614}, + {14, 1967}, + {2525, 2345}, + {783, 3182}, + {2133, 1942}, + {4006, 3829}, + {2468, 819}, + {4464, 2815}, + {2315, 3706}, + {50, 2140}, + {3125, 438}, + {792, 3697}, + {0, 2797}, + {0, 3826}, + {0, 964}, + {0, 3723}, + {0, 1913}, + {0, 847}, + {0, 3053}, + {0, 3379}, + {0, 839}, + {0, 1809}, + {0, 1777}, + {0, 1128}, {0, 3914}, - {0, 2152}, - {0, 1858}, - {0, 948}, - {0, 1687}, - {0, 3902}, - {0, 3786}, - {0, 1278}, - {0, 1918}, - {0, 2053}, - {0, 3750}, - {0, 3667}, - {0, 3011}, + {0, 694}, + {0, 2704}, + {0, 3624}, + {0, 1948}, + {0, 631}, + {0, 3618}, {0, 2821}, - {0, 3132}, - {0, 1815}, - {0, 1969}, - {0, 3513}, - {0, 3711}, - {0, 1924}, - {0, 2096}, - {0, 905}, - {0, 1758}, - {0, 280}, - {0, 2883}, - {0, 465}, - {0, 1135}, - {1653, 2}, - {5128, 2}, - {4869, 2}, - {1385, 2}, - {2711, 3470}, - {1995, 3190}, - {2806, 487}, - {232, 3327}, - {4658, 3052}, - {1485, 460}, - {495, 2758}, - {2816, 2389}, - {473, 2533}, - {3878, 395}, - {705, 43}, - {4051, 1618}, - {1084, 955}, - {3757, 1676}, - {1856, 3900}, - {2285, 3378}, - {866, 1289}, - {3320, 374}, - {864, 2064}, - {4502, 1693}, - {630, 3673}, - {4389, 3002}, - {1428, 1559}, - {3558, 1194}, - {741, 2601}, - {246, 357}, - {1650, 675}, - {3929, 360}, - {1668, 378}, - {2725, 2540}, - {1901, 2331}, - {2933, 3373}, - {501, 2826}, - {4319, 3131}, - {2439, 1818}, - {1689, 191}, - {220, 3506}, - {2754, 3753}, - {217, 356}, - {3942, 1929}, - {1215, 2097}, - {3834, 900}, - {638, 3815}, - {4466, 2644}, - {2263, 1093}, - {1826, 987}, - {2, 2257}, - {43, 2944}, - {4080, 1081}, - {1078, 833}, - {3719, 2022}, - {4473, 1574}, - {625, 1187}, - {2585, 2621}, - {3311, 2475}, - {4538, 686}, - {0, 245}, - {0, 2394}, - {0, 2476}, - {0, 3242}, - {0, 3198}, - {0, 2865}, - {0, 213}, - {0, 66}, - {0, 2941}, - {0, 2656}, - {0, 2250}, - {0, 182}, - {0, 576}, - {0, 1229}, - {0, 1694}, - {0, 1085}, - {0, 2498}, - {0, 2576}, - {0, 802}, - {0, 186}, - {0, 533}, - {0, 2661}, - {0, 2215}, - {0, 3472}, - {0, 2553}, - {0, 3885}, - {0, 1628}, - {0, 1531}, - {0, 3564}, - {0, 3282}, - {0, 3355}, - {0, 1617}, - {0, 1387}, - {0, 397}, - {0, 2095}, - {0, 627}, - {0, 3022}, + {0, 3269}, + {0, 2518}, + {0, 1514}, + {0, 2409}, + {0, 319}, + {0, 1381}, + {0, 3544}, + {0, 2892}, + {0, 1385}, + {0, 124}, + {0, 125}, + {0, 1632}, + {0, 2635}, + {0, 1271}, + {0, 3135}, + {0, 2326}, + {0, 356}, + {0, 2203}, + {0, 2317}, + {0, 3268}, + {0, 50}, + {0, 1933}, + {0, 2551}, + {0, 3466}, + {0, 3812}, + {0, 2828}, + {0, 1887}, {0, 2932}, - {0, 73}, - {0, 907}, - {0, 990}, - {0, 3003}, - {0, 2822}, - {0, 3743}, - {0, 424}, - {0, 2133}, - {0, 3478}, - {0, 3410}, - {0, 1848}, - {0, 1367}, - {0, 1602}, - {0, 2887}, - {0, 2241}, - {0, 2677}, - {0, 589}, - {0, 174}, - {0, 1712}, - {0, 1202}, - {0, 865}, - {0, 2431}, - {0, 2289}, - {0, 1024}, - {0, 586}, - {0, 113}, + {0, 939}, + {0, 2070}, + {0, 3562}, + {0, 2437}, + {0, 2079}, + {0, 1120}, + {0, 1392}, + {0, 440}, + {0, 3378}, + {0, 287}, + {0, 2439}, + {0, 3227}, + {0, 1686}, + {0, 963}, + {0, 3233}, + {0, 2306}, + {0, 2503}, + {0, 3250}, + {0, 308}, + {0, 3352}, + {0, 1492}, + {0, 472}, {0, 2234}, - {0, 2630}, - {0, 3211}, - {0, 2364}, - {0, 3550}, - {0, 1284}, - {0, 1448}, - {0, 3901}, - {0, 3339}, - {5035, 2}, - {2865, 2}, - {4968, 2}, - {3086, 2}, - {5026, 2}, - {2224, 2}, - {2209, 2}, - {4579, 2}, - {4895, 2}, - {5100, 2}, - {4876, 2}, - {455, 2}, - {2910, 2}, - {5113, 2}, - {4054, 2}, - {4934, 2}, - {2017, 2}, - {4830, 2}, - {4508, 2}, - {5091, 2}, - {83, 2}, - {4769, 2}, - {2098, 2}, - {2174, 2}, - {4740, 2}, - {4915, 2}, - {1556, 2}, - {421, 2}, - {386, 2}, - {4979, 2}, - {5102, 2}, - {2039, 2}, - {3076, 2}, - {0, 523}, - {0, 2166}, - {0, 3432}, - {0, 3364}, + {0, 3740}, + {0, 489}, + {0, 1649}, + {0, 1587}, + {0, 153}, + {0, 2418}, + {0, 3122}, + {0, 3600}, + {0, 3042}, + {0, 2174}, + {0, 2713}, + {0, 674}, + {0, 1804}, + {0, 3745}, + {0, 2665}, + {0, 1795}, + {0, 129}, + {0, 1633}, + {0, 2634}, + {0, 1274}, + {0, 3137}, + {0, 2324}, + {0, 355}, + {0, 2202}, + {0, 2316}, + {0, 3267}, + {0, 3048}, + {0, 3609}, + {0, 693}, + {0, 3916}, + {0, 2189}, + {0, 2881}, + {0, 3108}, + {0, 1092}, + {0, 2018}, + {0, 1787}, + {0, 1146}, + {0, 3905}, + {0, 2681}, + {0, 3635}, + {3677, 1}, + {4999, 1}, + {4927, 1}, + {1370, 1}, + {3796, 3468}, + {1471, 714}, + {4398, 1923}, + {703, 2201}, + {188, 663}, + {200, 1096}, + {2977, 3035}, + {3, 3909}, + {2359, 1880}, + {4031, 130}, + {1739, 2447}, + {4589, 2895}, + {480, 2933}, + {62, 3701}, + {3272, 828}, + {53, 532}, + {2796, 2048}, + {254, 958}, + {2471, 2781}, + {4140, 2056}, + {1886, 970}, + {4742, 2161}, + {4615, 591}, + {4195, 1266}, + {1498, 2305}, + {4204, 1626}, + {2292, 3451}, + {4340, 2651}, + {3043, 199}, + {1284, 1808}, + {3620, 2643}, + {653, 3377}, + {662, 2786}, + {230, 2412}, + {3068, 1391}, + {206, 397}, + {2953, 477}, + {38, 1498}, + {2345, 862}, + {4055, 2799}, + {1772, 1511}, + {4551, 590}, + {3613, 1396}, + {3259, 436}, + {81, 3375}, + {3265, 279}, + {1195, 2440}, + {4014, 1688}, + {2302, 966}, + {4548, 3236}, + {1783, 2311}, + {661, 926}, + {233, 1964}, + {3070, 2976}, + {207, 1843}, + {2952, 3673}, + {0, 2492}, + {0, 3904}, + {0, 149}, + {0, 1373}, {0, 1813}, - {0, 1428}, - {0, 1550}, - {0, 3405}, - {0, 3258}, - {0, 2456}, - {0, 2405}, - {0, 3607}, - {0, 1273}, - {0, 1371}, - {0, 3836}, - {0, 3402}, - {0, 3222}, - {0, 1426}, + {0, 1103}, + {0, 3919}, + {0, 669}, + {0, 2707}, + {0, 3606}, + {0, 2006}, + {0, 594}, + {0, 3611}, + {0, 2792}, + {0, 3437}, + {0, 2314}, + {0, 1240}, + {0, 2645}, + {0, 604}, + {0, 1620}, + {0, 3294}, + {0, 2725}, + {0, 1624}, + {0, 501}, + {0, 155}, + {0, 1586}, + {0, 2666}, + {0, 1222}, + {0, 3152}, + {0, 2281}, + {0, 420}, + {0, 2175}, + {0, 2285}, + {0, 3248}, + {0, 3255}, + {0, 2501}, + {0, 1527}, + {0, 2395}, + {0, 337}, + {0, 1361}, + {0, 3533}, + {0, 2911}, + {0, 1372}, + {0, 151}, + {0, 1793}, + {0, 1148}, + {0, 3901}, + {0, 717}, + {0, 2689}, + {0, 3637}, + {0, 1963}, + {0, 1534}, + {0, 452}, + {0, 2255}, + {0, 3703}, + {0, 444}, + {0, 1601}, + {0, 822}, + {0, 2074}, + {0, 2897}, + {0, 1943}, + {0, 3693}, + {0, 2830}, + {0, 1174}, {0, 1512}, - {0, 257}, - {0, 1341}, - {0, 881}, - {0, 2350}, - {0, 2262}, - {0, 1008}, - {0, 610}, - {0, 91}, - {0, 2309}, - {0, 2623}, - {0, 3118}, - {0, 2789}, - {0, 3261}, - {5047, 2}, - {578, 2}, - {4768, 2}, - {1074, 2}, - {3285, 2}, - {2560, 2}, - {4109, 2}, - {1845, 2}, - {4143, 2}, - {55, 2}, - {4475, 2}, - {4772, 2}, - {5064, 2}, - {4766, 2}, - {265, 2}, - {2792, 2}, - {263, 2}, - {0, 1821}, - {0, 363}, - {0, 2814}, - {0, 2705}, - {0, 377}, - {0, 1190}, - {0, 672}, - {0, 2765}, - {0, 3017}, - {0, 3577}, - {0, 2277}, - {0, 3721}, - {0, 1396}, - {0, 1219}, - {0, 3725}, - {0, 3514}, - {0, 3119}, - {0, 1306}, - {0, 1633}, - {0, 92}, - {0, 3540}, - {0, 2378}, - {0, 913}, - {0, 739}, - {0, 2530}, - {0, 3062}, - {0, 2757}, - {0, 688}, - {0, 1142}, - {0, 1862}, - {0, 638}, - {0, 2081}, - {4816, 2}, - {161, 181}, - {1055, 286}, - {438, 68}, - {548, 320}, - {104, 485}, - {37, 544}, - {145, 198}, - {665, 57}, - {1, 107}, - {240, 44}, - {379, 162}, - {255, 120}, - {470, 50}, - {1134, 222}, - {12, 731}, - {182, 432}, - {21, 30}, - {440, 800}, - {662, 167}, - {313, 1077}, - {228, 105}, - {580, 637}, - {5088, 2}, - {4874, 2}, - {3631, 1408}, - {3377, 2514}, - {3501, 820}, - {3920, 3682}, - {1007, 2367}, - {3923, 1007}, - {3481, 2955}, - {4809, 2}, - {5043, 2}, - {5079, 2}, - {4479, 3411}, - {398, 2924}, - {4484, 232}, - {4285, 998}, - {3855, 3681}, - {1931, 1688}, - {84, 181}, - {186, 171}, - {214, 7}, - {745, 184}, - {1341, 320}, - {9, 134}, - {1044, 131}, - {600, 307}, - {207, 191}, - {262, 37}, - {47, 544}, - {331, 198}, - {288, 57}, - {405, 107}, - {493, 44}, - {28, 162}, - {293, 120}, - {100, 5}, - {769, 886}, - {917, 3785}, - {725, 59}, - {224, 106}, - {517, 173}, - {10, 15}, - {1502, 278}, - {870, 155}, - {154, 72}, - {110, 480}, - {599, 615}, - {227, 1324}, - {825, 291}, - {1034, 205}, - {194, 64}, - {934, 83}, - {650, 240}, - {2078, 72}, - {1828, 130}, - {454, 1260}, - {1422, 1418}, - {213, 78}, - {266, 287}, - {120, 216}, - {54, 297}, - {336, 499}, - {290, 59}, - {589, 106}, - {1195, 173}, - {574, 15}, - {2162, 278}, - {969, 155}, - {423, 72}, - {568, 480}, - {344, 615}, - {343, 1324}, - {40, 291}, - {198, 205}, - {1301, 64}, - {1248, 83}, - {674, 240}, - {409, 130}, - {98, 130}, - {292, 1260}, - {241, 1418}, - {876, 78}, - {988, 287}, - {1692, 216}, - {1148, 297}, - {1424, 192}, - {947, 15}, - {70, 72}, - {3313, 615}, - {775, 78}, - {2314, 240}, - {2296, 36}, - {742, 72}, - {1082, 15}, - {4026, 72}, - {2291, 615}, - {1732, 78}, - {4615, 240}, - {2340, 36}, - {1037, 72}, - {3434, 15}, - {3840, 72}, - {1054, 615}, - {4002, 78}, - {2053, 240}, - {1379, 36}, - {2639, 72}, - {4421, 15}, - {4268, 72}, - {4298, 615}, - {3014, 78}, - {1934, 240}, - {2557, 36}, - {949, 72}, - {366, 15}, - {2515, 72}, - {4111, 615}, - {4036, 78}, - {3982, 240}, - {3267, 36}, - {1649, 1213}, - {3457, 1213}, - {1675, 319}, - {3487, 1364}, - {3163, 1146}, - {2708, 2411}, - {807, 1104}, - {3279, 1084}, - {4488, 584}, - {4749, 1661}, - {4639, 2130}, - {2495, 1462}, - {2417, 2340}, - {3067, 1814}, - {4672, 1115}, - {4013, 170}, - {2381, 2392}, - {4599, 636}, - {3329, 203}, - {3115, 2047}, - {3198, 1696}, - {4206, 316}, - {706, 1906}, - {3663, 142}, - {2451, 1400}, - {1569, 425}, - {4746, 2738}, - {2200, 2665}, - {892, 2290}, - {803, 56}, - {761, 100}, - {1789, 702}, - {3155, 794}, - {1356, 3873}, - {4660, 971}, - {4020, 319}, - {2349, 1364}, - {4552, 1146}, - {3355, 2411}, - {3087, 1104}, - {3179, 1084}, - {4204, 584}, - {735, 1661}, - {3677, 2130}, - {756, 1462}, - {308, 2340}, - {3146, 1115}, - {954, 170}, - {2268, 636}, - {2341, 2047}, - {2464, 1696}, - {191, 316}, - {4631, 1906}, - {567, 142}, - {3896, 1400}, - {4243, 2535}, - {1534, 425}, - {3658, 763}, - {3006, 100}, - {2863, 3473}, - {2830, 1784}, - {4388, 926}, - {498, 903}, - {4575, 2154}, - {0, 285}, - {0, 3370}, + {0, 2820}, + {0, 3619}, + {0, 3834}, + {0, 2805}, + {0, 1936}, + {0, 2910}, + {0, 981}, + {0, 2035}, + {4955, 1}, + {1723, 1}, + {4836, 1}, + {2306, 1}, + {4995, 1}, + {2566, 1}, + {906, 1}, + {3409, 1}, + {4845, 1}, + {4834, 1}, + {4973, 1}, + {4128, 1}, + {3290, 1}, + {4945, 1}, + {122, 1}, + {4982, 1}, + {114, 1}, + {5047, 1}, + {3630, 1}, + {4856, 1}, + {680, 1}, + {4773, 1}, + {2254, 1}, + {1666, 1}, + {4248, 1}, + {4848, 1}, + {4298, 1}, + {2348, 1}, + {2955, 1}, + {5072, 1}, + {5056, 1}, + {2087, 1}, + {3858, 1}, + {0, 2728}, + {0, 3912}, + {0, 1127}, + {0, 3607}, + {0, 1799}, + {0, 671}, + {0, 2998}, + {0, 3440}, + {0, 662}, {0, 1894}, - {0, 2862}, - {0, 3249}, - {0, 2043}, - {0, 537}, - {0, 3201}, - {0, 2116}, - {0, 2175}, - {0, 1480}, - {0, 2330}, - {0, 978}, - {0, 3816}, - {0, 2466}, - {0, 810}, - {0, 2890}, - {0, 2021}, - {0, 3121}, - {0, 3251}, - {0, 3618}, - {0, 1193}, + {0, 598}, + {0, 1272}, {0, 2302}, + {0, 1631}, + {0, 3457}, + {0, 2662}, + {0, 190}, + {0, 1815}, + {0, 2650}, + {0, 3372}, + {0, 3148}, + {0, 2624}, + {0, 1640}, + {0, 2288}, + {0, 181}, {0, 1236}, - {0, 770}, - {0, 2687}, - {0, 3179}, - {0, 569}, - {0, 2847}, - {0, 2707}, - {0, 2395}, - {0, 1560}, - {0, 3697}, - {0, 835}, - {1070, 69}, - {708, 806}, - {1224, 166}, - {596, 1347}, - {143, 352}, - {514, 1163}, - {264, 79}, - {1141, 199}, - {556, 304}, - {1532, 787}, - {1098, 221}, - {29, 189}, - {354, 328}, - {219, 306}, - {13, 329}, - {1429, 609}, - {1661, 163}, - {316, 127}, - {1383, 554}, - {15, 786}, - {360, 1358}, - {231, 260}, - {1072, 1061}, - {2774, 1520}, - {1708, 371}, - {2005, 1453}, - {699, 498}, - {757, 469}, - {3309, 659}, - {3880, 1004}, - {3375, 326}, - {444, 95}, - {1872, 1}, - {3947, 3518}, - {2694, 3778}, - {2587, 864}, - {2546, 2480}, - {4669, 1575}, - {107, 992}, - {4297, 2374}, - {2499, 282}, - {3334, 3393}, - {39, 1827}, - {1758, 2247}, - {3552, 1056}, - {157, 746}, - {885, 738}, - {2582, 1411}, - {268, 345}, - {1578, 1900}, - {1865, 2528}, - {1742, 341}, - {736, 2997}, - {4202, 2318}, - {1243, 472}, - {2489, 1138}, - {3341, 1713}, - {8, 1571}, - {2757, 1747}, - {4041, 443}, - {4113, 2837}, - {4160, 402}, - {3158, 3365}, - {1785, 2937}, - {3564, 279}, - {1736, 2737}, - {2279, 1092}, - {4098, 3333}, - {1707, 431}, - {294, 3814}, - {2408, 1482}, - {2527, 1087}, - {3460, 181}, - {2993, 171}, - {1056, 7}, - {3545, 101}, - {4252, 551}, - {4440, 184}, - {4346, 286}, - {2805, 29}, - {2171, 482}, - {2783, 68}, - {1314, 320}, - {2120, 268}, - {3701, 134}, - {1495, 131}, - {538, 485}, - {555, 307}, - {661, 191}, - {1993, 37}, - {2968, 544}, - {2332, 198}, - {4256, 57}, - {3885, 107}, - {1894, 44}, - {4469, 162}, - {3462, 120}, - {3560, 5}, - {3600, 2693}, - {1183, 1149}, - {4108, 2300}, - {430, 3511}, - {1227, 20}, - {2312, 3825}, - {2948, 1243}, - {4710, 3134}, - {2335, 1727}, - {3315, 1930}, - {1509, 3346}, - {2488, 839}, - {1952, 3456}, - {2087, 1018}, - {2129, 2414}, - {502, 1395}, - {4390, 892}, - {249, 2527}, - {3702, 3300}, - {4439, 391}, - {1313, 2698}, - {3863, 2831}, - {2924, 2327}, - {2947, 1749}, - {3066, 3597}, - {4317, 684}, - {570, 1329}, - {4640, 3908}, - {1774, 1903}, - {2252, 2959}, - {4139, 139}, - {1669, 342}, - {341, 708}, - {36, 3857}, - {195, 1224}, - {2441, 2278}, - {2469, 3574}, - {1889, 1655}, - {2231, 263}, - {1804, 3089}, - {4547, 355}, - {2413, 108}, - {819, 805}, - {874, 3732}, - {986, 1382}, - {1690, 2421}, - {3212, 3637}, - {1425, 1486}, - {945, 3324}, - {65, 348}, - {3317, 2082}, - {776, 1790}, - {2313, 2568}, - {2294, 1211}, - {2210, 3847}, - {222, 1184}, - {869, 2459}, - {3186, 2617}, - {4700, 3005}, - {4539, 1984}, - {4580, 3390}, - {2756, 414}, - {2222, 2093}, - {2836, 3312}, - {935, 3537}, - {4624, 1883}, - {536, 3330}, - {118, 923}, - {902, 3734}, - {2564, 1242}, - {244, 1389}, - {1597, 1849}, - {1722, 119}, - {716, 3126}, - {4214, 2783}, - {1265, 644}, - {4528, 2077}, - {1821, 3169}, - {3979, 3305}, - {2634, 1140}, - {2520, 2240}, - {4637, 1299}, - {170, 711}, - {4329, 2609}, - {1013, 2996}, - {688, 1329}, - {3365, 3444}, - {1245, 3353}, - {1977, 3894}, - {2045, 766}, - {2108, 2624}, - {4402, 1188}, - {270, 2112}, - {3761, 3684}, - {4363, 995}, - {1386, 2246}, - {3788, 2348}, - {2858, 1211}, - {3018, 2182}, - {2979, 3213}, - {2189, 2186}, - {4213, 3304}, - {250, 3625}, - {89, 2369}, - {2367, 1452}, - {2559, 822}, - {1950, 488}, - {929, 2751}, - {3131, 2898}, - {4638, 2259}, - {4604, 1670}, - {4485, 3546}, - {2661, 762}, - {2302, 1248}, - {2926, 3876}, - {1081, 1975}, - {590, 2922}, - {3467, 46}, - {1191, 258}, - {1891, 768}, - {2168, 3893}, - {2038, 1276}, - {429, 2226}, - {4460, 3610}, - {340, 1737}, - {3041, 284}, - {449, 26}, - {1426, 877}, - {1405, 3782}, - {1172, 2365}, - {3766, 3683}, - {817, 1567}, - {2109, 246}, - {3716, 3056}, - {1510, 2907}, - {518, 2643}, - {581, 1292}, - {689, 3905}, - {2016, 1120}, - {2949, 1719}, - {2310, 3582}, - {3782, 3868}, - {4360, 752}, - {1413, 2521}, - {3820, 2527}, - {2837, 2958}, - {3046, 1935}, - {3001, 3343}, - {4276, 478}, - {620, 2041}, - {4697, 3253}, - {1305, 3584}, - {2141, 1119}, - {3708, 2380}, - {1507, 2217}, - {535, 2860}, - {562, 2070}, - {666, 247}, - {2957, 1962}, - {2337, 3376}, - {3007, 1782}, - {608, 351}, - {2893, 154}, - {3898, 813}, - {3673, 3745}, - {3776, 1402}, - {3641, 1997}, - {1280, 3623}, - {3078, 1514}, - {1745, 2732}, - {4610, 439}, - {2318, 528}, - {758, 1031}, - {939, 3669}, - {897, 1606}, - {1612, 2492}, - {3307, 3794}, - {1524, 1419}, - {2479, 795}, - {3360, 3841}, - {19, 1355}, - {2769, 1270}, - {4032, 1988}, - {4119, 3009}, - {4167, 315}, - {3148, 3228}, - {1769, 2877}, - {3569, 514}, - {1940, 1204}, - {1500, 2666}, - {2125, 730}, - {1105, 224}, - {1158, 1910}, - {1409, 415}, - {1718, 2007}, - {2798, 870}, - {3642, 3797}, - {399, 1294}, - {3062, 1478}, - {3742, 1805}, - {3836, 3055}, - {3864, 34}, - {3451, 3187}, - {1476, 2731}, - {3275, 590}, - {221, 2427}, - {824, 1494}, - {2686, 3555}, - {1792, 3195}, - {1638, 639}, - {1667, 2750}, - {942, 1763}, - {722, 2292}, - {3122, 3663}, - {990, 3538}, - {2247, 3262}, - {2384, 455}, - {4657, 309}, - {603, 2969}, - {2440, 1021}, - {1577, 3644}, - {4755, 1669}, - {2212, 1484}, - {882, 2172}, - {809, 2753}, - {773, 641}, - {1773, 3451}, - {3150, 3081}, - {1366, 118}, - {4683, 581}, - {3997, 3181}, - {2364, 2056}, - {4577, 2200}, - {3336, 1546}, - {3103, 2383}, - {3190, 969}, - {4210, 3792}, - {713, 2495}, - {3647, 853}, - {1591, 3453}, - {4733, 1920}, - {2178, 1755}, - {914, 1420}, - {783, 2523}, - {743, 919}, - {3168, 2408}, - {1368, 1026}, - {3196, 2236}, - {2668, 1745}, - {836, 3702}, - {3249, 3595}, - {4520, 3224}, - {4721, 392}, - {2389, 202}, - {3024, 2930}, - {1459, 2628}, - {1960, 1245}, - {3828, 3769}, - {1353, 3827}, - {693, 3383}, - {380, 305}, - {2157, 2033}, - {2828, 490}, - {2207, 2850}, - {3590, 3209}, - {1208, 2795}, - {3411, 2744}, - {4378, 2436}, - {4315, 1612}, - {4221, 3677}, - {2942, 823}, - {2012, 1450}, - {2619, 3822}, - {673, 749}, - {1031, 3853}, - {3054, 1413}, - {387, 1227}, - {1490, 1939}, - {1297, 340}, - {1179, 3246}, - {3747, 2864}, - {801, 470}, - {4423, 1464}, - {3705, 2471}, - {2145, 665}, - {4284, 846}, - {3512, 190}, - {3508, 3524}, - {3392, 1841}, - {4059, 2205}, - {2249, 3641}, - {1781, 1028}, - {4567, 2297}, - {2357, 2416}, - {724, 2734}, - {977, 2146}, - {860, 3124}, - {3344, 1808}, - {1559, 3448}, - {1796, 3535}, - {2237, 1171}, - {4168, 2444}, - {1616, 2286}, - {223, 2799}, - {184, 2012}, - {2315, 335}, - {2623, 1892}, - {2013, 3314}, - {50, 1501}, - {959, 2422}, - {2533, 1198}, - {303, 1034}, - {1691, 535}, - {1730, 3122}, - {1850, 2145}, - {821, 3094}, - {4094, 3439}, - {2614, 2210}, - {3239, 2718}, - {168, 389}, - {2652, 593}, - {3986, 1082}, - {4148, 3716}, - {4103, 1583}, - {3134, 2477}, - {1818, 3808}, - {3602, 1476}, - {101, 1767}, - {2539, 365}, - {322, 128}, - {1734, 3731}, - {1861, 1378}, - {837, 2423}, - {4083, 3634}, - {1132, 1496}, - {4110, 3593}, - {4596, 1131}, - {4016, 2232}, - {2785, 2872}, - {2482, 2087}, - {2606, 3311}, - {4732, 267}, - {30, 1944}, - {4250, 3386}, - {550, 774}, - {3502, 2562}, - {1157, 2636}, - {1918, 2903}, - {2128, 1866}, - {466, 505}, - {3691, 2739}, - {4452, 2177}, - {1284, 3264}, - {3913, 3205}, - {2883, 3666}, - {4311, 1436}, - {595, 841}, - {1342, 3449}, - {2114, 104}, - {1516, 3087}, - {523, 2503}, - {683, 3739}, - {2011, 1019}, - {2944, 1551}, - {2306, 2927}, - {3075, 1998}, - {1014, 3504}, - {3624, 3395}, - {4303, 3837}, - {4394, 683}, - {4420, 2607}, - {2875, 1750}, - {2074, 1089}, - {2721, 2239}, - {865, 467}, - {177, 3248}, - {3251, 2161}, - {842, 2009}, - {2388, 1690}, - {2241, 2279}, - {2260, 1172}, - {320, 3855}, - {4523, 2649}, - {447, 750}, - {26, 646}, - {972, 3125}, - {2514, 2030}, - {365, 2150}, - {1647, 1604}, - {1786, 2418}, - {1819, 1029}, - {802, 3735}, - {1190, 921}, - {1854, 2878}, - {2186, 2002}, - {4215, 3137}, - {1598, 3240}, - {243, 3606}, - {160, 1185}, - {96, 2293}, - {2374, 1206}, - {2567, 796}, - {1956, 2664}, - {4144, 2231}, - {4563, 1739}, - {1768, 3698}, - {4027, 3594}, - {2777, 3231}, - {2617, 2845}, - {4751, 1982}, - {17, 226}, - {4222, 2925}, - {1851, 2670}, - {2205, 1207}, - {4198, 3749}, - {1570, 3850}, - {291, 3408}, - {108, 350}, - {53, 2966}, - {2359, 2001}, - {1959, 2876}, - {2625, 594}, - {3227, 3183}, - {193, 2068}, - {2685, 2209}, - {3955, 1543}, - {4138, 965}, - {3141, 3795}, - {1793, 2491}, - {3588, 862}, - {2055, 159}, - {1371, 3427}, - {4385, 1879}, - {1942, 1789}, - {1269, 1460}, - {1000, 2549}, - {1090, 889}, - {1542, 3622}, - {3398, 2449}, - {1593, 1065}, - {3025, 1720}, - {3430, 2268}, - {621, 993}, - {2841, 1118}, - {3818, 479}, - {3753, 3278}, - {3517, 2953}, - {1411, 3379}, - {3191, 1957}, - {1470, 2311}, - {1973, 1627}, - {3822, 3632}, - {698, 3291}, - {378, 504}, - {505, 2861}, - {2154, 1869}, - {2824, 367}, - {2199, 2987}, - {3527, 3687}, - {2915, 1017}, - {1168, 656}, - {3505, 2355}, - {4408, 2759}, - {4290, 2178}, - {4314, 3203}, - {3043, 102}, - {1911, 1817}, - {2534, 3493}, - {700, 1352}, - {362, 2551}, - {3096, 783}, - {973, 885}, - {2396, 1791}, - {109, 2773}, - {4677, 3133}, - {617, 2126}, - {206, 1257}, - {840, 2635}, - {2666, 910}, - {180, 773}, - {1808, 250}, - {1620, 3348}, - {1659, 1875}, - {924, 2856}, - {3977, 3257}, - {1670, 3763}, - {2334, 873}, - {4058, 2653}, - {1728, 2546}, - {75, 3048}, - {309, 1800}, - {256, 3430}, - {2217, 605}, - {2745, 2164}, - {2144, 3147}, - {3966, 3487}, - {4715, 88}, - {1602, 2940}, - {4155, 3029}, - {2632, 2542}, - {2641, 1444}, - {2760, 3821}, - {4607, 1005}, - {236, 1570}, - {4365, 3674}, - {1715, 3152}, - {2316, 604}, - {4063, 2868}, - {1738, 2771}, - {72, 2370}, - {318, 1534}, - {274, 3624}, - {2239, 876}, - {2731, 1410}, - {2107, 3757}, - {346, 809}, - {2492, 727}, - {4131, 358}, - {4005, 3415}, - {3959, 1956}, - {3255, 2808}, - {1662, 3287}, - {3471, 2115}, - {1935, 1656}, - {1494, 2281}, - {2124, 1169}, - {1097, 430}, - {1160, 3245}, - {1264, 2010}, - {1416, 2961}, - {3525, 3368}, - {1725, 1902}, - {2902, 55}, - {3543, 3523}, - {488, 1981}, - {2995, 1458}, - {3665, 1366}, - {3905, 2193}, - {3802, 852}, - {3386, 3719}, - {1541, 2333}, - {3324, 966}, - {3535, 759}, - {2907, 3877} + {0, 3414}, + {0, 3020}, + {0, 1226}, + {0, 299}, + {0, 330}, + {0, 1484}, + {4931, 1}, + {1242, 1}, + {4768, 1}, + {4621, 1}, + {1907, 1}, + {4609, 1}, + {2023, 1}, + {4753, 1}, + {2667, 1}, + {927, 1}, + {3240, 1}, + {4772, 1}, + {5025, 1}, + {4770, 1}, + {2260, 1}, + {4379, 1}, + {3037, 1}, + {0, 3065}, + {0, 3578}, + {0, 729}, + {0, 3883}, + {0, 2085}, + {0, 1205}, + {0, 2810}, + {0, 3205}, + {0, 1214}, + {0, 1995}, + {0, 1961}, + {0, 923}, + {0, 3645}, + {0, 1059}, + {0, 2943}, + {0, 3780}, + {0, 1790}, + {0, 237}, + {0, 3784}, + {0, 3087}, + {0, 3532}, + {0, 2235}, + {0, 1356}, + {0, 2567}, + {0, 577}, + {0, 1663}, + {0, 3249}, + {0, 2749}, + {0, 1655}, + {0, 372}, + {0, 370}, + {0, 1460}, + {0, 73}, + {0, 1910}, + {0, 2508}, + {0, 3454}, + {0, 3226}, + {0, 2533}, + {0, 1499}, + {0, 2423}, + {0, 300}, + {0, 1393}, + {0, 3500}, + {0, 2939}, + {0, 1406}, + {0, 185}, + {0, 110}, + {0, 1619}, + {0, 2630}, + {0, 1260}, + {0, 3127}, + {0, 2312}, + {0, 367}, + {0, 2204}, + {0, 2323}, + {0, 3281}, + {0, 2835}, + {4812, 1}, + {1596, 196}, + {45, 169}, + {1562, 4}, + {682, 163}, + {27, 157}, + {276, 80}, + {94, 139}, + {2051, 213}, + {35, 76}, + {269, 150}, + {806, 212}, + {1725, 19}, + {923, 360}, + {805, 206}, + {17, 89}, + {715, 21}, + {835, 265}, + {155, 350}, + {212, 1141}, + {1209, 387}, + {708, 529}, + {542, 1546}, + {4924, 1}, + {5126, 1}, + {3481, 874}, + {1642, 352}, + {3158, 3415}, + {3788, 2459}, + {3964, 3626}, + {124, 1026}, + {1317, 3091}, + {4799, 1}, + {4846, 1}, + {4920, 1}, + {1553, 2446}, + {1753, 3865}, + {2534, 835}, + {2539, 3898}, + {831, 1382}, + {4177, 2512}, + {397, 196}, + {41, 158}, + {66, 48}, + {36, 187}, + {157, 163}, + {788, 55}, + {64, 22}, + {184, 160}, + {337, 397}, + {732, 54}, + {199, 80}, + {630, 139}, + {133, 213}, + {51, 76}, + {1086, 150}, + {1, 212}, + {888, 19}, + {250, 67}, + {4183, 3652}, + {1190, 3266}, + {54, 254}, + {812, 341}, + {177, 27}, + {1128, 6}, + {1185, 112}, + {780, 927}, + {2651, 94}, + {1020, 369}, + {48, 533}, + {532, 186}, + {411, 726}, + {944, 1575}, + {39, 484}, + {1094, 2239}, + {632, 351}, + {4035, 94}, + {787, 123}, + {1598, 887}, + {794, 314}, + {673, 697}, + {1241, 258}, + {1713, 807}, + {2019, 63}, + {545, 274}, + {83, 254}, + {299, 341}, + {453, 27}, + {740, 6}, + {1062, 112}, + {955, 927}, + {763, 94}, + {1226, 369}, + {2432, 533}, + {902, 186}, + {455, 726}, + {1299, 1575}, + {1940, 484}, + {1737, 2239}, + {203, 351}, + {2944, 123}, + {1161, 123}, + {547, 887}, + {877, 314}, + {1022, 697}, + {889, 258}, + {1256, 807}, + {1064, 63}, + {1674, 544}, + {3333, 6}, + {256, 94}, + {4495, 533}, + {1342, 697}, + {3444, 351}, + {1670, 15}, + {3311, 94}, + {3623, 6}, + {2109, 94}, + {1108, 533}, + {2782, 697}, + {2135, 351}, + {4124, 15}, + {1007, 94}, + {760, 6}, + {1609, 94}, + {1722, 533}, + {2562, 697}, + {1881, 351}, + {4636, 15}, + {1711, 94}, + {1088, 6}, + {4012, 94}, + {725, 533}, + {1588, 697}, + {1764, 351}, + {2499, 15}, + {1578, 94}, + {3250, 6}, + {539, 94}, + {4440, 533}, + {271, 697}, + {4733, 351}, + {2833, 15}, + {2676, 1350}, + {1910, 1350}, + {3447, 402}, + {1984, 713}, + {1987, 488}, + {3763, 1235}, + {1251, 1229}, + {2737, 1301}, + {2381, 266}, + {3026, 2173}, + {2156, 633}, + {150, 848}, + {619, 925}, + {3853, 2449}, + {4507, 2058}, + {1716, 1143}, + {3361, 612}, + {678, 652}, + {4405, 876}, + {305, 1317}, + {4635, 681}, + {2872, 1774}, + {2761, 417}, + {1788, 2208}, + {2136, 890}, + {3897, 1612}, + {1107, 1602}, + {2606, 476}, + {2229, 673}, + {2891, 68}, + {2004, 660}, + {330, 1674}, + {468, 3679}, + {3705, 1087}, + {654, 2779}, + {3528, 402}, + {1382, 713}, + {4522, 488}, + {183, 1235}, + {4209, 1229}, + {466, 1301}, + {2398, 266}, + {2017, 2173}, + {3443, 633}, + {3596, 848}, + {541, 925}, + {4220, 2058}, + {1675, 1143}, + {3203, 652}, + {1330, 1317}, + {3457, 681}, + {4067, 1774}, + {3694, 417}, + {488, 2208}, + {1246, 890}, + {2927, 1421}, + {1990, 1612}, + {3980, 2232}, + {853, 660}, + {3657, 75}, + {1123, 2598}, + {1785, 2640}, + {1374, 1487}, + {2873, 1080}, + {0, 3323}, + {0, 3691}, + {0, 1030}, + {0, 2009}, + {0, 144}, + {0, 3420}, + {0, 2479}, + {0, 787}, + {0, 3875}, + {0, 718}, + {0, 2253}, + {0, 2700}, + {0, 2089}, + {0, 1199}, + {0, 1376}, + {0, 2600}, + {0, 2636}, + {0, 810}, + {0, 3809}, + {0, 879}, + {0, 2417}, + {0, 2867}, + {0, 2075}, + {0, 961}, + {0, 1351}, + {0, 2515}, + {0, 3155}, + {0, 2060}, + {0, 2822}, + {0, 1988}, + {0, 3383}, + {0, 3747}, + {0, 818}, + {0, 1940}, + {172, 784}, + {2496, 509}, + {570, 409}, + {550, 74}, + {1278, 696}, + {868, 508}, + {669, 210}, + {2549, 145}, + {222, 1090}, + {2428, 238}, + {307, 865}, + {803, 1452}, + {572, 1057}, + {1954, 786}, + {19, 383}, + {924, 390}, + {102, 204}, + {59, 11}, + {656, 285}, + {1100, 70}, + {1726, 936}, + {716, 126}, + {195, 375}, + {773, 1256}, + {154, 135}, + {3407, 39}, + {431, 218}, + {2598, 2554}, + {378, 1243}, + {1820, 1470}, + {74, 262}, + {1637, 898}, + {1730, 2}, + {4327, 1567}, + {423, 3833}, + {4554, 3394}, + {28, 307}, + {2166, 1411}, + {2347, 1184}, + {3098, 3712}, + {2976, 1768}, + {1313, 3343}, + {3742, 296}, + {4295, 3085}, + {1075, 593}, + {7, 703}, + {3136, 1288}, + {1921, 1415}, + {4486, 1502}, + {560, 994}, + {4697, 365}, + {220, 781}, + {2035, 1262}, + {2477, 2250}, + {3233, 827}, + {2356, 2369}, + {3982, 29}, + {915, 3501}, + {2928, 117}, + {2198, 2387}, + {2701, 1310}, + {2486, 1702}, + {449, 536}, + {208, 159}, + {4155, 3062}, + {4028, 305}, + {2262, 1945}, + {2664, 1889}, + {1196, 1873}, + {3868, 3263}, + {3412, 2045}, + {3220, 3}, + {1733, 196}, + {4524, 158}, + {197, 48}, + {3532, 57}, + {1554, 154}, + {3260, 187}, + {1937, 169}, + {1078, 119}, + {882, 167}, + {4737, 4}, + {4583, 163}, + {1656, 115}, + {3266, 55}, + {562, 22}, + {4492, 157}, + {217, 160}, + {4698, 397}, + {2792, 54}, + {2717, 80}, + {1879, 139}, + {4488, 213}, + {1542, 76}, + {3379, 150}, + {2, 212}, + {4585, 19}, + {443, 67}, + {4315, 2683}, + {2805, 2455}, + {1435, 1291}, + {4627, 448}, + {1865, 2703}, + {2634, 3423}, + {1660, 152}, + {2148, 2443}, + {1030, 3479}, + {3840, 3774}, + {605, 668}, + {505, 1106}, + {1338, 148}, + {3195, 768}, + {1681, 3950}, + {1285, 3019}, + {813, 1104}, + {4540, 588}, + {1583, 1414}, + {4368, 2138}, + {444, 707}, + {3113, 3866}, + {1770, 1648}, + {3377, 815}, + {1407, 2701}, + {929, 3627}, + {1091, 2279}, + {4279, 1268}, + {4281, 2399}, + {1332, 1108}, + {3542, 732}, + {267, 1172}, + {4736, 2620}, + {538, 3095}, + {4443, 1797}, + {2498, 649}, + {2963, 1565}, + {1589, 688}, + {1595, 1394}, + {4381, 3621}, + {428, 1142}, + {3105, 1500}, + {1782, 1294}, + {3388, 1714}, + {1401, 3028}, + {908, 3937}, + {1096, 2361}, + {4284, 1629}, + {4160, 3341}, + {2417, 1788}, + {2507, 1927}, + {1056, 523}, + {3730, 3120}, + {776, 1882}, + {4043, 1130}, + {3533, 2150}, + {602, 3946}, + {3263, 767}, + {1922, 2339}, + {3523, 2736}, + {1570, 2176}, + {750, 1132}, + {1221, 1433}, + {4425, 2654}, + {1071, 35}, + {1557, 3491}, + {2971, 195}, + {4135, 2688}, + {2371, 466}, + {2568, 3228}, + {1099, 376}, + {3761, 2900}, + {4019, 1407}, + {3513, 282}, + {3104, 2119}, + {2313, 2807}, + {4085, 2134}, + {798, 2772}, + {2819, 2187}, + {2531, 3897}, + {2303, 757}, + {553, 1750}, + {72, 462}, + {3989, 3213}, + {4708, 1050}, + {1818, 2279}, + {3129, 1675}, + {419, 2331}, + {4329, 775}, + {20, 138}, + {4562, 3496}, + {2575, 3689}, + {1693, 1220}, + {1916, 2147}, + {4671, 3314}, + {10, 425}, + {3387, 3254}, + {1403, 1882}, + {3118, 1364}, + {1765, 2476}, + {331, 3537}, + {4557, 72}, + {3367, 2122}, + {3133, 2213}, + {3902, 3210}, + {3993, 2901}, + {80, 1009}, + {4246, 1660}, + {1664, 2310}, + {3214, 721}, + {1351, 182}, + {3434, 3525}, + {4088, 2564}, + {3714, 3725}, + {473, 1175}, + {459, 3781}, + {3365, 1331}, + {1523, 2604}, + {4689, 1269}, + {327, 3582}, + {4341, 3113}, + {650, 534}, + {2230, 1703}, + {2124, 817}, + {3602, 870}, + {4263, 1307}, + {1669, 2641}, + {3206, 1152}, + {1343, 640}, + {4104, 2228}, + {3703, 3827}, + {465, 750}, + {2692, 552}, + {2234, 3221}, + {3674, 624}, + {1103, 3092}, + {3953, 2625}, + {874, 1314}, + {1513, 99}, + {1628, 2040}, + {2637, 2761}, + {3463, 3643}, + {404, 1669}, + {4406, 2223}, + {1836, 588}, + {3357, 3841}, + {1497, 3489}, + {3577, 65}, + {3935, 1313}, + {3857, 985}, + {622, 3560}, + {3696, 2191}, + {2062, 3278}, + {2989, 478}, + {995, 3320}, + {4077, 1932}, + {1296, 1434}, + {3191, 2509}, + {3599, 2737}, + {2155, 2073}, + {2020, 385}, + {1261, 2108}, + {2724, 2676}, + {2405, 47}, + {3062, 686}, + {2126, 3888}, + {169, 992}, + {655, 3272}, + {3836, 520}, + {1447, 1673}, + {3605, 2216}, + {289, 1604}, + {4653, 3856}, + {701, 3483}, + {4384, 69}, + {2636, 1302}, + {3019, 979}, + {1516, 3567}, + {1327, 2751}, + {4274, 364}, + {668, 3300}, + {3353, 437}, + {1833, 2974}, + {3582, 2534}, + {1491, 1466}, + {820, 211}, + {1289, 2197}, + {4370, 2841}, + {3082, 2758}, + {101, 427}, + {1614, 502}, + {3549, 1437}, + {1882, 1418}, + {1464, 246}, + {226, 2164}, + {3490, 3848}, + {429, 1441}, + {4380, 2456}, + {1802, 1389}, + {3301, 3639}, + {1533, 3279}, + {3626, 407}, + {3984, 1547}, + {3807, 691}, + {657, 3761}, + {677, 1209}, + {3554, 2371}, + {1322, 1579}, + {109, 924}, + {4235, 292}, + {515, 3404}, + {2414, 1044}, + {3495, 3547}, + {4374, 2350}, + {1790, 1507}, + {3304, 3744}, + {1547, 3385}, + {3817, 1125}, + {670, 3658}, + {818, 1748}, + {2519, 3421}, + {2409, 267}, + {3841, 3362}, + {1305, 1997}, + {4075, 1485}, + {998, 2359}, + {1326, 3330}, + {1842, 3030}, + {2743, 1858}, + {3632, 724}, + {589, 2467}, + {4208, 1425}, + {1636, 2532}, + {3168, 1005}, + {1383, 503}, + {3487, 3309}, + {4130, 2354}, + {3666, 3930}, + {497, 893}, + {2158, 174}, + {2894, 3463}, + {878, 82}, + {3946, 2714}, + {1106, 2241}, + {3671, 1597}, + {3476, 1829}, + {1963, 3047}, + {2102, 3511}, + {3873, 1837}, + {1179, 2958}, + {2632, 1892}, + {2278, 3303}, + {2870, 3716}, + {512, 172}, + {3649, 3398}, + {4369, 730}, + {1580, 2474}, + {3497, 1420}, + {137, 2524}, + {4537, 1014}, + {478, 498}, + {2742, 2343}, + {2904, 3924}, + {1328, 899}, + {1517, 1851}, + {463, 43}, + {3164, 3438}, + {1633, 2118}, + {3489, 1621}, + {1381, 2277}, + {1011, 3181}, + {1112, 2929}, + {4258, 1722}, + {1368, 225}, + {4308, 3058}, + {636, 1731}, + {3309, 3005}, + {1786, 541}, + {1538, 3586}, + {854, 2745}, + {1243, 3369}, + {4404, 18}, + {1724, 1585}, + {4514, 3575}, + {265, 1206}, + {3545, 3615}, + {1619, 1359}, + {3249, 1760}, + {1862, 3077}, + {4701, 1685}, + {4699, 2458}, + {1793, 762}, + {3115, 3843}, + {442, 670}, + {4312, 2225}, + {8, 2719}, + {4584, 2132}, + {2558, 1401}, + {1720, 2575}, + {1717, 1474}, + {4508, 3877}, + {279, 783}, + {3555, 3921}, + {1608, 1706}, + {3238, 2148}, + {1065, 3579}, + {961, 2516}, + {4692, 1341}, + {3765, 3295}, + {1989, 2110}, + {2926, 2738}, + {918, 2167}, + {4137, 3499}, + {1204, 3939}, + {3918, 776}, + {3124, 1712}, + {3510, 475}, + {1902, 2392}, + {4658, 1197}, + {73, 3583}, + {3404, 1115}, + {1455, 2606}, + {3093, 3007}, + {1698, 1736}, + {1191, 782}, + {799, 1489}, + {4559, 2269}, + {951, 601}, + {2299, 2036}, + {3743, 2844}, + {4040, 920}, + {781, 3830}, + {1602, 2915}, + {1706, 3223}, + {2581, 442}, + {2713, 1987}, + {1023, 3214}, + {2028, 3158}, + {2799, 1742}, + {2367, 1250}, + {2543, 2560}, + {4474, 3529}, + {4581, 2795}, + {774, 2137}, + {3358, 1188}, + {1715, 3591}, + {4271, 1122}, + {405, 2599}, + {4617, 3014}, + {56, 791}, + {3217, 3196}, + {282, 2000}, + {4598, 2872}, + {1450, 2081}, + {3402, 3419}, + {3870, 1865}, + {4024, 600}, + {3275, 3197}, + {366, 2001}, + {1398, 2080}, + {3398, 3417}, + {3108, 868}, + {3911, 1866}, + {4020, 599}, + {65, 2558}, + {530, 892}, + {4236, 3750}, + {1684, 826}, + {3188, 2341}, + {1321, 2833}, + {3466, 1985}, + {4080, 1016}, + {3687, 1275}, + {481, 2470}, + {484, 1698}, + {3392, 3669}, + {1535, 1069}, + {4664, 3721}, + {358, 1462}, + {4378, 1895}, + {612, 2961}, + {2238, 3791}, + {2145, 2297}, + {3587, 1561}, + {3595, 2217}, + {540, 1028}, + {4221, 3647}, + {1676, 971}, + {3202, 2450}, + {1329, 2941}, + {3456, 1857}, + {4066, 889}, + {487, 2365}, + {1026, 79}, + {2714, 2979}, + {2241, 1878}, + {3653, 2926}, + {1135, 423}, + {3987, 949}, + {834, 3654}, + {1525, 2886}, + {1653, 3458}, + {2625, 235}, + {3432, 1299}, + {368, 3762}, + {4397, 881}, + {1856, 3818}, + {3315, 1535}, + {3609, 2865}, + {3927, 3653}, + {3824, 2659}, + {642, 1440}, + {3702, 3363}, + {2073, 1819}, + {3016, 3036}, + {990, 1747}, + {4091, 3150}, + {1306, 3556}, + {3837, 1084}, + {3213, 2183}, + {2125, 3485}, + {1988, 3072}, + {3762, 208}, + {1250, 3401}, + {2736, 288}, + {2382, 2854}, + {2154, 1574}, + {148, 380}, + {620, 1814}, + {3852, 2954}, + {4222, 1308}, + {1427, 3767}, + {3593, 871}, + {324, 3811}, + {4625, 1545}, + {664, 2072}, + {4414, 2869}, + {2626, 3644}, + {2983, 2648}, + {1524, 1447}, + {1356, 224}, + {4305, 3057}, + {684, 1732}, + {3318, 3006}, + {1859, 542}, + {3608, 1113}, + {824, 2744}, + {1316, 3370}, + {4358, 17}, + {191, 1689}, + {3283, 3667}, + {1751, 1072}, + {416, 1464}, + {4549, 1900}, + {40, 2960}, + {2188, 3786}, + {2336, 2304}, + {3091, 1558}, + {699, 41}, + {3576, 2944}, + {1339, 699}, + {4498, 2893}, + {126, 379}, + {4256, 984}, + {500, 3680}, + {2436, 2855}, + {1976, 3486}, + {3485, 193}, + {3473, 3201}, + {410, 2005}, + {4361, 2868}, + {1825, 2082}, + {3634, 872}, + {3962, 1869}, + {3787, 592}, + {687, 3325}, + {695, 535}, + {3566, 2839}, + {1353, 1974}, + {4503, 2794}, + {115, 215}, + {4250, 843}, + {506, 3783}, + {2448, 2968}, + {1968, 3156}, + {2725, 2580}, + {883, 922}, + {3971, 3778}, + {2018, 858}, + {2880, 2376}, + {2228, 2806}, + {2608, 1950}, + {4354, 1048}, + {4521, 1233}, + {822, 2486}, + {519, 3510}, + {3425, 1828}, + {1482, 2971}, + {4630, 1898}, + {317, 3299}, + {4417, 3718}, + {660, 1062}, + {2277, 1972}, + {2112, 173}, + {3625, 3388}, + {1959, 1412}, + {3733, 3932}, + {1282, 698}, + {2760, 3868}, + {2420, 1641}, + {2999, 2094}, + {2105, 2698}, + {100, 3632}, + {679, 2469}, + {3820, 1270}, + {3045, 1422}, + {1008, 2517}, + {4132, 1017}, + {1271, 492}, + {3790, 3317}, + {3166, 2340}, + {3645, 3922}, + {2099, 894}, + {1355, 3517}, + {4297, 1835}, + {3321, 1884}, + {1850, 3305}, + {3614, 3713}, + {1456, 1068}, + {823, 1962}, + {1312, 168}, + {4351, 3392}, + {4230, 2457}, + {1428, 761}, + {3591, 3844}, + {311, 665}, + {4628, 2226}, + {659, 1183}, + {4418, 2126}, + {2633, 1159}, + {2993, 1402}, + {1537, 2573}, + {3274, 1112}, + {367, 2442} }; static const lxb_codepoint_t lxb_unicode_decomposition_cps[6982] = @@ -191096,7 +195657,7 @@ static const lxb_codepoint_t lxb_unicode_decomposition_cps[6982] = 0x4D56, 0x9EFE, 0x9F05, 0x9F0F, 0x9F16, 0x2A600 }; -static const lxb_codepoint_t lxb_unicode_idna_cps[5400] = +static const lxb_codepoint_t lxb_unicode_idna_cps[5428] = { 0x0073, 0x0073, 0x03C3, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, @@ -191477,9364 +196038,9397 @@ static const lxb_codepoint_t lxb_unicode_idna_cps[5400] = 0xA791, 0xA793, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0x026C, 0x029E, 0x0287, 0xAB53, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, - 0xA794, 0x1D8E, 0xA7C8, 0xA7CA, 0x0264, 0xA7CD, 0xA7D1, 0xA7D7, - 0xA7D9, 0xA7DB, 0x019B, 0xA7F6, 0xAB37, 0xAB52, 0x028D, 0x13A0, - 0x13A1, 0x13A2, 0x13A3, 0x13A4, 0x13A5, 0x13A6, 0x13A7, 0x13A8, - 0x13A9, 0x13AA, 0x13AB, 0x13AC, 0x13AD, 0x13AE, 0x13AF, 0x13B0, - 0x13B1, 0x13B2, 0x13B3, 0x13B4, 0x13B5, 0x13B6, 0x13B7, 0x13B8, - 0x13B9, 0x13BA, 0x13BB, 0x13BC, 0x13BD, 0x13BE, 0x13BF, 0x13C0, - 0x13C1, 0x13C2, 0x13C3, 0x13C4, 0x13C5, 0x13C6, 0x13C7, 0x13C8, - 0x13C9, 0x13CA, 0x13CB, 0x13CC, 0x13CD, 0x13CE, 0x13CF, 0x13D0, - 0x13D1, 0x13D2, 0x13D3, 0x13D4, 0x13D5, 0x13D6, 0x13D7, 0x13D8, - 0x13D9, 0x13DA, 0x13DB, 0x13DC, 0x13DD, 0x13DE, 0x13DF, 0x13E0, - 0x13E1, 0x13E2, 0x13E3, 0x13E4, 0x13E5, 0x13E6, 0x13E7, 0x13E8, - 0x13E9, 0x13EA, 0x13EB, 0x13EC, 0x13ED, 0x13EE, 0x13EF, 0x8C48, - 0x66F4, 0x8CC8, 0x6ED1, 0x4E32, 0x53E5, 0x5951, 0x5587, 0x5948, - 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, 0x88F8, 0x908F, 0x6A02, - 0x6D1B, 0x70D9, 0x73DE, 0x843D, 0x916A, 0x99F1, 0x4E82, 0x5375, - 0x6B04, 0x721B, 0x862D, 0x9E1E, 0x5D50, 0x6FEB, 0x85CD, 0x8964, - 0x62C9, 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x90CE, - 0x4F86, 0x51B7, 0x52DE, 0x64C4, 0x6AD3, 0x7210, 0x76E7, 0x8606, - 0x865C, 0x8DEF, 0x9732, 0x9B6F, 0x9DFA, 0x788C, 0x797F, 0x7DA0, - 0x83C9, 0x9304, 0x8AD6, 0x58DF, 0x5F04, 0x7C60, 0x807E, 0x7262, - 0x78CA, 0x8CC2, 0x96F7, 0x58D8, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, - 0x7D2F, 0x7E37, 0x964B, 0x52D2, 0x808B, 0x51DC, 0x51CC, 0x7A1C, - 0x7DBE, 0x83F1, 0x9675, 0x8B80, 0x62CF, 0x8AFE, 0x4E39, 0x5BE7, - 0x6012, 0x7387, 0x7570, 0x5317, 0x78FB, 0x4FBF, 0x5FA9, 0x4E0D, - 0x6CCC, 0x6578, 0x7D22, 0x53C3, 0x585E, 0x7701, 0x8449, 0x8AAA, - 0x6BBA, 0x6C88, 0x62FE, 0x82E5, 0x63A0, 0x7565, 0x4EAE, 0x5169, - 0x51C9, 0x6881, 0x7CE7, 0x826F, 0x8AD2, 0x91CF, 0x52F5, 0x5442, - 0x5EEC, 0x65C5, 0x6FFE, 0x792A, 0x95AD, 0x9A6A, 0x9E97, 0x9ECE, - 0x66C6, 0x6B77, 0x8F62, 0x5E74, 0x6190, 0x6200, 0x649A, 0x6F23, - 0x7149, 0x7489, 0x79CA, 0x7DF4, 0x806F, 0x8F26, 0x84EE, 0x9023, - 0x934A, 0x5217, 0x52A3, 0x54BD, 0x70C8, 0x88C2, 0x5EC9, 0x5FF5, - 0x637B, 0x6BAE, 0x7C3E, 0x7375, 0x56F9, 0x5DBA, 0x601C, 0x73B2, - 0x7469, 0x7F9A, 0x8046, 0x9234, 0x96F6, 0x9748, 0x9818, 0x4F8B, - 0x79AE, 0x91B4, 0x96B8, 0x60E1, 0x4E86, 0x50DA, 0x5BEE, 0x5C3F, - 0x6599, 0x71CE, 0x7642, 0x84FC, 0x907C, 0x6688, 0x962E, 0x5289, - 0x677B, 0x67F3, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7D10, - 0x985E, 0x622E, 0x9678, 0x502B, 0x5D19, 0x6DEA, 0x8F2A, 0x5F8B, - 0x6144, 0x6817, 0x9686, 0x5229, 0x540F, 0x5C65, 0x6613, 0x674E, - 0x68A8, 0x6CE5, 0x7406, 0x75E2, 0x7F79, 0x88CF, 0x88E1, 0x96E2, - 0x533F, 0x6EBA, 0x541D, 0x71D0, 0x7498, 0x85FA, 0x96A3, 0x9C57, - 0x9E9F, 0x6797, 0x6DCB, 0x81E8, 0x7B20, 0x7C92, 0x72C0, 0x7099, - 0x8B58, 0x4EC0, 0x8336, 0x523A, 0x5207, 0x5EA6, 0x62D3, 0x7CD6, - 0x5B85, 0x6D1E, 0x66B4, 0x8F3B, 0x964D, 0x5ED3, 0x5140, 0x55C0, - 0x585A, 0x6674, 0x51DE, 0x732A, 0x76CA, 0x793C, 0x795E, 0x7965, - 0x798F, 0x9756, 0x7CBE, 0x8612, 0x8AF8, 0x9038, 0x90FD, 0x98EF, - 0x98FC, 0x9928, 0x9DB4, 0x90DE, 0x96B7, 0x4FAE, 0x50E7, 0x514D, - 0x52C9, 0x52E4, 0x5351, 0x559D, 0x5606, 0x5668, 0x5840, 0x58A8, - 0x5C64, 0x6094, 0x6168, 0x618E, 0x61F2, 0x654F, 0x65E2, 0x6691, - 0x6885, 0x6D77, 0x6E1A, 0x6F22, 0x716E, 0x722B, 0x7422, 0x7891, - 0x7949, 0x7948, 0x7950, 0x7956, 0x798D, 0x798E, 0x7A40, 0x7A81, - 0x7BC0, 0x7E09, 0x7E41, 0x7F72, 0x8005, 0x81ED, 0x8279, 0x8457, - 0x8910, 0x8996, 0x8B01, 0x8B39, 0x8CD3, 0x8D08, 0x8FB6, 0x96E3, - 0x97FF, 0x983B, 0x6075, 0x242EE, 0x8218, 0x4E26, 0x51B5, 0x5168, - 0x4F80, 0x5145, 0x5180, 0x52C7, 0x52FA, 0x5555, 0x5599, 0x55E2, - 0x58B3, 0x5944, 0x5954, 0x5A62, 0x5B28, 0x5ED2, 0x5ED9, 0x5F69, - 0x5FAD, 0x60D8, 0x614E, 0x6108, 0x6160, 0x6234, 0x63C4, 0x641C, - 0x6452, 0x6556, 0x671B, 0x6756, 0x6EDB, 0x6ECB, 0x701E, 0x77A7, - 0x7235, 0x72AF, 0x7471, 0x7506, 0x753B, 0x761D, 0x761F, 0x76DB, - 0x76F4, 0x774A, 0x7740, 0x78CC, 0x7AB1, 0x7C7B, 0x7D5B, 0x7F3E, - 0x8352, 0x83EF, 0x8779, 0x8941, 0x8986, 0x8ABF, 0x8ACB, 0x8AED, - 0x8B8A, 0x8F38, 0x9072, 0x9199, 0x9276, 0x967C, 0x97DB, 0x980B, - 0x9B12, 0x2284A, 0x22844, 0x233D5, 0x3B9D, 0x4018, 0x4039, 0x25249, - 0x25CD0, 0x27ED3, 0x9F43, 0x9F8E, 0x0066, 0x0066, 0x0066, 0x0069, - 0x0066, 0x006C, 0x0066, 0x0066, 0x0069, 0x0066, 0x0066, 0x006C, - 0x0073, 0x0074, 0x0574, 0x0576, 0x0574, 0x0565, 0x0574, 0x056B, - 0x057E, 0x0576, 0x0574, 0x056D, 0x05D9, 0x05B4, 0x05F2, 0x05B7, - 0x05E2, 0x05D4, 0x05DB, 0x05DC, 0x05DD, 0x05E8, 0x05EA, 0x05E9, - 0x05C1, 0x05E9, 0x05C2, 0x05E9, 0x05BC, 0x05C1, 0x05E9, 0x05BC, - 0x05C2, 0x05D0, 0x05B7, 0x05D0, 0x05B8, 0x05D0, 0x05BC, 0x05D1, - 0x05BC, 0x05D2, 0x05BC, 0x05D3, 0x05BC, 0x05D4, 0x05BC, 0x05D5, - 0x05BC, 0x05D6, 0x05BC, 0x05D8, 0x05BC, 0x05D9, 0x05BC, 0x05DA, - 0x05BC, 0x05DB, 0x05BC, 0x05DC, 0x05BC, 0x05DE, 0x05BC, 0x05E0, - 0x05BC, 0x05E1, 0x05BC, 0x05E3, 0x05BC, 0x05E4, 0x05BC, 0x05E6, - 0x05BC, 0x05E7, 0x05BC, 0x05E8, 0x05BC, 0x05EA, 0x05BC, 0x05D5, - 0x05B9, 0x05D1, 0x05BF, 0x05DB, 0x05BF, 0x05E4, 0x05BF, 0x05D0, - 0x05DC, 0x0671, 0x067B, 0x067E, 0x0680, 0x067A, 0x067F, 0x0679, - 0x06A4, 0x06A6, 0x0684, 0x0683, 0x0686, 0x0687, 0x068D, 0x068C, - 0x068E, 0x0688, 0x0698, 0x0691, 0x06A9, 0x06AF, 0x06B3, 0x06B1, - 0x06BA, 0x06BB, 0x06C0, 0x06C1, 0x06BE, 0x06D2, 0x06D3, 0x06AD, - 0x06C6, 0x06C8, 0x06CB, 0x06C5, 0x06C9, 0x06D0, 0x0649, 0x0626, - 0x0627, 0x0626, 0x06D5, 0x0626, 0x0648, 0x0626, 0x06C7, 0x0626, - 0x06C6, 0x0626, 0x06C8, 0x0626, 0x06D0, 0x0626, 0x0649, 0x06CC, - 0x0626, 0x062C, 0x0626, 0x062D, 0x0626, 0x0645, 0x0626, 0x064A, - 0x0628, 0x062C, 0x0628, 0x062D, 0x0628, 0x062E, 0x0628, 0x0645, - 0x0628, 0x0649, 0x0628, 0x064A, 0x062A, 0x062C, 0x062A, 0x062D, - 0x062A, 0x062E, 0x062A, 0x0645, 0x062A, 0x0649, 0x062A, 0x064A, - 0x062B, 0x062C, 0x062B, 0x0645, 0x062B, 0x0649, 0x062B, 0x064A, - 0x062C, 0x062D, 0x062C, 0x0645, 0x062D, 0x062C, 0x062D, 0x0645, - 0x062E, 0x062C, 0x062E, 0x062D, 0x062E, 0x0645, 0x0633, 0x062C, - 0x0633, 0x062D, 0x0633, 0x062E, 0x0633, 0x0645, 0x0635, 0x062D, - 0x0635, 0x0645, 0x0636, 0x062C, 0x0636, 0x062D, 0x0636, 0x062E, - 0x0636, 0x0645, 0x0637, 0x062D, 0x0637, 0x0645, 0x0638, 0x0645, - 0x0639, 0x062C, 0x0639, 0x0645, 0x063A, 0x062C, 0x063A, 0x0645, - 0x0641, 0x062C, 0x0641, 0x062D, 0x0641, 0x062E, 0x0641, 0x0645, - 0x0641, 0x0649, 0x0641, 0x064A, 0x0642, 0x062D, 0x0642, 0x0645, - 0x0642, 0x0649, 0x0642, 0x064A, 0x0643, 0x0627, 0x0643, 0x062C, - 0x0643, 0x062D, 0x0643, 0x062E, 0x0643, 0x0644, 0x0643, 0x0645, - 0x0643, 0x0649, 0x0643, 0x064A, 0x0644, 0x062C, 0x0644, 0x062D, - 0x0644, 0x062E, 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064A, - 0x0645, 0x062C, 0x0645, 0x062D, 0x0645, 0x062E, 0x0645, 0x0645, - 0x0645, 0x0649, 0x0645, 0x064A, 0x0646, 0x062C, 0x0646, 0x062D, - 0x0646, 0x062E, 0x0646, 0x0645, 0x0646, 0x0649, 0x0646, 0x064A, - 0x0647, 0x062C, 0x0647, 0x0645, 0x0647, 0x0649, 0x0647, 0x064A, - 0x064A, 0x062C, 0x064A, 0x062D, 0x064A, 0x062E, 0x064A, 0x0645, - 0x064A, 0x0649, 0x064A, 0x064A, 0x0630, 0x0670, 0x0631, 0x0670, - 0x0649, 0x0670, 0x0020, 0x064C, 0x0651, 0x0020, 0x064D, 0x0651, - 0x0020, 0x064E, 0x0651, 0x0020, 0x064F, 0x0651, 0x0020, 0x0650, - 0x0651, 0x0020, 0x0651, 0x0670, 0x0626, 0x0631, 0x0626, 0x0632, - 0x0626, 0x0646, 0x0628, 0x0631, 0x0628, 0x0632, 0x0628, 0x0646, - 0x062A, 0x0631, 0x062A, 0x0632, 0x062A, 0x0646, 0x062B, 0x0631, - 0x062B, 0x0632, 0x062B, 0x0646, 0x0645, 0x0627, 0x0646, 0x0631, - 0x0646, 0x0632, 0x0646, 0x0646, 0x064A, 0x0631, 0x064A, 0x0632, - 0x064A, 0x0646, 0x0626, 0x062E, 0x0626, 0x0647, 0x0628, 0x0647, - 0x062A, 0x0647, 0x0635, 0x062E, 0x0644, 0x0647, 0x0646, 0x0647, - 0x0647, 0x0670, 0x064A, 0x0647, 0x062B, 0x0647, 0x0633, 0x0647, - 0x0634, 0x0645, 0x0634, 0x0647, 0x0640, 0x064E, 0x0651, 0x0640, - 0x064F, 0x0651, 0x0640, 0x0650, 0x0651, 0x0637, 0x0649, 0x0637, - 0x064A, 0x0639, 0x0649, 0x0639, 0x064A, 0x063A, 0x0649, 0x063A, - 0x064A, 0x0633, 0x0649, 0x0633, 0x064A, 0x0634, 0x0649, 0x0634, - 0x064A, 0x062D, 0x0649, 0x062D, 0x064A, 0x062C, 0x0649, 0x062C, - 0x064A, 0x062E, 0x0649, 0x062E, 0x064A, 0x0635, 0x0649, 0x0635, - 0x064A, 0x0636, 0x0649, 0x0636, 0x064A, 0x0634, 0x062C, 0x0634, - 0x062D, 0x0634, 0x062E, 0x0634, 0x0631, 0x0633, 0x0631, 0x0635, - 0x0631, 0x0636, 0x0631, 0x0627, 0x064B, 0x062A, 0x062C, 0x0645, - 0x062A, 0x062D, 0x062C, 0x062A, 0x062D, 0x0645, 0x062A, 0x062E, - 0x0645, 0x062A, 0x0645, 0x062C, 0x062A, 0x0645, 0x062D, 0x062A, - 0x0645, 0x062E, 0x062C, 0x0645, 0x062D, 0x062D, 0x0645, 0x064A, - 0x062D, 0x0645, 0x0649, 0x0633, 0x062D, 0x062C, 0x0633, 0x062C, - 0x062D, 0x0633, 0x062C, 0x0649, 0x0633, 0x0645, 0x062D, 0x0633, - 0x0645, 0x062C, 0x0633, 0x0645, 0x0645, 0x0635, 0x062D, 0x062D, - 0x0635, 0x0645, 0x0645, 0x0634, 0x062D, 0x0645, 0x0634, 0x062C, - 0x064A, 0x0634, 0x0645, 0x062E, 0x0634, 0x0645, 0x0645, 0x0636, - 0x062D, 0x0649, 0x0636, 0x062E, 0x0645, 0x0637, 0x0645, 0x062D, - 0x0637, 0x0645, 0x0645, 0x0637, 0x0645, 0x064A, 0x0639, 0x062C, - 0x0645, 0x0639, 0x0645, 0x0645, 0x0639, 0x0645, 0x0649, 0x063A, - 0x0645, 0x0645, 0x063A, 0x0645, 0x064A, 0x063A, 0x0645, 0x0649, - 0x0641, 0x062E, 0x0645, 0x0642, 0x0645, 0x062D, 0x0642, 0x0645, - 0x0645, 0x0644, 0x062D, 0x0645, 0x0644, 0x062D, 0x064A, 0x0644, - 0x062D, 0x0649, 0x0644, 0x062C, 0x062C, 0x0644, 0x062E, 0x0645, - 0x0644, 0x0645, 0x062D, 0x0645, 0x062D, 0x062C, 0x0645, 0x062D, - 0x0645, 0x0645, 0x062D, 0x064A, 0x0645, 0x062C, 0x062D, 0x0645, - 0x062C, 0x0645, 0x0645, 0x062E, 0x062C, 0x0645, 0x062E, 0x0645, - 0x0645, 0x062C, 0x062E, 0x0647, 0x0645, 0x062C, 0x0647, 0x0645, - 0x0645, 0x0646, 0x062D, 0x0645, 0x0646, 0x062D, 0x0649, 0x0646, - 0x062C, 0x0645, 0x0646, 0x062C, 0x0649, 0x0646, 0x0645, 0x064A, - 0x0646, 0x0645, 0x0649, 0x064A, 0x0645, 0x0645, 0x0628, 0x062E, - 0x064A, 0x062A, 0x062C, 0x064A, 0x062A, 0x062C, 0x0649, 0x062A, - 0x062E, 0x064A, 0x062A, 0x062E, 0x0649, 0x062A, 0x0645, 0x064A, - 0x062A, 0x0645, 0x0649, 0x062C, 0x0645, 0x064A, 0x062C, 0x062D, - 0x0649, 0x062C, 0x0645, 0x0649, 0x0633, 0x062E, 0x0649, 0x0635, - 0x062D, 0x064A, 0x0634, 0x062D, 0x064A, 0x0636, 0x062D, 0x064A, - 0x0644, 0x062C, 0x064A, 0x0644, 0x0645, 0x064A, 0x064A, 0x062D, - 0x064A, 0x064A, 0x062C, 0x064A, 0x064A, 0x0645, 0x064A, 0x0645, - 0x0645, 0x064A, 0x0642, 0x0645, 0x064A, 0x0646, 0x062D, 0x064A, - 0x0639, 0x0645, 0x064A, 0x0643, 0x0645, 0x064A, 0x0646, 0x062C, - 0x062D, 0x0645, 0x062E, 0x064A, 0x0644, 0x062C, 0x0645, 0x0643, - 0x0645, 0x0645, 0x062C, 0x062D, 0x064A, 0x062D, 0x062C, 0x064A, - 0x0645, 0x062C, 0x064A, 0x0641, 0x0645, 0x064A, 0x0628, 0x062D, - 0x064A, 0x0633, 0x062E, 0x064A, 0x0646, 0x062C, 0x064A, 0x0635, - 0x0644, 0x06D2, 0x0642, 0x0644, 0x06D2, 0x0627, 0x0644, 0x0644, - 0x0647, 0x0627, 0x0643, 0x0628, 0x0631, 0x0645, 0x062D, 0x0645, - 0x062F, 0x0635, 0x0644, 0x0639, 0x0645, 0x0631, 0x0633, 0x0648, - 0x0644, 0x0639, 0x0644, 0x064A, 0x0647, 0x0648, 0x0633, 0x0644, - 0x0645, 0x0635, 0x0644, 0x0649, 0x0635, 0x0644, 0x0649, 0x0020, - 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, - 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0x062C, 0x0644, - 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0x0631, 0x06CC, - 0x0627, 0x0644, 0x002C, 0x3001, 0x3016, 0x3017, 0x2014, 0x2013, - 0x005F, 0x007B, 0x007D, 0x3014, 0x3015, 0x3010, 0x3011, 0x300A, - 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x005B, 0x005D, 0x0023, - 0x0026, 0x002A, 0x002D, 0x003C, 0x003E, 0x005C, 0x0024, 0x0025, - 0x0040, 0x0020, 0x064B, 0x0640, 0x064B, 0x0640, 0x0651, 0x0020, - 0x0652, 0x0640, 0x0652, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, - 0x0629, 0x062F, 0x0632, 0x0644, 0x0622, 0x0644, 0x0623, 0x0644, - 0x0625, 0x0644, 0x0627, 0x0022, 0x0027, 0x002F, 0x005E, 0x007C, - 0x007E, 0x2985, 0x2986, 0x30FB, 0x30A1, 0x30A3, 0x30A5, 0x30A7, - 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, 0x30FC, 0x30F3, 0x3099, - 0x309A, 0x00A2, 0x00A3, 0x00AC, 0x00A6, 0x00A5, 0x20A9, 0x2502, - 0x2190, 0x2191, 0x2192, 0x2193, 0x25A0, 0x25CB, 0x10428, 0x10429, - 0x1042A, 0x1042B, 0x1042C, 0x1042D, 0x1042E, 0x1042F, 0x10430, 0x10431, - 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 0x10438, 0x10439, - 0x1043A, 0x1043B, 0x1043C, 0x1043D, 0x1043E, 0x1043F, 0x10440, 0x10441, - 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 0x10448, 0x10449, - 0x1044A, 0x1044B, 0x1044C, 0x1044D, 0x1044E, 0x1044F, 0x104D8, 0x104D9, - 0x104DA, 0x104DB, 0x104DC, 0x104DD, 0x104DE, 0x104DF, 0x104E0, 0x104E1, - 0x104E2, 0x104E3, 0x104E4, 0x104E5, 0x104E6, 0x104E7, 0x104E8, 0x104E9, - 0x104EA, 0x104EB, 0x104EC, 0x104ED, 0x104EE, 0x104EF, 0x104F0, 0x104F1, - 0x104F2, 0x104F3, 0x104F4, 0x104F5, 0x104F6, 0x104F7, 0x104F8, 0x104F9, - 0x104FA, 0x104FB, 0x10597, 0x10598, 0x10599, 0x1059A, 0x1059B, 0x1059C, - 0x1059D, 0x1059E, 0x1059F, 0x105A0, 0x105A1, 0x105A3, 0x105A4, 0x105A5, - 0x105A6, 0x105A7, 0x105A8, 0x105A9, 0x105AA, 0x105AB, 0x105AC, 0x105AD, - 0x105AE, 0x105AF, 0x105B0, 0x105B1, 0x105B3, 0x105B4, 0x105B5, 0x105B6, - 0x105B7, 0x105B8, 0x105B9, 0x105BB, 0x105BC, 0x02D0, 0x02D1, 0x0299, - 0x02A3, 0xAB66, 0x02A5, 0x02A4, 0x1D91, 0x0258, 0x025E, 0x02A9, - 0x0262, 0x029B, 0x029C, 0x0267, 0x0284, 0x02AA, 0x02AB, 0x1DF04, - 0xA78E, 0x026E, 0x1DF05, 0x028E, 0x1DF06, 0x0276, 0x0277, 0x027A, - 0x1DF08, 0x027E, 0x02A8, 0x02A6, 0xAB67, 0x02A7, 0x2C71, 0x028F, - 0x02A1, 0x02A2, 0x0298, 0x01C0, 0x01C1, 0x01C2, 0x1DF0A, 0x1DF1E, - 0x10CC0, 0x10CC1, 0x10CC2, 0x10CC3, 0x10CC4, 0x10CC5, 0x10CC6, 0x10CC7, - 0x10CC8, 0x10CC9, 0x10CCA, 0x10CCB, 0x10CCC, 0x10CCD, 0x10CCE, 0x10CCF, - 0x10CD0, 0x10CD1, 0x10CD2, 0x10CD3, 0x10CD4, 0x10CD5, 0x10CD6, 0x10CD7, - 0x10CD8, 0x10CD9, 0x10CDA, 0x10CDB, 0x10CDC, 0x10CDD, 0x10CDE, 0x10CDF, - 0x10CE0, 0x10CE1, 0x10CE2, 0x10CE3, 0x10CE4, 0x10CE5, 0x10CE6, 0x10CE7, - 0x10CE8, 0x10CE9, 0x10CEA, 0x10CEB, 0x10CEC, 0x10CED, 0x10CEE, 0x10CEF, - 0x10CF0, 0x10CF1, 0x10CF2, 0x10D70, 0x10D71, 0x10D72, 0x10D73, 0x10D74, - 0x10D75, 0x10D76, 0x10D77, 0x10D78, 0x10D79, 0x10D7A, 0x10D7B, 0x10D7C, - 0x10D7D, 0x10D7E, 0x10D7F, 0x10D80, 0x10D81, 0x10D82, 0x10D83, 0x10D84, - 0x10D85, 0x118C0, 0x118C1, 0x118C2, 0x118C3, 0x118C4, 0x118C5, 0x118C6, - 0x118C7, 0x118C8, 0x118C9, 0x118CA, 0x118CB, 0x118CC, 0x118CD, 0x118CE, - 0x118CF, 0x118D0, 0x118D1, 0x118D2, 0x118D3, 0x118D4, 0x118D5, 0x118D6, - 0x118D7, 0x118D8, 0x118D9, 0x118DA, 0x118DB, 0x118DC, 0x118DD, 0x118DE, - 0x118DF, 0x16E60, 0x16E61, 0x16E62, 0x16E63, 0x16E64, 0x16E65, 0x16E66, - 0x16E67, 0x16E68, 0x16E69, 0x16E6A, 0x16E6B, 0x16E6C, 0x16E6D, 0x16E6E, - 0x16E6F, 0x16E70, 0x16E71, 0x16E72, 0x16E73, 0x16E74, 0x16E75, 0x16E76, - 0x16E77, 0x16E78, 0x16E79, 0x16E7A, 0x16E7B, 0x16E7C, 0x16E7D, 0x16E7E, - 0x16E7F, 0x1D157, 0x1D165, 0x1D158, 0x1D165, 0x1D158, 0x1D165, 0x1D16E, - 0x1D158, 0x1D165, 0x1D16F, 0x1D158, 0x1D165, 0x1D170, 0x1D158, 0x1D165, - 0x1D171, 0x1D158, 0x1D165, 0x1D172, 0x1D1B9, 0x1D165, 0x1D1BA, 0x1D165, - 0x1D1B9, 0x1D165, 0x1D16E, 0x1D1BA, 0x1D165, 0x1D16E, 0x1D1B9, 0x1D165, - 0x1D16F, 0x1D1BA, 0x1D165, 0x1D16F, 0x0131, 0x0237, 0x2207, 0x2202, - 0x1E922, 0x1E923, 0x1E924, 0x1E925, 0x1E926, 0x1E927, 0x1E928, 0x1E929, - 0x1E92A, 0x1E92B, 0x1E92C, 0x1E92D, 0x1E92E, 0x1E92F, 0x1E930, 0x1E931, - 0x1E932, 0x1E933, 0x1E934, 0x1E935, 0x1E936, 0x1E937, 0x1E938, 0x1E939, - 0x1E93A, 0x1E93B, 0x1E93C, 0x1E93D, 0x1E93E, 0x1E93F, 0x1E940, 0x1E941, - 0x1E942, 0x1E943, 0x066E, 0x06A1, 0x066F, 0x0030, 0x002C, 0x0031, - 0x002C, 0x0032, 0x002C, 0x0033, 0x002C, 0x0034, 0x002C, 0x0035, - 0x002C, 0x0036, 0x002C, 0x0037, 0x002C, 0x0038, 0x002C, 0x0039, - 0x002C, 0x3014, 0x0073, 0x3015, 0x0077, 0x007A, 0x0068, 0x0076, - 0x0073, 0x0064, 0x0070, 0x0070, 0x0076, 0x0077, 0x0063, 0x006D, - 0x0063, 0x006D, 0x0064, 0x006D, 0x0072, 0x0064, 0x006A, 0x307B, - 0x304B, 0x30B3, 0x30B3, 0x5B57, 0x53CC, 0x591A, 0x89E3, 0x4EA4, - 0x6620, 0x7121, 0x524D, 0x5F8C, 0x518D, 0x65B0, 0x521D, 0x7D42, - 0x8CA9, 0x58F0, 0x5439, 0x6F14, 0x6295, 0x6355, 0x904A, 0x6307, - 0x6253, 0x7981, 0x7A7A, 0x5408, 0x6E80, 0x7533, 0x5272, 0x55B6, - 0x914D, 0x3014, 0x672C, 0x3015, 0x3014, 0x4E09, 0x3015, 0x3014, - 0x4E8C, 0x3015, 0x3014, 0x5B89, 0x3015, 0x3014, 0x70B9, 0x3015, - 0x3014, 0x6253, 0x3015, 0x3014, 0x76D7, 0x3015, 0x3014, 0x52DD, - 0x3015, 0x3014, 0x6557, 0x3015, 0x5F97, 0x53EF, 0x4E3D, 0x4E38, - 0x4E41, 0x20122, 0x4F60, 0x4FBB, 0x5002, 0x507A, 0x5099, 0x50CF, - 0x349E, 0x2063A, 0x5154, 0x5164, 0x5177, 0x2051C, 0x34B9, 0x5167, - 0x2054B, 0x5197, 0x51A4, 0x4ECC, 0x51AC, 0x291DF, 0x5203, 0x34DF, - 0x523B, 0x5246, 0x5277, 0x3515, 0x5305, 0x5306, 0x5349, 0x535A, - 0x5373, 0x537D, 0x537F, 0x20A2C, 0x7070, 0x53CA, 0x53DF, 0x20B63, - 0x53EB, 0x53F1, 0x5406, 0x549E, 0x5438, 0x5448, 0x5468, 0x54A2, - 0x54F6, 0x5510, 0x5553, 0x5563, 0x5584, 0x55AB, 0x55B3, 0x55C2, - 0x5716, 0x5717, 0x5651, 0x5674, 0x58EE, 0x57CE, 0x57F4, 0x580D, - 0x578B, 0x5832, 0x5831, 0x58AC, 0x214E4, 0x58F2, 0x58F7, 0x5906, - 0x5922, 0x5962, 0x216A8, 0x216EA, 0x59EC, 0x5A1B, 0x5A27, 0x59D8, - 0x5A66, 0x36EE, 0x36FC, 0x5B08, 0x5B3E, 0x219C8, 0x5BC3, 0x5BD8, - 0x5BF3, 0x21B18, 0x5BFF, 0x5C06, 0x5F53, 0x3781, 0x5C60, 0x5CC0, - 0x5C8D, 0x21DE4, 0x5D43, 0x21DE6, 0x5D6E, 0x5D6B, 0x5D7C, 0x5DE1, - 0x5DE2, 0x382F, 0x5DFD, 0x5E28, 0x5E3D, 0x5E69, 0x3862, 0x22183, - 0x387C, 0x5EB0, 0x5EB3, 0x5EB6, 0x2A392, 0x22331, 0x8201, 0x5F22, - 0x38C7, 0x232B8, 0x261DA, 0x5F62, 0x5F6B, 0x38E3, 0x5F9A, 0x5FCD, - 0x5FD7, 0x5FF9, 0x6081, 0x393A, 0x391C, 0x226D4, 0x60C7, 0x6148, - 0x614C, 0x617A, 0x61B2, 0x61A4, 0x61AF, 0x61DE, 0x6210, 0x621B, - 0x625D, 0x62B1, 0x62D4, 0x6350, 0x22B0C, 0x633D, 0x62FC, 0x6368, - 0x6383, 0x63E4, 0x22BF1, 0x6422, 0x63C5, 0x63A9, 0x3A2E, 0x6469, - 0x647E, 0x649D, 0x6477, 0x3A6C, 0x656C, 0x2300A, 0x65E3, 0x66F8, - 0x6649, 0x3B19, 0x3B08, 0x3AE4, 0x5192, 0x5195, 0x6700, 0x669C, - 0x80AD, 0x43D9, 0x6721, 0x675E, 0x6753, 0x233C3, 0x3B49, 0x67FA, - 0x6785, 0x6852, 0x2346D, 0x688E, 0x681F, 0x6914, 0x6942, 0x69A3, - 0x69EA, 0x6AA8, 0x236A3, 0x6ADB, 0x3C18, 0x6B21, 0x238A7, 0x6B54, - 0x3C4E, 0x6B72, 0x6B9F, 0x6BBB, 0x23A8D, 0x21D0B, 0x23AFA, 0x6C4E, - 0x23CBC, 0x6CBF, 0x6CCD, 0x6C67, 0x6D16, 0x6D3E, 0x6D69, 0x6D78, - 0x6D85, 0x23D1E, 0x6D34, 0x6E2F, 0x6E6E, 0x3D33, 0x6EC7, 0x23ED1, - 0x6DF9, 0x6F6E, 0x23F5E, 0x23F8E, 0x6FC6, 0x7039, 0x701B, 0x3D96, - 0x704A, 0x707D, 0x7077, 0x70AD, 0x20525, 0x7145, 0x24263, 0x719C, - 0x243AB, 0x7228, 0x7250, 0x24608, 0x7280, 0x7295, 0x24735, 0x24814, - 0x737A, 0x738B, 0x3EAC, 0x73A5, 0x3EB8, 0x7447, 0x745C, 0x7485, - 0x74CA, 0x3F1B, 0x7524, 0x24C36, 0x753E, 0x24C92, 0x2219F, 0x7610, - 0x24FA1, 0x24FB8, 0x25044, 0x3FFC, 0x4008, 0x250F3, 0x250F2, 0x25119, - 0x25133, 0x771E, 0x771F, 0x778B, 0x4046, 0x4096, 0x2541D, 0x784E, - 0x40E3, 0x25626, 0x2569A, 0x256C5, 0x79EB, 0x412F, 0x7A4A, 0x7A4F, - 0x2597C, 0x25AA7, 0x7AEE, 0x4202, 0x25BAB, 0x7BC6, 0x7BC9, 0x4227, - 0x25C80, 0x7CD2, 0x42A0, 0x7CE8, 0x7CE3, 0x7D00, 0x25F86, 0x7D63, - 0x4301, 0x7DC7, 0x7E02, 0x7E45, 0x4334, 0x26228, 0x26247, 0x4359, - 0x262D9, 0x7F7A, 0x2633E, 0x7F95, 0x7FFA, 0x264DA, 0x26523, 0x8060, - 0x265A8, 0x8070, 0x2335F, 0x43D5, 0x80B2, 0x8103, 0x440B, 0x813E, - 0x5AB5, 0x267A7, 0x267B5, 0x23393, 0x2339C, 0x8204, 0x8F9E, 0x446B, - 0x8291, 0x828B, 0x829D, 0x52B3, 0x82B1, 0x82B3, 0x82BD, 0x82E6, - 0x26B3C, 0x831D, 0x8363, 0x83AD, 0x8323, 0x83BD, 0x83E7, 0x8353, - 0x83CA, 0x83CC, 0x83DC, 0x26C36, 0x26D6B, 0x26CD5, 0x452B, 0x84F1, - 0x84F3, 0x8516, 0x273CA, 0x8564, 0x26F2C, 0x455D, 0x4561, 0x26FB1, - 0x270D2, 0x456B, 0x8650, 0x8667, 0x8669, 0x86A9, 0x8688, 0x870E, - 0x86E2, 0x8728, 0x876B, 0x8786, 0x45D7, 0x87E1, 0x8801, 0x45F9, - 0x8860, 0x27667, 0x88D7, 0x88DE, 0x4635, 0x88FA, 0x34BB, 0x278AE, - 0x27966, 0x46BE, 0x46C7, 0x8AA0, 0x27CA8, 0x8CAB, 0x8CC1, 0x8D1B, - 0x8D77, 0x27F2F, 0x20804, 0x8DCB, 0x8DBC, 0x8DF0, 0x208DE, 0x8ED4, - 0x285D2, 0x285ED, 0x9094, 0x90F1, 0x9111, 0x2872E, 0x911B, 0x9238, - 0x92D7, 0x92D8, 0x927C, 0x93F9, 0x9415, 0x28BFA, 0x958B, 0x4995, - 0x95B7, 0x28D77, 0x49E6, 0x96C3, 0x5DB2, 0x9723, 0x29145, 0x2921A, - 0x4A6E, 0x4A76, 0x97E0, 0x2940A, 0x4AB2, 0x29496, 0x9829, 0x295B6, - 0x98E2, 0x4B33, 0x9929, 0x99A7, 0x99C2, 0x99FE, 0x4BCE, 0x29B30, - 0x9C40, 0x9CFD, 0x4CCE, 0x4CED, 0x9D67, 0x2A0CE, 0x4CF8, 0x2A105, - 0x2A20E, 0x2A291, 0x4D56, 0x9EFE, 0x9F05, 0x9F0F, 0x9F16, 0x2A600 + 0xA794, 0x1D8E, 0xA7C8, 0xA7CA, 0x0264, 0xA7CD, 0xA7CF, 0xA7D1, + 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7DB, 0x019B, 0xA7F6, 0xAB37, + 0xAB52, 0x028D, 0x13A0, 0x13A1, 0x13A2, 0x13A3, 0x13A4, 0x13A5, + 0x13A6, 0x13A7, 0x13A8, 0x13A9, 0x13AA, 0x13AB, 0x13AC, 0x13AD, + 0x13AE, 0x13AF, 0x13B0, 0x13B1, 0x13B2, 0x13B3, 0x13B4, 0x13B5, + 0x13B6, 0x13B7, 0x13B8, 0x13B9, 0x13BA, 0x13BB, 0x13BC, 0x13BD, + 0x13BE, 0x13BF, 0x13C0, 0x13C1, 0x13C2, 0x13C3, 0x13C4, 0x13C5, + 0x13C6, 0x13C7, 0x13C8, 0x13C9, 0x13CA, 0x13CB, 0x13CC, 0x13CD, + 0x13CE, 0x13CF, 0x13D0, 0x13D1, 0x13D2, 0x13D3, 0x13D4, 0x13D5, + 0x13D6, 0x13D7, 0x13D8, 0x13D9, 0x13DA, 0x13DB, 0x13DC, 0x13DD, + 0x13DE, 0x13DF, 0x13E0, 0x13E1, 0x13E2, 0x13E3, 0x13E4, 0x13E5, + 0x13E6, 0x13E7, 0x13E8, 0x13E9, 0x13EA, 0x13EB, 0x13EC, 0x13ED, + 0x13EE, 0x13EF, 0x8C48, 0x66F4, 0x8CC8, 0x6ED1, 0x4E32, 0x53E5, + 0x5951, 0x5587, 0x5948, 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, + 0x88F8, 0x908F, 0x6A02, 0x6D1B, 0x70D9, 0x73DE, 0x843D, 0x916A, + 0x99F1, 0x4E82, 0x5375, 0x6B04, 0x721B, 0x862D, 0x9E1E, 0x5D50, + 0x6FEB, 0x85CD, 0x8964, 0x62C9, 0x81D8, 0x881F, 0x5ECA, 0x6717, + 0x6D6A, 0x72FC, 0x90CE, 0x4F86, 0x51B7, 0x52DE, 0x64C4, 0x6AD3, + 0x7210, 0x76E7, 0x8606, 0x865C, 0x8DEF, 0x9732, 0x9B6F, 0x9DFA, + 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x8AD6, 0x58DF, 0x5F04, + 0x7C60, 0x807E, 0x7262, 0x78CA, 0x8CC2, 0x96F7, 0x58D8, 0x5C62, + 0x6A13, 0x6DDA, 0x6F0F, 0x7D2F, 0x7E37, 0x964B, 0x52D2, 0x808B, + 0x51DC, 0x51CC, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x8B80, 0x62CF, + 0x8AFE, 0x4E39, 0x5BE7, 0x6012, 0x7387, 0x7570, 0x5317, 0x78FB, + 0x4FBF, 0x5FA9, 0x4E0D, 0x6CCC, 0x6578, 0x7D22, 0x53C3, 0x585E, + 0x7701, 0x8449, 0x8AAA, 0x6BBA, 0x6C88, 0x62FE, 0x82E5, 0x63A0, + 0x7565, 0x4EAE, 0x5169, 0x51C9, 0x6881, 0x7CE7, 0x826F, 0x8AD2, + 0x91CF, 0x52F5, 0x5442, 0x5EEC, 0x65C5, 0x6FFE, 0x792A, 0x95AD, + 0x9A6A, 0x9E97, 0x9ECE, 0x66C6, 0x6B77, 0x8F62, 0x5E74, 0x6190, + 0x6200, 0x649A, 0x6F23, 0x7149, 0x7489, 0x79CA, 0x7DF4, 0x806F, + 0x8F26, 0x84EE, 0x9023, 0x934A, 0x5217, 0x52A3, 0x54BD, 0x70C8, + 0x88C2, 0x5EC9, 0x5FF5, 0x637B, 0x6BAE, 0x7C3E, 0x7375, 0x56F9, + 0x5DBA, 0x601C, 0x73B2, 0x7469, 0x7F9A, 0x8046, 0x9234, 0x96F6, + 0x9748, 0x9818, 0x4F8B, 0x79AE, 0x91B4, 0x96B8, 0x60E1, 0x4E86, + 0x50DA, 0x5BEE, 0x5C3F, 0x6599, 0x71CE, 0x7642, 0x84FC, 0x907C, + 0x6688, 0x962E, 0x5289, 0x677B, 0x67F3, 0x6D41, 0x6E9C, 0x7409, + 0x7559, 0x786B, 0x7D10, 0x985E, 0x622E, 0x9678, 0x502B, 0x5D19, + 0x6DEA, 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0x9686, 0x5229, 0x540F, + 0x5C65, 0x6613, 0x674E, 0x68A8, 0x6CE5, 0x7406, 0x75E2, 0x7F79, + 0x88CF, 0x88E1, 0x96E2, 0x533F, 0x6EBA, 0x541D, 0x71D0, 0x7498, + 0x85FA, 0x96A3, 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x81E8, 0x7B20, + 0x7C92, 0x72C0, 0x7099, 0x8B58, 0x4EC0, 0x8336, 0x523A, 0x5207, + 0x5EA6, 0x62D3, 0x7CD6, 0x5B85, 0x6D1E, 0x66B4, 0x8F3B, 0x964D, + 0x5ED3, 0x5140, 0x55C0, 0x585A, 0x6674, 0x51DE, 0x732A, 0x76CA, + 0x793C, 0x795E, 0x7965, 0x798F, 0x9756, 0x7CBE, 0x8612, 0x8AF8, + 0x9038, 0x90FD, 0x98EF, 0x98FC, 0x9928, 0x9DB4, 0x90DE, 0x96B7, + 0x4FAE, 0x50E7, 0x514D, 0x52C9, 0x52E4, 0x5351, 0x559D, 0x5606, + 0x5668, 0x5840, 0x58A8, 0x5C64, 0x6094, 0x6168, 0x618E, 0x61F2, + 0x654F, 0x65E2, 0x6691, 0x6885, 0x6D77, 0x6E1A, 0x6F22, 0x716E, + 0x722B, 0x7422, 0x7891, 0x7949, 0x7948, 0x7950, 0x7956, 0x798D, + 0x798E, 0x7A40, 0x7A81, 0x7BC0, 0x7E09, 0x7E41, 0x7F72, 0x8005, + 0x81ED, 0x8279, 0x8457, 0x8910, 0x8996, 0x8B01, 0x8B39, 0x8CD3, + 0x8D08, 0x8FB6, 0x96E3, 0x97FF, 0x983B, 0x6075, 0x242EE, 0x8218, + 0x4E26, 0x51B5, 0x5168, 0x4F80, 0x5145, 0x5180, 0x52C7, 0x52FA, + 0x5555, 0x5599, 0x55E2, 0x58B3, 0x5944, 0x5954, 0x5A62, 0x5B28, + 0x5ED2, 0x5ED9, 0x5F69, 0x5FAD, 0x60D8, 0x614E, 0x6108, 0x6160, + 0x6234, 0x63C4, 0x641C, 0x6452, 0x6556, 0x671B, 0x6756, 0x6EDB, + 0x6ECB, 0x701E, 0x77A7, 0x7235, 0x72AF, 0x7471, 0x7506, 0x753B, + 0x761D, 0x761F, 0x76DB, 0x76F4, 0x774A, 0x7740, 0x78CC, 0x7AB1, + 0x7C7B, 0x7D5B, 0x7F3E, 0x8352, 0x83EF, 0x8779, 0x8941, 0x8986, + 0x8ABF, 0x8ACB, 0x8AED, 0x8B8A, 0x8F38, 0x9072, 0x9199, 0x9276, + 0x967C, 0x97DB, 0x980B, 0x9B12, 0x2284A, 0x22844, 0x233D5, 0x3B9D, + 0x4018, 0x4039, 0x25249, 0x25CD0, 0x27ED3, 0x9F43, 0x9F8E, 0x0066, + 0x0066, 0x0066, 0x0069, 0x0066, 0x006C, 0x0066, 0x0066, 0x0069, + 0x0066, 0x0066, 0x006C, 0x0073, 0x0074, 0x0574, 0x0576, 0x0574, + 0x0565, 0x0574, 0x056B, 0x057E, 0x0576, 0x0574, 0x056D, 0x05D9, + 0x05B4, 0x05F2, 0x05B7, 0x05E2, 0x05D4, 0x05DB, 0x05DC, 0x05DD, + 0x05E8, 0x05EA, 0x05E9, 0x05C1, 0x05E9, 0x05C2, 0x05E9, 0x05BC, + 0x05C1, 0x05E9, 0x05BC, 0x05C2, 0x05D0, 0x05B7, 0x05D0, 0x05B8, + 0x05D0, 0x05BC, 0x05D1, 0x05BC, 0x05D2, 0x05BC, 0x05D3, 0x05BC, + 0x05D4, 0x05BC, 0x05D5, 0x05BC, 0x05D6, 0x05BC, 0x05D8, 0x05BC, + 0x05D9, 0x05BC, 0x05DA, 0x05BC, 0x05DB, 0x05BC, 0x05DC, 0x05BC, + 0x05DE, 0x05BC, 0x05E0, 0x05BC, 0x05E1, 0x05BC, 0x05E3, 0x05BC, + 0x05E4, 0x05BC, 0x05E6, 0x05BC, 0x05E7, 0x05BC, 0x05E8, 0x05BC, + 0x05EA, 0x05BC, 0x05D5, 0x05B9, 0x05D1, 0x05BF, 0x05DB, 0x05BF, + 0x05E4, 0x05BF, 0x05D0, 0x05DC, 0x0671, 0x067B, 0x067E, 0x0680, + 0x067A, 0x067F, 0x0679, 0x06A4, 0x06A6, 0x0684, 0x0683, 0x0686, + 0x0687, 0x068D, 0x068C, 0x068E, 0x0688, 0x0698, 0x0691, 0x06A9, + 0x06AF, 0x06B3, 0x06B1, 0x06BA, 0x06BB, 0x06C0, 0x06C1, 0x06BE, + 0x06D2, 0x06D3, 0x06AD, 0x06C6, 0x06C8, 0x06CB, 0x06C5, 0x06C9, + 0x06D0, 0x0649, 0x0626, 0x0627, 0x0626, 0x06D5, 0x0626, 0x0648, + 0x0626, 0x06C7, 0x0626, 0x06C6, 0x0626, 0x06C8, 0x0626, 0x06D0, + 0x0626, 0x0649, 0x06CC, 0x0626, 0x062C, 0x0626, 0x062D, 0x0626, + 0x0645, 0x0626, 0x064A, 0x0628, 0x062C, 0x0628, 0x062D, 0x0628, + 0x062E, 0x0628, 0x0645, 0x0628, 0x0649, 0x0628, 0x064A, 0x062A, + 0x062C, 0x062A, 0x062D, 0x062A, 0x062E, 0x062A, 0x0645, 0x062A, + 0x0649, 0x062A, 0x064A, 0x062B, 0x062C, 0x062B, 0x0645, 0x062B, + 0x0649, 0x062B, 0x064A, 0x062C, 0x062D, 0x062C, 0x0645, 0x062D, + 0x062C, 0x062D, 0x0645, 0x062E, 0x062C, 0x062E, 0x062D, 0x062E, + 0x0645, 0x0633, 0x062C, 0x0633, 0x062D, 0x0633, 0x062E, 0x0633, + 0x0645, 0x0635, 0x062D, 0x0635, 0x0645, 0x0636, 0x062C, 0x0636, + 0x062D, 0x0636, 0x062E, 0x0636, 0x0645, 0x0637, 0x062D, 0x0637, + 0x0645, 0x0638, 0x0645, 0x0639, 0x062C, 0x0639, 0x0645, 0x063A, + 0x062C, 0x063A, 0x0645, 0x0641, 0x062C, 0x0641, 0x062D, 0x0641, + 0x062E, 0x0641, 0x0645, 0x0641, 0x0649, 0x0641, 0x064A, 0x0642, + 0x062D, 0x0642, 0x0645, 0x0642, 0x0649, 0x0642, 0x064A, 0x0643, + 0x0627, 0x0643, 0x062C, 0x0643, 0x062D, 0x0643, 0x062E, 0x0643, + 0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643, 0x064A, 0x0644, + 0x062C, 0x0644, 0x062D, 0x0644, 0x062E, 0x0644, 0x0645, 0x0644, + 0x0649, 0x0644, 0x064A, 0x0645, 0x062C, 0x0645, 0x062D, 0x0645, + 0x062E, 0x0645, 0x0645, 0x0645, 0x0649, 0x0645, 0x064A, 0x0646, + 0x062C, 0x0646, 0x062D, 0x0646, 0x062E, 0x0646, 0x0645, 0x0646, + 0x0649, 0x0646, 0x064A, 0x0647, 0x062C, 0x0647, 0x0645, 0x0647, + 0x0649, 0x0647, 0x064A, 0x064A, 0x062C, 0x064A, 0x062D, 0x064A, + 0x062E, 0x064A, 0x0645, 0x064A, 0x0649, 0x064A, 0x064A, 0x0630, + 0x0670, 0x0631, 0x0670, 0x0649, 0x0670, 0x0020, 0x064C, 0x0651, + 0x0020, 0x064D, 0x0651, 0x0020, 0x064E, 0x0651, 0x0020, 0x064F, + 0x0651, 0x0020, 0x0650, 0x0651, 0x0020, 0x0651, 0x0670, 0x0626, + 0x0631, 0x0626, 0x0632, 0x0626, 0x0646, 0x0628, 0x0631, 0x0628, + 0x0632, 0x0628, 0x0646, 0x062A, 0x0631, 0x062A, 0x0632, 0x062A, + 0x0646, 0x062B, 0x0631, 0x062B, 0x0632, 0x062B, 0x0646, 0x0645, + 0x0627, 0x0646, 0x0631, 0x0646, 0x0632, 0x0646, 0x0646, 0x064A, + 0x0631, 0x064A, 0x0632, 0x064A, 0x0646, 0x0626, 0x062E, 0x0626, + 0x0647, 0x0628, 0x0647, 0x062A, 0x0647, 0x0635, 0x062E, 0x0644, + 0x0647, 0x0646, 0x0647, 0x0647, 0x0670, 0x064A, 0x0647, 0x062B, + 0x0647, 0x0633, 0x0647, 0x0634, 0x0645, 0x0634, 0x0647, 0x0640, + 0x064E, 0x0651, 0x0640, 0x064F, 0x0651, 0x0640, 0x0650, 0x0651, + 0x0637, 0x0649, 0x0637, 0x064A, 0x0639, 0x0649, 0x0639, 0x064A, + 0x063A, 0x0649, 0x063A, 0x064A, 0x0633, 0x0649, 0x0633, 0x064A, + 0x0634, 0x0649, 0x0634, 0x064A, 0x062D, 0x0649, 0x062D, 0x064A, + 0x062C, 0x0649, 0x062C, 0x064A, 0x062E, 0x0649, 0x062E, 0x064A, + 0x0635, 0x0649, 0x0635, 0x064A, 0x0636, 0x0649, 0x0636, 0x064A, + 0x0634, 0x062C, 0x0634, 0x062D, 0x0634, 0x062E, 0x0634, 0x0631, + 0x0633, 0x0631, 0x0635, 0x0631, 0x0636, 0x0631, 0x0627, 0x064B, + 0x062A, 0x062C, 0x0645, 0x062A, 0x062D, 0x062C, 0x062A, 0x062D, + 0x0645, 0x062A, 0x062E, 0x0645, 0x062A, 0x0645, 0x062C, 0x062A, + 0x0645, 0x062D, 0x062A, 0x0645, 0x062E, 0x062C, 0x0645, 0x062D, + 0x062D, 0x0645, 0x064A, 0x062D, 0x0645, 0x0649, 0x0633, 0x062D, + 0x062C, 0x0633, 0x062C, 0x062D, 0x0633, 0x062C, 0x0649, 0x0633, + 0x0645, 0x062D, 0x0633, 0x0645, 0x062C, 0x0633, 0x0645, 0x0645, + 0x0635, 0x062D, 0x062D, 0x0635, 0x0645, 0x0645, 0x0634, 0x062D, + 0x0645, 0x0634, 0x062C, 0x064A, 0x0634, 0x0645, 0x062E, 0x0634, + 0x0645, 0x0645, 0x0636, 0x062D, 0x0649, 0x0636, 0x062E, 0x0645, + 0x0637, 0x0645, 0x062D, 0x0637, 0x0645, 0x0645, 0x0637, 0x0645, + 0x064A, 0x0639, 0x062C, 0x0645, 0x0639, 0x0645, 0x0645, 0x0639, + 0x0645, 0x0649, 0x063A, 0x0645, 0x0645, 0x063A, 0x0645, 0x064A, + 0x063A, 0x0645, 0x0649, 0x0641, 0x062E, 0x0645, 0x0642, 0x0645, + 0x062D, 0x0642, 0x0645, 0x0645, 0x0644, 0x062D, 0x0645, 0x0644, + 0x062D, 0x064A, 0x0644, 0x062D, 0x0649, 0x0644, 0x062C, 0x062C, + 0x0644, 0x062E, 0x0645, 0x0644, 0x0645, 0x062D, 0x0645, 0x062D, + 0x062C, 0x0645, 0x062D, 0x0645, 0x0645, 0x062D, 0x064A, 0x0645, + 0x062C, 0x062D, 0x0645, 0x062C, 0x0645, 0x0645, 0x062E, 0x062C, + 0x0645, 0x062E, 0x0645, 0x0645, 0x062C, 0x062E, 0x0647, 0x0645, + 0x062C, 0x0647, 0x0645, 0x0645, 0x0646, 0x062D, 0x0645, 0x0646, + 0x062D, 0x0649, 0x0646, 0x062C, 0x0645, 0x0646, 0x062C, 0x0649, + 0x0646, 0x0645, 0x064A, 0x0646, 0x0645, 0x0649, 0x064A, 0x0645, + 0x0645, 0x0628, 0x062E, 0x064A, 0x062A, 0x062C, 0x064A, 0x062A, + 0x062C, 0x0649, 0x062A, 0x062E, 0x064A, 0x062A, 0x062E, 0x0649, + 0x062A, 0x0645, 0x064A, 0x062A, 0x0645, 0x0649, 0x062C, 0x0645, + 0x064A, 0x062C, 0x062D, 0x0649, 0x062C, 0x0645, 0x0649, 0x0633, + 0x062E, 0x0649, 0x0635, 0x062D, 0x064A, 0x0634, 0x062D, 0x064A, + 0x0636, 0x062D, 0x064A, 0x0644, 0x062C, 0x064A, 0x0644, 0x0645, + 0x064A, 0x064A, 0x062D, 0x064A, 0x064A, 0x062C, 0x064A, 0x064A, + 0x0645, 0x064A, 0x0645, 0x0645, 0x064A, 0x0642, 0x0645, 0x064A, + 0x0646, 0x062D, 0x064A, 0x0639, 0x0645, 0x064A, 0x0643, 0x0645, + 0x064A, 0x0646, 0x062C, 0x062D, 0x0645, 0x062E, 0x064A, 0x0644, + 0x062C, 0x0645, 0x0643, 0x0645, 0x0645, 0x062C, 0x062D, 0x064A, + 0x062D, 0x062C, 0x064A, 0x0645, 0x062C, 0x064A, 0x0641, 0x0645, + 0x064A, 0x0628, 0x062D, 0x064A, 0x0633, 0x062E, 0x064A, 0x0646, + 0x062C, 0x064A, 0x0635, 0x0644, 0x06D2, 0x0642, 0x0644, 0x06D2, + 0x0627, 0x0644, 0x0644, 0x0647, 0x0627, 0x0643, 0x0628, 0x0631, + 0x0645, 0x062D, 0x0645, 0x062F, 0x0635, 0x0644, 0x0639, 0x0645, + 0x0631, 0x0633, 0x0648, 0x0644, 0x0639, 0x0644, 0x064A, 0x0647, + 0x0648, 0x0633, 0x0644, 0x0645, 0x0635, 0x0644, 0x0649, 0x0635, + 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, + 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, + 0x0645, 0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, + 0x0647, 0x0631, 0x06CC, 0x0627, 0x0644, 0x002C, 0x3001, 0x3016, + 0x3017, 0x2014, 0x2013, 0x005F, 0x007B, 0x007D, 0x3014, 0x3015, + 0x3010, 0x3011, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, + 0x005B, 0x005D, 0x0023, 0x0026, 0x002A, 0x002D, 0x003C, 0x003E, + 0x005C, 0x0024, 0x0025, 0x0040, 0x0020, 0x064B, 0x0640, 0x064B, + 0x0640, 0x0651, 0x0020, 0x0652, 0x0640, 0x0652, 0x0621, 0x0622, + 0x0623, 0x0624, 0x0625, 0x0629, 0x062F, 0x0632, 0x0644, 0x0622, + 0x0644, 0x0623, 0x0644, 0x0625, 0x0644, 0x0627, 0x0022, 0x0027, + 0x002F, 0x005E, 0x007C, 0x007E, 0x2985, 0x2986, 0x30FB, 0x30A1, + 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, + 0x30FC, 0x30F3, 0x3099, 0x309A, 0x00A2, 0x00A3, 0x00AC, 0x00A6, + 0x00A5, 0x20A9, 0x2502, 0x2190, 0x2191, 0x2192, 0x2193, 0x25A0, + 0x25CB, 0x10428, 0x10429, 0x1042A, 0x1042B, 0x1042C, 0x1042D, 0x1042E, + 0x1042F, 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, + 0x10437, 0x10438, 0x10439, 0x1043A, 0x1043B, 0x1043C, 0x1043D, 0x1043E, + 0x1043F, 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, + 0x10447, 0x10448, 0x10449, 0x1044A, 0x1044B, 0x1044C, 0x1044D, 0x1044E, + 0x1044F, 0x104D8, 0x104D9, 0x104DA, 0x104DB, 0x104DC, 0x104DD, 0x104DE, + 0x104DF, 0x104E0, 0x104E1, 0x104E2, 0x104E3, 0x104E4, 0x104E5, 0x104E6, + 0x104E7, 0x104E8, 0x104E9, 0x104EA, 0x104EB, 0x104EC, 0x104ED, 0x104EE, + 0x104EF, 0x104F0, 0x104F1, 0x104F2, 0x104F3, 0x104F4, 0x104F5, 0x104F6, + 0x104F7, 0x104F8, 0x104F9, 0x104FA, 0x104FB, 0x10597, 0x10598, 0x10599, + 0x1059A, 0x1059B, 0x1059C, 0x1059D, 0x1059E, 0x1059F, 0x105A0, 0x105A1, + 0x105A3, 0x105A4, 0x105A5, 0x105A6, 0x105A7, 0x105A8, 0x105A9, 0x105AA, + 0x105AB, 0x105AC, 0x105AD, 0x105AE, 0x105AF, 0x105B0, 0x105B1, 0x105B3, + 0x105B4, 0x105B5, 0x105B6, 0x105B7, 0x105B8, 0x105B9, 0x105BB, 0x105BC, + 0x02D0, 0x02D1, 0x0299, 0x02A3, 0xAB66, 0x02A5, 0x02A4, 0x1D91, + 0x0258, 0x025E, 0x02A9, 0x0262, 0x029B, 0x029C, 0x0267, 0x0284, + 0x02AA, 0x02AB, 0x1DF04, 0xA78E, 0x026E, 0x1DF05, 0x028E, 0x1DF06, + 0x0276, 0x0277, 0x027A, 0x1DF08, 0x027E, 0x02A8, 0x02A6, 0xAB67, + 0x02A7, 0x2C71, 0x028F, 0x02A1, 0x02A2, 0x0298, 0x01C0, 0x01C1, + 0x01C2, 0x1DF0A, 0x1DF1E, 0x10CC0, 0x10CC1, 0x10CC2, 0x10CC3, 0x10CC4, + 0x10CC5, 0x10CC6, 0x10CC7, 0x10CC8, 0x10CC9, 0x10CCA, 0x10CCB, 0x10CCC, + 0x10CCD, 0x10CCE, 0x10CCF, 0x10CD0, 0x10CD1, 0x10CD2, 0x10CD3, 0x10CD4, + 0x10CD5, 0x10CD6, 0x10CD7, 0x10CD8, 0x10CD9, 0x10CDA, 0x10CDB, 0x10CDC, + 0x10CDD, 0x10CDE, 0x10CDF, 0x10CE0, 0x10CE1, 0x10CE2, 0x10CE3, 0x10CE4, + 0x10CE5, 0x10CE6, 0x10CE7, 0x10CE8, 0x10CE9, 0x10CEA, 0x10CEB, 0x10CEC, + 0x10CED, 0x10CEE, 0x10CEF, 0x10CF0, 0x10CF1, 0x10CF2, 0x10D70, 0x10D71, + 0x10D72, 0x10D73, 0x10D74, 0x10D75, 0x10D76, 0x10D77, 0x10D78, 0x10D79, + 0x10D7A, 0x10D7B, 0x10D7C, 0x10D7D, 0x10D7E, 0x10D7F, 0x10D80, 0x10D81, + 0x10D82, 0x10D83, 0x10D84, 0x10D85, 0x118C0, 0x118C1, 0x118C2, 0x118C3, + 0x118C4, 0x118C5, 0x118C6, 0x118C7, 0x118C8, 0x118C9, 0x118CA, 0x118CB, + 0x118CC, 0x118CD, 0x118CE, 0x118CF, 0x118D0, 0x118D1, 0x118D2, 0x118D3, + 0x118D4, 0x118D5, 0x118D6, 0x118D7, 0x118D8, 0x118D9, 0x118DA, 0x118DB, + 0x118DC, 0x118DD, 0x118DE, 0x118DF, 0x16E60, 0x16E61, 0x16E62, 0x16E63, + 0x16E64, 0x16E65, 0x16E66, 0x16E67, 0x16E68, 0x16E69, 0x16E6A, 0x16E6B, + 0x16E6C, 0x16E6D, 0x16E6E, 0x16E6F, 0x16E70, 0x16E71, 0x16E72, 0x16E73, + 0x16E74, 0x16E75, 0x16E76, 0x16E77, 0x16E78, 0x16E79, 0x16E7A, 0x16E7B, + 0x16E7C, 0x16E7D, 0x16E7E, 0x16E7F, 0x16EBB, 0x16EBC, 0x16EBD, 0x16EBE, + 0x16EBF, 0x16EC0, 0x16EC1, 0x16EC2, 0x16EC3, 0x16EC4, 0x16EC5, 0x16EC6, + 0x16EC7, 0x16EC8, 0x16EC9, 0x16ECA, 0x16ECB, 0x16ECC, 0x16ECD, 0x16ECE, + 0x16ECF, 0x16ED0, 0x16ED1, 0x16ED2, 0x16ED3, 0x1D157, 0x1D165, 0x1D158, + 0x1D165, 0x1D158, 0x1D165, 0x1D16E, 0x1D158, 0x1D165, 0x1D16F, 0x1D158, + 0x1D165, 0x1D170, 0x1D158, 0x1D165, 0x1D171, 0x1D158, 0x1D165, 0x1D172, + 0x1D1B9, 0x1D165, 0x1D1BA, 0x1D165, 0x1D1B9, 0x1D165, 0x1D16E, 0x1D1BA, + 0x1D165, 0x1D16E, 0x1D1B9, 0x1D165, 0x1D16F, 0x1D1BA, 0x1D165, 0x1D16F, + 0x0131, 0x0237, 0x2207, 0x2202, 0x1E922, 0x1E923, 0x1E924, 0x1E925, + 0x1E926, 0x1E927, 0x1E928, 0x1E929, 0x1E92A, 0x1E92B, 0x1E92C, 0x1E92D, + 0x1E92E, 0x1E92F, 0x1E930, 0x1E931, 0x1E932, 0x1E933, 0x1E934, 0x1E935, + 0x1E936, 0x1E937, 0x1E938, 0x1E939, 0x1E93A, 0x1E93B, 0x1E93C, 0x1E93D, + 0x1E93E, 0x1E93F, 0x1E940, 0x1E941, 0x1E942, 0x1E943, 0x066E, 0x06A1, + 0x066F, 0x0030, 0x002C, 0x0031, 0x002C, 0x0032, 0x002C, 0x0033, + 0x002C, 0x0034, 0x002C, 0x0035, 0x002C, 0x0036, 0x002C, 0x0037, + 0x002C, 0x0038, 0x002C, 0x0039, 0x002C, 0x3014, 0x0073, 0x3015, + 0x0077, 0x007A, 0x0068, 0x0076, 0x0073, 0x0064, 0x0070, 0x0070, + 0x0076, 0x0077, 0x0063, 0x006D, 0x0063, 0x006D, 0x0064, 0x006D, + 0x0072, 0x0064, 0x006A, 0x307B, 0x304B, 0x30B3, 0x30B3, 0x5B57, + 0x53CC, 0x591A, 0x89E3, 0x4EA4, 0x6620, 0x7121, 0x524D, 0x5F8C, + 0x518D, 0x65B0, 0x521D, 0x7D42, 0x8CA9, 0x58F0, 0x5439, 0x6F14, + 0x6295, 0x6355, 0x904A, 0x6307, 0x6253, 0x7981, 0x7A7A, 0x5408, + 0x6E80, 0x7533, 0x5272, 0x55B6, 0x914D, 0x3014, 0x672C, 0x3015, + 0x3014, 0x4E09, 0x3015, 0x3014, 0x4E8C, 0x3015, 0x3014, 0x5B89, + 0x3015, 0x3014, 0x70B9, 0x3015, 0x3014, 0x6253, 0x3015, 0x3014, + 0x76D7, 0x3015, 0x3014, 0x52DD, 0x3015, 0x3014, 0x6557, 0x3015, + 0x5F97, 0x53EF, 0x4E3D, 0x4E38, 0x4E41, 0x20122, 0x4F60, 0x4FBB, + 0x5002, 0x507A, 0x5099, 0x50CF, 0x349E, 0x2063A, 0x5154, 0x5164, + 0x5177, 0x2051C, 0x34B9, 0x5167, 0x2054B, 0x5197, 0x51A4, 0x4ECC, + 0x51AC, 0x291DF, 0x5203, 0x34DF, 0x523B, 0x5246, 0x5277, 0x3515, + 0x5305, 0x5306, 0x5349, 0x535A, 0x5373, 0x537D, 0x537F, 0x20A2C, + 0x7070, 0x53CA, 0x53DF, 0x20B63, 0x53EB, 0x53F1, 0x5406, 0x549E, + 0x5438, 0x5448, 0x5468, 0x54A2, 0x54F6, 0x5510, 0x5553, 0x5563, + 0x5584, 0x55AB, 0x55B3, 0x55C2, 0x5716, 0x5717, 0x5651, 0x5674, + 0x58EE, 0x57CE, 0x57F4, 0x580D, 0x578B, 0x5832, 0x5831, 0x58AC, + 0x214E4, 0x58F2, 0x58F7, 0x5906, 0x5922, 0x5962, 0x216A8, 0x216EA, + 0x59EC, 0x5A1B, 0x5A27, 0x59D8, 0x5A66, 0x36EE, 0x36FC, 0x5B08, + 0x5B3E, 0x219C8, 0x5BC3, 0x5BD8, 0x5BF3, 0x21B18, 0x5BFF, 0x5C06, + 0x5F53, 0x3781, 0x5C60, 0x5CC0, 0x5C8D, 0x21DE4, 0x5D43, 0x21DE6, + 0x5D6E, 0x5D6B, 0x5D7C, 0x5DE1, 0x5DE2, 0x382F, 0x5DFD, 0x5E28, + 0x5E3D, 0x5E69, 0x3862, 0x22183, 0x387C, 0x5EB0, 0x5EB3, 0x5EB6, + 0x2A392, 0x22331, 0x8201, 0x5F22, 0x38C7, 0x232B8, 0x261DA, 0x5F62, + 0x5F6B, 0x38E3, 0x5F9A, 0x5FCD, 0x5FD7, 0x5FF9, 0x6081, 0x393A, + 0x391C, 0x226D4, 0x60C7, 0x6148, 0x614C, 0x617A, 0x61B2, 0x61A4, + 0x61AF, 0x61DE, 0x6210, 0x621B, 0x625D, 0x62B1, 0x62D4, 0x6350, + 0x22B0C, 0x633D, 0x62FC, 0x6368, 0x6383, 0x63E4, 0x22BF1, 0x6422, + 0x63C5, 0x63A9, 0x3A2E, 0x6469, 0x647E, 0x649D, 0x6477, 0x3A6C, + 0x656C, 0x2300A, 0x65E3, 0x66F8, 0x6649, 0x3B19, 0x3B08, 0x3AE4, + 0x5192, 0x5195, 0x6700, 0x669C, 0x80AD, 0x43D9, 0x6721, 0x675E, + 0x6753, 0x233C3, 0x3B49, 0x67FA, 0x6785, 0x6852, 0x2346D, 0x688E, + 0x681F, 0x6914, 0x6942, 0x69A3, 0x69EA, 0x6AA8, 0x236A3, 0x6ADB, + 0x3C18, 0x6B21, 0x238A7, 0x6B54, 0x3C4E, 0x6B72, 0x6B9F, 0x6BBB, + 0x23A8D, 0x21D0B, 0x23AFA, 0x6C4E, 0x23CBC, 0x6CBF, 0x6CCD, 0x6C67, + 0x6D16, 0x6D3E, 0x6D69, 0x6D78, 0x6D85, 0x23D1E, 0x6D34, 0x6E2F, + 0x6E6E, 0x3D33, 0x6EC7, 0x23ED1, 0x6DF9, 0x6F6E, 0x23F5E, 0x23F8E, + 0x6FC6, 0x7039, 0x701B, 0x3D96, 0x704A, 0x707D, 0x7077, 0x70AD, + 0x20525, 0x7145, 0x24263, 0x719C, 0x243AB, 0x7228, 0x7250, 0x24608, + 0x7280, 0x7295, 0x24735, 0x24814, 0x737A, 0x738B, 0x3EAC, 0x73A5, + 0x3EB8, 0x7447, 0x745C, 0x7485, 0x74CA, 0x3F1B, 0x7524, 0x24C36, + 0x753E, 0x24C92, 0x2219F, 0x7610, 0x24FA1, 0x24FB8, 0x25044, 0x3FFC, + 0x4008, 0x250F3, 0x250F2, 0x25119, 0x25133, 0x771E, 0x771F, 0x778B, + 0x4046, 0x4096, 0x2541D, 0x784E, 0x40E3, 0x25626, 0x2569A, 0x256C5, + 0x79EB, 0x412F, 0x7A4A, 0x7A4F, 0x2597C, 0x25AA7, 0x7AEE, 0x4202, + 0x25BAB, 0x7BC6, 0x7BC9, 0x4227, 0x25C80, 0x7CD2, 0x42A0, 0x7CE8, + 0x7CE3, 0x7D00, 0x25F86, 0x7D63, 0x4301, 0x7DC7, 0x7E02, 0x7E45, + 0x4334, 0x26228, 0x26247, 0x4359, 0x262D9, 0x7F7A, 0x2633E, 0x7F95, + 0x7FFA, 0x264DA, 0x26523, 0x8060, 0x265A8, 0x8070, 0x2335F, 0x43D5, + 0x80B2, 0x8103, 0x440B, 0x813E, 0x5AB5, 0x267A7, 0x267B5, 0x23393, + 0x2339C, 0x8204, 0x8F9E, 0x446B, 0x8291, 0x828B, 0x829D, 0x52B3, + 0x82B1, 0x82B3, 0x82BD, 0x82E6, 0x26B3C, 0x831D, 0x8363, 0x83AD, + 0x8323, 0x83BD, 0x83E7, 0x8353, 0x83CA, 0x83CC, 0x83DC, 0x26C36, + 0x26D6B, 0x26CD5, 0x452B, 0x84F1, 0x84F3, 0x8516, 0x273CA, 0x8564, + 0x26F2C, 0x455D, 0x4561, 0x26FB1, 0x270D2, 0x456B, 0x8650, 0x8667, + 0x8669, 0x86A9, 0x8688, 0x870E, 0x86E2, 0x8728, 0x876B, 0x8786, + 0x45D7, 0x87E1, 0x8801, 0x45F9, 0x8860, 0x27667, 0x88D7, 0x88DE, + 0x4635, 0x88FA, 0x34BB, 0x278AE, 0x27966, 0x46BE, 0x46C7, 0x8AA0, + 0x27CA8, 0x8CAB, 0x8CC1, 0x8D1B, 0x8D77, 0x27F2F, 0x20804, 0x8DCB, + 0x8DBC, 0x8DF0, 0x208DE, 0x8ED4, 0x285D2, 0x285ED, 0x9094, 0x90F1, + 0x9111, 0x2872E, 0x911B, 0x9238, 0x92D7, 0x92D8, 0x927C, 0x93F9, + 0x9415, 0x28BFA, 0x958B, 0x4995, 0x95B7, 0x28D77, 0x49E6, 0x96C3, + 0x5DB2, 0x9723, 0x29145, 0x2921A, 0x4A6E, 0x4A76, 0x97E0, 0x2940A, + 0x4AB2, 0x29496, 0x9829, 0x295B6, 0x98E2, 0x4B33, 0x9929, 0x99A7, + 0x99C2, 0x99FE, 0x4BCE, 0x29B30, 0x9C40, 0x9CFD, 0x4CCE, 0x4CED, + 0x9D67, 0x2A0CE, 0x4CF8, 0x2A105, 0x2A20E, 0x2A291, 0x4D56, 0x9EFE, + 0x9F05, 0x9F0F, 0x9F16, 0x2A600 }; -static const lxb_unicode_normalization_entry_t lxb_unicode_normalization_entries[5131] = +static const lxb_unicode_normalization_entry_t lxb_unicode_normalization_entries[5132] = { {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6059, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4619, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4574, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5504, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6391, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3225, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6023, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4812, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6355, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6738, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4882, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6542, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3056, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1518, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4874, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6001, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5175, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2433, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3178, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6853, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3137, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4659, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4836, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5004, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6827, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6785, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2441, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3184, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 949, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6472, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4585, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6347, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 10, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4782, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 644, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5474, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4617, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5001, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6751, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4700, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5834, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6861, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6122, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 663, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5660, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3082, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1351, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3058, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4100, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6482, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3517, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2863, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4606, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1637, 276}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6199, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6950, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5256, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6930, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4119, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3516, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2888, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2865, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2530, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 549, 104}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1947, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4711, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6549, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1703, 292}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1372, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2968, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1545, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1788, 307}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6842, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5495, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6192, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6770, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4307, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6537, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1527, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5001, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5759, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 443, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 431, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6339, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6860, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6914, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2387, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4685, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2355, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4380, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6516, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6186, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4796, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1785, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5363, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1554, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1457, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5316, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4745, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4736, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3619, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4792, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1298, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1710, 295}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5772, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5746, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1935, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5322, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4486, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4672, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4806, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1841, 314}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3056, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 667, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4752, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1878, 327}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6355, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4579, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6841, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2687, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3696, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6762, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6531, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2705, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1040, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5645, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 413, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5411, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6818, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 711, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 350, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6920, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1137, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2900, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 683, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4291, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1243, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5441, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6310, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6866, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6335, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2942, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1700, 291}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2843, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3566, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5023, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4702, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 76, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6050, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6473, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4520, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6190, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3904, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4759, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4338, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1400, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5107, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5977, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6917, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2820, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2469, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3403, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2871, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6897, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2940, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3062, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6175, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2888, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6031, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 611, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 631, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6792, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2632, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3619, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3098, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2565, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6029, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4480, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6807, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 316, 92}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 0, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6051, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6049, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6486, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6746, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6172, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4471, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 906, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6176, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3499, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6019, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3397, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2914, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6944, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5165, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5247, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4862, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 641, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2750, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6840, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6040, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2499, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1267, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6459, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6548, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 389, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2853, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6932, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2784, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2077, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3807, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3617, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6132, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6128, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2529, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6364, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1021, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2787, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2245, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3529, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6952, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2463, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5272, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 286, 85}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4508, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2855, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3096, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1574, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5022, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1370, 260}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2958, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 639, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1061, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6531, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6762, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1055, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6552, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6057, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5920, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 633, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6859, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6193, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6427, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5821, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3956, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3566, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4876, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4532, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5193, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6754, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4988, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6303, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6931, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5597, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2916, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1804, 309}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3469, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4814, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6951, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 527, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6824, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5803, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6772, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4534, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4768, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 637, 117}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4934, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5822, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5363, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 194, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3949, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3582, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 204, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6187, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2702, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3451, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2453, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6570, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6471, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3835, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6189, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 664, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6956, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5054, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4761, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5522, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5310, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2947, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4629, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 677, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4562, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 803, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2790, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5516, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6911, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1397, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6830, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6280, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4653, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3455, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5189, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1333, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3149, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3030, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3865, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 74, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6896, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6703, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2956, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4528, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 338, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4838, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6101, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6719, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4638, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3124, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3520, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3531, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5375, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 943, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4538, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6156, 457}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6640, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2254, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4506, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2364, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3131, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1850, 317}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1009, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 666, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3931, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5371, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4772, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3361, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 849, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3424, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5896, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1869, 324}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6568, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6440, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1159, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 857, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2574, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1627, 272}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2638, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4600, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4563, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4514, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 431, 101}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4307, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5414, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6953, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6633, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5280, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 807, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4416, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3169, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1571, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6085, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6921, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4854, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1194, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1151, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4342, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6083, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 723, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5125, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5298, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3625, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6148, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4733, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6904, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4153, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2833, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2309, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 202, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1448, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6701, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2220, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3126, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1861, 321}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 646, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1315, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1856, 319}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 871, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6870, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 679, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 695, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2921, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2201, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5201, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3442, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 416, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 668, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6826, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1656, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6572, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2233, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3153, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5197, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6183, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6079, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4359, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2761, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 966, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 554, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5510, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 889, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6792, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2669, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 340, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5685, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6024, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5137, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3028, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5029, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2400, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5851, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4602, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4804, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5908, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4687, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 499, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4841, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 18, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4631, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1069, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1225, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 769, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1887, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6022, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5141, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3385, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6322, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4830, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 485, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3074, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 469, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4137, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6897, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4766, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 739, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3688, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2849, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1610, 266}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5292, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 419, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5810, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5383, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1630, 273}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1847, 316}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1889, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5959, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4363, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3249, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2417, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2194, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4488, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2257, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5573, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3190, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2813, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4538, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4826, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2803, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4062, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 663, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6581, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2840, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6803, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1261, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1357, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4281, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5447, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1583, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5312, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2918, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6600, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2527, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2481, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 551, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3570, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 567, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2966, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2100, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 320, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6787, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4713, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3192, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4540, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4357, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3255, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2897, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 691, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3147, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6020, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 354, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6892, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 210, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2634, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4247, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2568, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1298, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6021, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2443, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3633, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5826, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3094, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6067, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6409, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5253, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2431, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5941, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3082, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5839, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2252, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1057, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2944, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6373, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5555, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5359, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4722, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1277, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6637, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4727, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1, 54}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5528, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6047, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4098, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6065, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5205, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 15, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1646, 279}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5837, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3074, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3451, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1521, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1820, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2007, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4607, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2473, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3068, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3613, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3617, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5197, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6033, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6199, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2092, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4388, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4548, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6601, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2886, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3072, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2509, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6466, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4104, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 969, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4780, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3080, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3141, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6107, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2696, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6582, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4392, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5799, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5308, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2859, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1672, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3603, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6727, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 853, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6470, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2951, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 314, 91}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5768, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4901, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2660, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6562, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4778, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1558, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5385, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 393, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6799, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4820, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6175, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1033, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3352, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6661, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3630, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4490, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3176, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2187, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6606, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5558, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 292, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1349, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4846, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 677, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1077, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4410, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 593, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2930, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 955, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6916, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5510, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5391, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6885, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3610, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6065, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 308, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6035, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5838, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6615, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4510, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 733, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4404, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3207, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4512, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3222, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3646, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2813, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4035, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4338, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2970, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2414, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2316, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2196, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3180, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4832, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6940, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1850, 317}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4855, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 644, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1361, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 982, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1406, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6876, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1146, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6565, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1188, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6315, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6546, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5363, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 483, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2260, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3433, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4591, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2333, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5093, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5438, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6055, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3078, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4613, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4877, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1066, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1223, 256}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1792, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4751, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4589, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3116, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5044, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2205, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 210, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 895, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 222, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 703, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4750, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1345, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2859, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4020, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2491, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2741, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6602, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5474, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2979, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2814, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5241, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 377, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6716, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 104, 73}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 391, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4317, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2535, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4683, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4481, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6804, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1355, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5237, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4734, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6466, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6583, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5669, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2102, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6702, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4038, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 58, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3206, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6895, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6910, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4600, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2309, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6026, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6311, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 4258, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4723, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5456, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 996, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6680, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2872, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6522, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1909, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4714, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 664, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6655, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2421, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6737, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 611, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3501, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 78, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2846, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5328, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5145, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 731, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6376, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 646, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4598, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2804, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6039, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6214, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6687, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 434, 102}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1045, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1347, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1643, 278}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4064, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3020, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5959, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 663, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 695, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1568, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2292, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4738, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5709, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3062, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2936, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3032, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6170, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2798, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1592, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 467, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6668, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6205, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2844, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4636, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4770, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4956, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6686, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5884, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5549, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2389, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4888, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5153, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1820, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2828, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5757, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3467, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3631, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6724, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6834, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 723, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4932, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 633, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5890, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 332, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6667, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4769, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 76, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4565, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1273, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 884, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3784, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6577, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5177, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1035, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2412, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 8, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6649, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6177, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3157, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2657, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5205, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2950, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 993, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 407, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 441, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2239, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2729, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1684, 285}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6692, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1898, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4544, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6918, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4500, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6820, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2939, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5085, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5187, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1433, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4652, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3869, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4728, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5197, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 288, 86}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4678, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3222, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4593, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6739, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5823, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1859, 320}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5004, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6034, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6032, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3481, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2373, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6487, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4566, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 134, 79}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3164, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 312, 90}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4850, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 947, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4271, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4984, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3262, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2225, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6666, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1047, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6358, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2894, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1263, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 64, 64}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4328, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5612, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6314, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5247, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1608, 265}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3732, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4472, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5091, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6517, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 385, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4527, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2483, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1589, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5426, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3098, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 622, 129}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2571, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1020, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6685, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2908, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1646, 279}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5355, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5573, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4764, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4496, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6924, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2361, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4667, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4646, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5839, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6553, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3170, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2562, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1883, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6511, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4739, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2936, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6617, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 829, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6654, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2924, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3046, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6481, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2391, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6196, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3058, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6277, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1001, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4785, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5742, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6305, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 381, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4578, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 100, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1847, 316}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6752, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5347, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4644, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4762, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3544, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5351, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4396, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5762, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1271, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5642, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 637, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 202, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6828, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6913, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 226, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5067, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5796, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6738, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 887, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4446, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4293, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2960, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5396, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5131, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1618, 269}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2926, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 987, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3907, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6657, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2880, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4554, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 843, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5175, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2033, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1806, 310}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6878, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2906, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2773, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5011, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2260, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6145, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4790, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5359, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6533, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2021, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1757, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2370, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4525, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1856, 319}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5343, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2815, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5759, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3142, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3720, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5355, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4640, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4514, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6717, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4788, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6178, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1029, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4812, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5077, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1127, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5387, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4407, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 679, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5097, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4542, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3194, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2533, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5359, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4619, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 924, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3112, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4847, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3151, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6821, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4368, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3516, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4654, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6801, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6981, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6847, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4582, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 190, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2501, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4863, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6244, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3403, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4354, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5456, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5015, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4572, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4556, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2313, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4621, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4870, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3613, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 577, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2887, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5047, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6109, 445}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3621, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1119, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5044, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6062, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4570, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 867, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6561, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6217, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6028, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4086, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4484, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1317, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6879, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5832, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5002, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1615, 268}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4664, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2497, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6967, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2844, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1341, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3054, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2825, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5489, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 545, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1790, 308}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4537, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1577, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2938, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 142, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2867, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3987, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 447, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2640, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1766, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2011, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4846, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5830, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1509, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5579, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5630, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2487, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4498, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4239, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5841, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2596, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5213, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 611, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4694, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4913, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2205, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 985, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2796, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2037, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5872, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 8, 5730, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2384, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 585, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4582, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2968, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3132, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5101, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4632, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3098, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1875, 326}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6968, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 825, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2690, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3364, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3518, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3421, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2915, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2754, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6575, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4920, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2666, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2848, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3189, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 82, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5385, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1630, 273}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3246, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5237, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2878, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5373, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5233, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5474, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 0, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4839, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 972, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2988, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 570, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5369, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6722, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1725, 300}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3659, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6436, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1494, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2945, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 880, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5528, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5385, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6835, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6564, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2636, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3554, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6588, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6790, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 947, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5339, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5756, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 264, 84}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6911, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6177, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 268, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 938, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4859, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 554, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6895, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 549, 104}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3804, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6535, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2672, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1697, 290}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5241, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6331, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 292, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1079, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4646, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3536, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6639, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5282, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3512, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4508, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1086, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3170, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4315, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2412, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4761, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4005, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6736, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6461, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4311, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 154, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6406, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3684, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3172, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 986, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2943, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4363, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2161, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3459, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2910, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5462, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4978, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5278, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4718, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4970, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 10, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1223, 256}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 306, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6561, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5705, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 535, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6708, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4903, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6577, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 687, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5021, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4833, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 507, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6560, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2864, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 633, 116}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6703, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2306, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6028, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6816, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3072, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3894, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6835, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 373, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 434, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3848, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 385, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 416, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3064, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 54, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6906, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2939, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 725, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 705, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3058, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6923, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3068, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1792, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4573, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1368, 259}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6696, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3376, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4875, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6653, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4805, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4617, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6936, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4877, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5163, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5147, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4546, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3524, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5029, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5848, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2630, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6053, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5824, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 904, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5079, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5911, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3409, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4842, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4595, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5756, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1921, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 989, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 809, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4527, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1081, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6176, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2937, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 489, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 493, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 473, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4398, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6472, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6283, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6828, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6303, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2907, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3726, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6187, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4738, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6193, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2003, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5809, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4498, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2192, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2723, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1844, 315}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 639, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1574, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 110, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1141, 254}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 114, 75}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1183, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5863, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4856, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5797, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1889, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2342, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6443, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 375, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4829, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1488, 264}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 865, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3194, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4720, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1315, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4134, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1255, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1634, 275}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6382, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 751, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6535, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4855, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 644, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3633, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3074, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 208, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2834, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 220, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4474, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 62, 63}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2857, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2826, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2141, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4884, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 306, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6969, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6524, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3070, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2608, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6877, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1275, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4332, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 803, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5438, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 589, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4858, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 104, 73}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3174, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5504, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4401, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3920, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5093, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6673, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4321, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1583, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3623, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4509, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5306, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6487, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5389, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 666, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4175, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5555, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2766, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5435, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5153, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6455, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5769, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 644, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2862, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2738, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4291, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 32, 56}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6303, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6871, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2630, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6595, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5820, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2860, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2562, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3161, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2335, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2493, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1985, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2205, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6718, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2842, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 578, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5195, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6854, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5890, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1482, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4443, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4798, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5836, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3072, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2262, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6567, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1053, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6046, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6317, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6611, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3605, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3204, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4315, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3211, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4754, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1961, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5420, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3114, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2890, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6721, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5003, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 92, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1939, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3249, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2816, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6596, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3160, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2104, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4676, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4810, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6005, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6461, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3491, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3216, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5047, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2559, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5932, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3090, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4880, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 813, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3082, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4878, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 196, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4044, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2684, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4588, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4848, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5044, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1503, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4568, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3082, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4732, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2513, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6800, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2041, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3074, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2884, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2207, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 322, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5306, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4127, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3925, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6701, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6316, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4856, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4461, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5636, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2964, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4419, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4303, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6671, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4434, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6689, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4332, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4704, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6874, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1548, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4413, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1706, 293}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4905, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2511, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6253, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2634, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3540, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5814, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5237, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6015, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6542, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4386, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3188, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2920, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5742, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 395, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5483, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1722, 299}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3068, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2159, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4576, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5351, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2254, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4787, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5744, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6574, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4964, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1492, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 280, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6636, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NOBREAK, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 0, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6890, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3141, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6589, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3174, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6970, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4140, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 342, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5211, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 352, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6195, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6480, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6573, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4055, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6037, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2471, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3854, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5023, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3034, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3066, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5239, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1895, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1958, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4148, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2800, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1580, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4716, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5256, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4818, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1319, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4867, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5032, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 755, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5854, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6647, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3072, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2974, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6942, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6064, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6878, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5835, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1515, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 216, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6661, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5085, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 981, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1403, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1359, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6307, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6954, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 238, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4638, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6885, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4921, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1265, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6916, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3491, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3141, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2770, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4870, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4879, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4631, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4946, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6901, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5038, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6617, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5065, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6019, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4960, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4788, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 751, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3532, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2373, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 583, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3020, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4677, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2511, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2219, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4750, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5149, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 98, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4786, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 399, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6265, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3022, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2228, 334}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1206, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 831, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6698, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4886, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4759, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2505, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5597, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5003, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2996, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2977, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1554, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4672, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1955, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3038, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 422, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3590, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 434, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6892, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3642, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3012, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2877, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6646, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5827, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3628, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5860, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4277, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5035, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6021, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5183, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5609, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1506, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6720, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4831, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3126, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5123, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 124, 78}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3890, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6633, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4504, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6174, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 851, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3090, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2954, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6599, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6455, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2886, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2298, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4650, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3152, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5195, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2941, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6802, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6502, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5077, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4705, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3100, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3572, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3570, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6238, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4704, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5393, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1243, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2827, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2531, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4552, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 481, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5235, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6786, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5002, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6484, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5207, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5926, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3931, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 616, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6774, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 839, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6006, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 835, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4737, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 668, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2791, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5989, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2161, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 445, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4773, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6526, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6768, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2929, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 517, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1438, 262}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4735, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 244, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5474, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5375, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6172, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1111, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4486, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5579, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2784, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6629, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3128, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6935, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6970, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6889, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 162, 81}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 140, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3137, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4602, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6164, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4194, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 36, 59}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6842, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1735, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1670, 284}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3974, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2849, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2045, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 176, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 128, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 126, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3213, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2895, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6722, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3982, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4853, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2961, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4660, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2937, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5810, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4799, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3090, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4437, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4739, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6583, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3352, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4565, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 641, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6684, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5420, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6927, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5256, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1157, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5947, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1019, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 987, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3092, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4749, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 974, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 833, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4726, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5522, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4102, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 286, 85}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6189, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 859, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3524, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4669, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6478, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3145, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5585, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1105, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2352, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3515, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6754, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2475, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4001, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3526, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5591, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6122, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5131, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6465, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4241, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 332, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5549, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3034, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4548, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4721, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1571, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 42, 60}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 799, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 921, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2255, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6621, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2018, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 787, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3536, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2788, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5217, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2312, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 473, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5149, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3433, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4894, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1719, 298}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6979, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6880, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1678, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5111, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 644, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3102, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 855, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5107, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2092, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2156, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5369, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4926, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5169, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1388, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6178, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3539, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 951, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4550, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5125, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4686, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6770, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2127, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 637, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5389, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3080, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5841, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5054, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6749, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5666, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1124, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6097, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3427, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 557, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6741, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5221, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3463, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5125, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1258, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3449, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4986, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4655, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5389, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3631, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4664, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2529, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 851, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4769, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1863, 322}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2507, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1317, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 50, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4845, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2782, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5468, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 62, 63}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3637, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 985, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1732, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3098, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2780, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6858, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2914, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4835, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5603, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5051, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6663, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6367, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3562, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4374, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 981, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5516, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 66, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3586, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6682, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 56, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6882, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4816, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6520, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6839, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4654, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4569, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6938, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4916, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2423, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2845, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5878, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2628, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 154, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4581, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6619, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4940, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4531, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3137, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6745, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5157, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 296, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6922, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3844, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 96, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3112, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3379, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5752, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 282, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3471, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2970, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 212, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3415, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5161, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2455, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1427, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4936, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4563, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6652, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1091, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3945, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1917, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1772, 305}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4834, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1486, 263}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5097, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6831, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 328, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6298, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6041, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5225, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4167, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6013, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2852, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1530, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4857, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1688, 287}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6923, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6962, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5953, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2830, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6653, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6043, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6470, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6926, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2592, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3190, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 711, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2786, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1049, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3538, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 94, 72}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5026, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5842, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 178, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 401, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2568, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2523, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5465, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2527, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6599, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1741, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4464, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6668, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4803, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 687, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4866, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1006, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5612, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 541, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6235, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6957, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4621, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4714, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6713, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3987, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5355, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2584, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3439, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5111, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6836, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4593, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5183, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5359, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6451, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4741, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1442, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1480, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1895, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5169, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2118, 333}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2789, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4840, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 845, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6478, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6755, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6194, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4827, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5926, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 591, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3394, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1265, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5071, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 827, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1019, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6424, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3128, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3776, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4597, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6946, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4478, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4344, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6637, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5764, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 120, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4506, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3086, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3214, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 348, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6521, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3621, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6972, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 717, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2423, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 745, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4583, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3597, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1596, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2852, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2844, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3409, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1750, 303}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 2, 599, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2953, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6188, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6748, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2850, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3969, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5627, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 955, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6511, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1730, 302}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6352, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2876, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5810, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3678, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2915, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3044, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5085, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4974, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2986, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4837, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3799, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6259, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3052, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6466, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5247, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6479, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5462, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6519, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1023, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6581, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 168, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6686, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 751, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6223, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4575, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 985, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3382, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6714, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3838, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4784, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4275, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5678, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5093, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4907, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 463, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6320, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2041, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3937, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4691, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 18, 5712, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 511, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3544, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3153, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5642, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6840, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3514, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5016, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4652, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5211, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3945, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3757, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3885, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5004, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2102, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3574, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2887, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5211, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5003, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1333, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6929, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2815, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4110, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4707, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3578, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6192, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5151, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4532, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3535, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1612, 267}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4567, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4029, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 410, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4754, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4678, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2774, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3018, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6692, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3533, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3094, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3718, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2905, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6174, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 258, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5510, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3929, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5441, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1225, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 932, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2854, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6059, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6424, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5869, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2935, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4496, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4809, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3110, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6756, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1343, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6226, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6773, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2505, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6415, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 570, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6949, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6373, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2818, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6613, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 926, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4401, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4674, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1713, 296}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5766, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4340, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5343, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1556, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5414, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6349, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5785, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1275, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4510, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 428, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4765, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3212, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3147, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6848, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5615, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 56, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3060, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1925, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4468, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4461, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2400, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2355, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1440, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5621, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3615, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2071, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5241, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6505, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1472, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4394, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5462, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1446, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2841, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3048, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4525, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2321, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4942, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 208, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5896, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2831, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5047, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6107, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6723, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4768, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6312, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NOBREAK, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 0, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 10, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6866, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2923, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6194, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4629, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3953, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4687, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6606, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3540, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5278, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5953, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5175, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3542, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4547, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4689, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6959, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 648, 128}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4057, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3282, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2801, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2333, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5833, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3582, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6948, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4709, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6044, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3074, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 928, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4922, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4636, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6630, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4742, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3487, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4668, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5060, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6601, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5035, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3523, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6190, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4958, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5005, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5582, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5219, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6666, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6860, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2772, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4752, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5159, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6345, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2328, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6890, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6151, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2675, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5510, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6812, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6650, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5320, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1640, 277}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5811, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6669, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6468, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1037, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1093, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 853, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4580, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6734, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4642, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1430, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5161, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6409, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6706, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6832, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5347, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6315, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1031, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6871, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6011, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6742, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2417, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2982, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 578, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6476, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2862, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4607, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5498, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6921, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 878, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4609, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 773, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 995, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 11, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6768, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6833, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1905, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6526, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3340, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3186, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6058, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5935, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 668, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2449, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4096, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 481, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2435, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 170, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5339, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 0, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1790, 308}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 847, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1951, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4757, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4702, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 82, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1754, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4909, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2219, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6757, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6855, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5005, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 72, 66}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6836, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6030, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5006, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3048, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4709, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6774, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4868, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6370, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 985, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 453, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5041, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1349, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2816, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6469, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4044, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3084, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4755, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 132, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2834, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2915, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4123, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6327, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4851, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 565, 106}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 819, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3076, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5021, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4874, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5941, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3619, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5083, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2654, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2414, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1991, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6565, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2780, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5023, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3036, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3068, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3196, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1901, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 373, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6045, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 701, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 994, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4717, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5145, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 70, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2836, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6908, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2612, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2869, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2100, 332}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1175, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 735, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6790, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5914, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5971, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4730, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4843, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 304, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4189, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5920, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5244, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4861, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6167, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 88, 71}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2533, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6271, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5054, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6205, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6574, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5029, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4952, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5133, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4208, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4633, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6556, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5026, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6919, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2766, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6964, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2824, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3495, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6632, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6876, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4082, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4657, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 242, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2976, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6552, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4370, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2834, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4911, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6883, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3865, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 970, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4634, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1562, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3481, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4692, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4656, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6716, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 509, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6015, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5642, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 513, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6322, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5016, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5181, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4988, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2867, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6712, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6300, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6677, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2278, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 364, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 867, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6845, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4558, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6863, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6699, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3520, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3857, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3151, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1011, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5193, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2986, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2942, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4366, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 968, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6893, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2507, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 397, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6536, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 383, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 370, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4944, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2638, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3574, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2316, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 7, 3318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3373, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 218, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3835, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4792, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3054, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 254, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 629, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6802, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 671, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2926, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6484, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 262, 83}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3633, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5345, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6464, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3634, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5137, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1040, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 547, 103}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2207, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4834, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5065, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1033, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2871, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5630, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4569, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2987, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 893, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2914, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3675, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6874, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6974, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2932, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3610, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1490, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 695, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2930, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2503, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6438, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5343, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5097, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4501, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1497, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2497, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5347, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2147, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3696, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2900, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3457, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6613, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4610, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6796, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3704, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4746, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2902, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5331, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6764, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6969, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5161, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3617, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 214, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 759, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4305, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6636, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4526, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1339, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1016, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3210, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6018, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5165, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2663, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5585, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 641, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5367, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3090, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4682, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 350, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3168, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2711, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 863, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1069, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4873, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6938, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4710, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3584, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5408, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5221, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5006, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6628, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4956, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2435, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5032, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5047, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6591, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6039, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4561, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 66, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2539, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 579, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5015, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4830, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2806, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4073, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4862, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3956, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6584, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5567, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 646, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6621, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6707, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4828, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1776, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5968, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5071, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6563, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6882, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6843, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3132, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3828, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5791, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4625, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 310, 89}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3367, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1497, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5807, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6805, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6714, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6750, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6643, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3123, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6819, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1309, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6721, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2029, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5044, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2836, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4140, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4932, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6659, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 18, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3201, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 591, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3784, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6154, 456}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5363, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6514, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3560, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2846, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1492, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 697, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4521, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1969, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1427, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5197, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 108, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6499, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 196, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4384, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3791, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2912, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3040, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6277, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3177, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5159, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6584, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6085, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4458, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4871, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 539, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5621, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5666, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 10, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4108, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5265, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4313, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1072, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3048, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 93}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5233, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4611, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6567, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5829, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4696, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 404, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1177, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5465, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4786, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 737, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2928, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5015, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6250, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2565, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6873, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3180, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1769, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2358, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4755, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3550, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1931, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1782, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1478, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5328, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2531, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6815, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4587, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1612, 267}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6180, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1844, 315}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 344, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4663, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 631, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 330, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3615, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6457, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4244, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1359, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4926, 426}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 685, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5947, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5016, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 439, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6091, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3475, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3991, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5995, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 258, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3240, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6955, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6538, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6578, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1853, 318}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4349, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4524, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5389, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 560, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6460, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 843, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2499, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6268, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4328, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2084, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3659, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2910, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3206, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4491, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6183, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 487, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2889, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4819, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2934, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 900, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2855, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6746, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6241, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5318, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2904, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 431, 101}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2898, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 465, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 476, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6966, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6634, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5399, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3896, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6458, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1542, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5339, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 86, 69}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2530, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5761, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1700, 291}, {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3712, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2025, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2367, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4516, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6597, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5654, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4469, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6935, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6727, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5177, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4794, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4583, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 721, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1157, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2772, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4384, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4669, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6898, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3168, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3145, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6704, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3278, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2577, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3074, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6188, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1826, 311}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6634, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 791, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1035, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3621, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6729, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5131, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1255, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5314, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 987, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1831, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6585, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5353, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2439, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6566, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 953, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3052, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2837, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5181, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6093, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3995, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3917, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6684, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2744, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2934, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5567, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6837, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1893, 330}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6546, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4494, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4299, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4250, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4972, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4425, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1292, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3634, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1451, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4488, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6900, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6313, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4824, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 367, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6856, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3546, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6706, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2015, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6485, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3911, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2926, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 487, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2467, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 216, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6933, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3064, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6505, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6073, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5169, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5770, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4741, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5320, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4799, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3206, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4552, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4452, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4873, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4643, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6953, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 893, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6822, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5067, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 673, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6710, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4452, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6675, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2899, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3692, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5349, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6137, 453}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2966, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4850, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1710, 295}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3520, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2296, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5345, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2929, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1686, 286}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6844, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4824, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2894, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5123, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5349, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 300, 88}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6658, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6733, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2981, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4026, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6469, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2861, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3166, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3514, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2443, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2810, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6823, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 587, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6057, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2098, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6307, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5836, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4518, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2896, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6418, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2574, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3487, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6031, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3483, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5282, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2248, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6223, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6484, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5738, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 467, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4517, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6554, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 164, 82}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6093, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6572, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6211, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1668, 283}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4749, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2928, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 969, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4425, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6195, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6305, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6830, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2082, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4349, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3100, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6458, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5227, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6810, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5373, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3187, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3104, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3070, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3048, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2787, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3078, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 503, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2141, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4531, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6766, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 637, 117}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4818, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2796, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2449, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4478, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6776, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5217, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5822, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2541, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 290, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6256, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3520, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6186, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4553, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6788, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6305, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6742, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3306, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6741, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2547, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6244, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6069, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6725, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 156, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6327, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4673, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 192, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5026, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3528, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 644, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6026, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4948, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2213, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3140, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5600, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3060, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2407, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2881, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4227, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3911, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3102, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6894, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 761, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6156, 457}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4632, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3142, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5141, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3475, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5495, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4725, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5516, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 767, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6271, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5432, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2342, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6463, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6053, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5854, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4780, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4723, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5513, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3088, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4913, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3537, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6321, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6720, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6559, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4615, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3881, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6807, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3447, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 108, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6586, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5175, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6445, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6483, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6208, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6748, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6947, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 575, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6615, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5233, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4201, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6657, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3776, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3625, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6734, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1488, 264}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1124, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 884, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1047, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5357, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2640, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6641, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 880, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5353, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1285, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3197, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2761, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2892, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 360, 96}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3989, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3243, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1454, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1632, 274}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1881, 328}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5543, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 583, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5513, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2838, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6927, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6451, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4354, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3629, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1708, 294}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 699, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3872, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1551, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4822, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6466, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4536, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6325, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4374, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2553, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2890, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6913, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4820, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2909, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3654, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 585, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2708, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3439, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2402, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5881, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6300, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2237, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3533, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4530, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2632, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6736, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1686, 286}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6862, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 709, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6674, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5756, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6550, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4542, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 882, 225}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 839, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1490, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3741, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3120, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6843, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3355, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5225, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1403, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6306, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2549, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 639, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6659, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3940, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4634, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6821, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6696, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3100, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2321, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2851, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4858, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2922, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1891, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5453, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1659, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2844, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3310, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1719, 298}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2441, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5157, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6459, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 348, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2021, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4570, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6670, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5369, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1341, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4285, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1506, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1828, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 64, 64}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5365, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1031, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6849, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4841, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2519, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6887, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5762, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5792, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6731, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3813, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6443, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1252, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 626, 126}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4836, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2187, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5672, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1586, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 102, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5809, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6250, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1885, 329}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1837, 312}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 395, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6035, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 316, 92}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 320, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1418, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 985, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4827, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5453, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2110, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2154, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1893, 330}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4716, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3116, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1197, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6111, 446}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2543, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3144, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6299, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4764, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4239, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6540, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 525, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 15, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 296, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 93}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6361, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6493, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1177, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 441, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3090, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3026, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 703, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 874, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4790, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2947, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2958, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5519, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1353, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1394, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4916, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4863, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1909, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4918, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 72, 66}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4778, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1951, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 342, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4568, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2125, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6946, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3361, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 413, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1430, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6689, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 419, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5107, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4084, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6925, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1939, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 713, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4894, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 741, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4757, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2856, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4658, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6908, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5244, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4843, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5932, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5657, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6300, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6864, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6752, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 771, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5875, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4127, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 242, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1235, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5881, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2729, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 0, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1539, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1241, 258}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4901, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2818, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5772, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5701, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3548, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1217, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2865, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 731, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6929, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6605, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3461, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2687, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4612, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5495, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1066, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3508, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6780, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4748, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1269, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2984, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4645, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5079, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 479, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6376, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2254, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 266, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5796, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 551, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3058, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5239, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2696, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4869, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 24, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5956, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 997, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6430, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 80, 67}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 262, 83}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1913, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5296, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2382, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6303, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 507, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4865, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4833, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2663, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5761, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5764, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3415, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 581, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4585, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3052, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 401, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3628, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5303, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6597, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2245, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 40, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2098, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5341, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2487, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3400, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4581, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6856, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1774, 306}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 979, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5259, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4613, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4718, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1656, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3463, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5540, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 539, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4880, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4712, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3588, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2838, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4920, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1237, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2969, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 930, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5794, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5253, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5237, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5225, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4476, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2937, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6690, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 914, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6952, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5165, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3074, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5318, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6220, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 218, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3537, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6944, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4684, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1374, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1801, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2453, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4082, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5887, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6569, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6863, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6610, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 88, 71}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2479, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2272, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6007, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4871, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6229, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6312, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5685, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4851, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5902, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 932, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2806, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1769, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5821, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3166, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2596, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1460, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2819, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6449, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1943, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2873, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3522, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3512, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4924, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2600, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2071, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6048, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6474, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4691, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 362, 97}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2875, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3503, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3391, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2330, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4073, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6312, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5250, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 815, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 601, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 996, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6869, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 685, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5308, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6682, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5151, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3497, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5322, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4641, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4165, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 186, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3062, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2883, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1688, 287}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4966, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3175, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3904, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2837, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2254, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4643, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2982, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1560, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4595, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3501, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5071, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4964, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 977, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6898, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5492, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 112, 74}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 936, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5429, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5235, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6397, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5848, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5231, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 773, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1001, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2529, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2690, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1323, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 865, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1872, 325}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2978, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1640, 277}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 1, 596, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4729, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5701, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5038, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1374, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6309, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2808, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5866, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5642, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6475, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4517, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2529, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4807, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4673, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5762, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3140, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1252, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6782, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2553, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3068, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 425, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3058, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6385, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3623, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6957, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 833, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 695, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2475, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 523, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6343, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 835, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2147, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1059, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4347, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4671, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4549, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4805, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6829, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6283, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 633, 116}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4744, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1131, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6529, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4491, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3631, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2405, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 941, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 697, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6432, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5408, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3388, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2428, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4577, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4838, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4579, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 150, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3394, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2857, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 491, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2848, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 857, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1325, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1875, 326}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5830, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 124, 78}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3465, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6931, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6314, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6568, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5561, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 256, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2931, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 246, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6909, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 493, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 437, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4832, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 861, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5383, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 990, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 891, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3524, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4821, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6335, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5414, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1448, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4003, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1969, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 928, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2996, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2931, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 777, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6551, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5314, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6518, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4616, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6579, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3469, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2926, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6844, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 172, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1670, 284}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6824, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4627, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6838, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3424, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4588, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 633, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1834, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1331, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5044, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4586, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1542, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4936, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4134, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6091, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3418, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4344, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6128, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6418, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1175, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5127, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4667, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2968, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3185, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5480, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3522, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 739, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 711, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4732, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2787, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6943, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6694, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3210, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4458, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4515, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3134, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4599, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 799, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 377, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5402, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4419, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3331, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4175, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1165, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 729, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4610, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1728, 301}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6041, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4559, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 560, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2824, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4555, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1757, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3314, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 272, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6061, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6529, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2551, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6071, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1654, 282}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2612, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3615, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6524, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5986, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2433, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2600, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5314, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3082, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 641, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5872, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 611, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1045, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4891, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1503, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3556, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6899, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4090, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5280, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5471, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6361, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6066, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6333, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3138, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5065, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5837, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 563, 105}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3183, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4872, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4707, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1053, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4523, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4697, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5193, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4388, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 78, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6051, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4086, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6339, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5328, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2059, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5606, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2798, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 404, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4675, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2974, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6385, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6024, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1722, 299}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3066, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5145, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4493, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6782, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4816, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3473, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3993, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6517, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3156, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 543, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 926, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3195, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4543, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 921, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3266, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 707, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6868, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4576, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1457, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3385, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 976, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4281, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 222, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2463, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1167, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3627, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1097, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4810, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 707, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4801, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 358, 95}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5807, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4590, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3430, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6608, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5167, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 206, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6664, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2515, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4730, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5322, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6654, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2239, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 683, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6482, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 675, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3237, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2864, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5492, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5944, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5006, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4247, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4428, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 491, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2984, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4699, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4701, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6851, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6715, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4487, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1005, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6749, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3108, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6864, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2770, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4023, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2782, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4853, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 985, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6940, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6528, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4815, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2848, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5793, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6256, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5810, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6941, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6950, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1327, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 60, 62}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1878, 327}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4728, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2684, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4535, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1376, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4596, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3130, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2769, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 936, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3358, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3623, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 437, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 837, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 156, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4533, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3119, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4922, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1339, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1826, 311}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6558, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2551, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3737, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6919, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3584, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6691, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3521, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3580, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3953, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 511, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3532, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5768, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2254, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2977, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2541, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5038, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4656, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3625, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5869, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6867, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6650, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1512, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5600, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4726, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4539, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1279, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3558, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4493, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6331, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 28, 55}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4357, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5300, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2407, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3832, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2912, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2272, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3453, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4982, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 266, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 354, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 691, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 991, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 114, 75}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6017, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5373, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3838, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3665, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4561, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6816, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3016, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4942, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6044, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 641, 127}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1027, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3440, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1151, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3197, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6954, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 719, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 399, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 1, 598, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1672, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5689, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 240, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 957, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 513, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3526, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6934, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2067, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2405, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 664, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3441, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2235, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6907, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5745, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4962, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4167, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2979, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4640, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3132, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3495, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3872, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3767, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6924, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2820, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5911, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 943, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2956, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1233, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5905, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1442, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3400, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5085, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 705, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5227, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4688, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6502, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6394, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6942, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 30, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5447, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4869, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2854, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 268, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6625, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2262, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4194, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4740, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1311, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1475, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5306, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6850, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 122, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 40, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2319, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 112, 74}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 358, 95}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3634, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2837, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2785, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1598, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6130, 450}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2841, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 298, 87}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6638, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1143, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4153, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4946, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3497, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 439, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1735, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3314, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3120, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 733, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2822, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4473, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1618, 269}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4503, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2292, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5179, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2165, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6023, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1111, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5167, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4725, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4273, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2821, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 961, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2870, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6899, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1482, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 214, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6705, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4658, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6320, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5035, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5863, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3022, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 489, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6508, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6590, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1466, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1305, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6886, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5071, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4080, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 364, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3637, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5744, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2059, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 973, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1002, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2220, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2678, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2807, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2491, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6484, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5237, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1995, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3757, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6319, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2431, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5980, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3004, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6069, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2584, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 979, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 940, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 176, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 964, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3210, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2219, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6034, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4020, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 34, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5938, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5331, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 605, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 260, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5827, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4096, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3631, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 497, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 891, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6403, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2945, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2970, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5187, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2873, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4766, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1935, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2972, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 451, 100}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6474, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4317, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2458, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2455, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3098, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3519, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2048, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3123, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 166, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3086, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5582, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2547, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 938, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5111, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1153, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6607, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4960, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3125, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4773, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 461, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3208, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5373, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6973, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2118, 333}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3572, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6981, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2952, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6081, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3088, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3813, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5223, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4502, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6902, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3862, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5127, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4467, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3791, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4557, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6463, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3104, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6560, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2985, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1981, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3436, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3154, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5199, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6046, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3999, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 837, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5588, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3064, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 916, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2885, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6663, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4670, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4003, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5091, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3525, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6005, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5205, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5002, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 465, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5929, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6528, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4911, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2828, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6158, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 150, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4584, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6713, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6806, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3128, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4654, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6447, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6585, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5810, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3167, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3210, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3208, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5205, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6603, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4567, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1480, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4660, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4590, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 871, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1097, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5151, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3568, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5396, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6161, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1246, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4703, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1905, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 573, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 997, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4770, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1436, 261}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5462, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 759, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1211, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4351, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3202, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4695, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5259, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6545, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1323, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2813, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3600, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5444, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5432, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2267, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4041, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5047, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1958, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2829, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2361, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2481, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5375, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2165, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6740, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 709, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6247, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 737, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5663, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6073, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2978, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6518, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1766, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5790, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4888, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4479, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6539, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3112, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4035, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2897, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2970, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4881, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3094, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 573, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6592, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2815, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5657, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5239, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6605, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 110, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4321, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2927, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3441, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 1, 597, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6268, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2084, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3054, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2580, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6544, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1194, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4854, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3548, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4390, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6697, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6883, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1750, 303}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4903, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3072, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2296, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1565, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4849, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4422, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4668, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3172, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6571, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1217, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6907, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 765, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1521, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6591, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 509, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3243, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 451, 100}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3036, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1602, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3016, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 994, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 749, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4549, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2376, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2799, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4053, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3290, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5417, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4804, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5141, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3349, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4564, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5757, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4878, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5145, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1652, 281}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5465, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 84, 68}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6313, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2255, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6932, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 387, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 601, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3070, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 21, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5303, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2839, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1668, 283}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2096, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 188, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 855, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4201, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 152, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 437, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6845, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6880, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3138, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4603, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4446, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3127, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6978, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6445, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6619, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6586, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5576, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3518, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1725, 300}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2702, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4736, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2964, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2660, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4663, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 505, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2896, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 667, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1606, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3146, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5742, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2364, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2483, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6421, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1454, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2123, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1901, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4244, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 616, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2177, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 587, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6298, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1947, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5840, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2809, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 685, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4023, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4787, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1913, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 344, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5525, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4791, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1600, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6578, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2792, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3054, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3630, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1219, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2790, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5766, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1239, 257}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5444, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6400, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1213, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4720, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5546, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4976, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 689, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4104, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3206, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3114, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4650, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6778, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6837, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4475, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5801, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 912, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3078, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5636, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5950, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5149, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2666, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6607, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6926, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3440, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 902, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2693, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4865, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4806, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3642, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2657, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6867, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 687, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 523, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3120, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6704, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6671, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2467, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3442, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4440, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 978, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3094, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 11, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4434, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 602, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4796, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5361, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3592, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6949, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6311, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2845, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2960, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4659, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6718, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2901, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4455, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2306, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 264, 84}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2525, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2863, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5357, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3976, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4661, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2962, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6641, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5396, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3901, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4521, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6464, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6304, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 26, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2882, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4612, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3700, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 874, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6808, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6105, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2495, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6612, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2521, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2738, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6071, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3418, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4625, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1774, 306}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1921, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1089, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5887, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4847, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6912, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1424, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4954, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2969, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4958, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6677, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5211, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1518, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 641, 127}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 821, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2802, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5111, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5459, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5268, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6226, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5250, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1021, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 356, 94}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3605, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1433, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 236, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 220, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5237, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4926, 426}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6032, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4649, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4608, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4505, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3453, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6436, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 964, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2943, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3801, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2840, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2425, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2460, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5790, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5929, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3771, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 699, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2855, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3885, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6656, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 254, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 90, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3127, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4540, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5123, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 535, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3556, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6554, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5820, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2911, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 581, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6870, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5371, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2257, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3627, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6629, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 278, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6670, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3306, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3382, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3138, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4828, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6406, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4599, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2451, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3298, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5845, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5026, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3525, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6688, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 184, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5759, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3189, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4689, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2265, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4066, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5450, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2292, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 34, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4859, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 687, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4377, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2829, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2876, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2803, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3646, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6490, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2805, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4131, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6678, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6891, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 970, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6690, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5223, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6309, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2894, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4165, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1691, 288}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5962, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4866, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1533, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4062, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4584, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 425, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3412, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1536, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2842, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 741, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 459, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1181, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6479, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 930, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2925, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4907, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4968, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5341, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1627, 272}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1776, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1925, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1388, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6865, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3545, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3543, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5353, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2458, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2327, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4970, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6761, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4509, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4645, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2151, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2923, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5021, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4550, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3920, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6819, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 805, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 671, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4492, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6961, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4449, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3632, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2714, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4404, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5564, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2932, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4800, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3616, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 667, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6527, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 136, 80}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 959, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2654, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3108, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2237, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2985, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 30, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2916, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1478, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 26, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2875, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2513, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3066, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3040, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 36, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1977, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4822, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4001, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4443, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6647, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 580, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 637, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 687, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3213, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1409, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1732, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4875, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6111, 446}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5041, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 461, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1161, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 725, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4735, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1418, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3165, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3148, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1146, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1018, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1654, 282}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2110, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4088, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 356, 94}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3266, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 646, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3046, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4467, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5177, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4366, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4997, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2055, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4055, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2800, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3032, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1728, 301}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5956, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2782, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4541, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3193, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5099, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3258, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2723, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5011, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6067, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3163, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6202, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5159, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6453, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1446, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1107, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5187, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6033, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4706, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4482, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5492, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 302, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 44, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2433, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6308, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 15, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 238, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4047, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1307, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6345, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2893, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6676, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1469, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1, 54}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6388, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2895, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3331, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6740, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3110, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 657, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3489, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6001, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3969, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1694, 289}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4784, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1866, 323}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 691, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5345, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 126, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1536, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6623, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4208, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4476, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2648, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6534, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3187, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2199, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5480, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1741, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3070, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 898, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1500, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4802, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1440, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6137, 453}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3219, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4679, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 841, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2177, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 629, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4571, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1101, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 959, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6978, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4661, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3159, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 908, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5003, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6731, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5772, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3246, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 260, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6012, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6881, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3140, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4986, 0}, {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5017, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 541, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3201, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1016, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5093, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2889, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5262, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3597, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4125, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3929, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6709, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5429, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5627, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 914, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2937, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4241, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4305, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4485, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5831, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4703, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4756, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6884, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5337, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 485, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3985, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6238, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 924, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3052, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2473, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4605, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2096, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5341, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 977, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5760, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4809, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4962, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5011, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6645, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2079, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2774, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4577, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 589, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6299, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6006, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3493, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2543, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2919, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1013, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6563, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 180, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3078, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5357, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4513, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 910, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3539, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6151, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2902, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2961, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5183, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4522, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6300, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 689, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5079, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2881, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5761, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 168, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2192, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3146, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3704, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4431, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6788, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5639, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4464, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6903, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 84, 68}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1988, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6730, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5417, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 731, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1167, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6729, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 68, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5077, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2127, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6889, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2278, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5149, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 713, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3195, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1139, 253}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4719, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6971, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3193, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6901, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1077, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4724, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4271, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2822, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1233, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 648, 128}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2979, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3282, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5127, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2799, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3894, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2833, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5073, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1460, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5303, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6352, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1955, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2352, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5923, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 46, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 152, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6038, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1363, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4053, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 138, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1839, 313}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6412, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4845, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3072, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6631, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2787, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2835, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1004, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4948, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2973, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2154, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3465, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2094, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1188, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4817, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 456, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3588, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6872, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4929, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6707, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 505, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4921, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2123, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4919, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6434, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4372, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6769, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4891, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2878, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2842, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1527, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5606, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 360, 96}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5151, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3627, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1716, 297}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2792, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1239, 257}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2951, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1083, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4564, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3086, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 244, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6810, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4501, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 48, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 919, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 695, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3848, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4468, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3376, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3787, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 579, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 128, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3136, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2813, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6639, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2944, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4526, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1331, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4826, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5002, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 132, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4394, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 120, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3541, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4688, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4060, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2802, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1335, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5660, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2832, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 845, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5791, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6695, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6310, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6323, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3844, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 577, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5792, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2830, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1211, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 116, 76}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6930, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4751, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1898, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2120, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 8, 5730, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4038, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5675, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 723, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4909, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2248, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6683, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3881, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1598, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 146, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3002, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1219, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2963, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6318, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3078, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2503, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6976, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1055, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2856, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2883, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2937, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3048, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2885, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2868, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6609, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5111, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 685, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 160, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4574, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6705, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 495, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3012, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3997, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 745, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 521, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2280, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4497, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1376, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4416, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NOBREAK, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2251, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5840, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 38, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 52, 61}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5576, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 36, 59}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4555, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 727, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6460, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3600, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 338, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 312, 90}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2851, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2445, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1881, 328}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 961, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5109, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2319, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2959, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2982, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4467, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6394, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2855, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2067, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2936, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4835, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3449, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4606, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4431, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4742, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2906, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5207, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3720, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3090, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4605, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 666, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3445, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1798, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 70, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 957, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1372, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6068, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6049, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5866, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6101, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2469, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 375, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1093, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2844, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4392, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6475, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2895, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3205, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5441, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2315, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4641, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6726, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 626, 126}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3925, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4495, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6515, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5507, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1169, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 529, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 533, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6343, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6022, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 352, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 300, 88}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2804, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6881, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4064, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4474, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3207, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6598, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3175, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5345, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1081, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1237, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3173, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2029, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6579, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4511, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5756, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4982, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5639, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6979, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3515, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5962, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2358, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4653, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6951, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3940, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2402, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2479, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4978, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5832, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5645, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5091, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5047, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4940, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2479, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2608, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2894, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 230, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2642, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5097, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 669, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 148, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 993, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4924, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6857, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 557, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2834, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3138, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4628, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 898, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 731, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3534, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4679, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4032, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2812, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3603, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2711, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5432, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3183, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2051, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4026, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2810, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6132, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2330, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4340, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5153, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2994, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6043, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4108, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6956, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4637, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 691, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5111, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5213, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3489, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4413, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5004, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5810, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4513, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4706, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5035, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 194, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3576, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6609, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5063, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5899, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3208, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 910, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6048, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2312, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6066, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5201, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5001, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 381, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2577, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3564, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 869, 221}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6632, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4701, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2976, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1017, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4884, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6900, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4481, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6765, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4849, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6341, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3062, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 170, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 966, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3066, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2887, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6523, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3209, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2853, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2826, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6804, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2950, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2754, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6462, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1311, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6735, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5923, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 968, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6544, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2952, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1637, 276}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1568, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3159, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4876, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1305, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6534, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 48, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5838, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3076, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6549, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 44, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3208, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6358, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4680, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2898, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 407, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4762, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3181, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3225, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 731, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4487, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4529, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5157, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4734, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5306, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3219, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3343, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 987, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1859, 320}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1313, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3136, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4601, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6709, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6961, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5217, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6676, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5414, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2265, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5005, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4407, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4511, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5067, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4708, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4189, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5385, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 815, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1451, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3206, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3741, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2087, 331}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5290, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4273, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2410, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6602, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5570, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3150, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4470, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6457, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5292, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3949, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1153, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1018, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3152, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 4258, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6831, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6307, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4148, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6573, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 280, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2924, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 284, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3125, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1703, 292}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 565, 106}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6862, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6555, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1634, 275}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2941, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6432, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3100, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5022, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5944, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1049, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2094, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5824, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5023, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4100, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2489, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6382, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3058, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 949, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 130, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4813, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6747, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 972, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 667, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5486, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 102, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4220, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4592, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1169, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6125, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3054, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1649, 280}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1643, 278}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2556, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1782, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6730, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6280, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1307, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2705, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5531, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2954, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1015, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6056, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2914, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5552, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6490, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3096, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6058, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3056, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 226, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3632, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1509, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4250, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6030, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2979, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6800, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1409, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3148, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1363, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4861, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4753, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6893, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2773, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4533, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3231, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 641, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4765, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6081, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1249, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1839, 313}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 637, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 449, 99}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5361, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 8, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1037, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 501, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6642, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4032, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5438, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3976, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3608, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6723, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3205, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5101, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1406, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3325, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5284, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6888, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5051, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4084, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6029, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1183, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4798, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 984, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6540, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4995, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2349, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4682, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6576, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4748, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4733, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5314, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5672, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3207, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4705, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5207, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6610, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5365, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2460, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6658, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 256, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 663, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6719, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4867, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6214, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4359, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5177, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6850, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3154, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2225, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6886, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5213, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6966, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 729, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4539, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3252, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 819, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4277, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3543, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6196, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1494, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5310, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3651, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4690, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1137, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 813, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2920, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 92, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5298, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 876, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 96, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 701, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1961, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2922, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6625, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5244, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4731, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1837, 312}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4680, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6587, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4326, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3086, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4879, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1279, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2267, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6590, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6787, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3436, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 735, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6306, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4592, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2918, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3688, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6562, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5235, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6548, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5759, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 727, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4507, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5300, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NOBREAK, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 897, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2931, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5127, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2669, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4654, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3406, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5456, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1281, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 4253, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 882, 225}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 801, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6543, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4976, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2953, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 164, 82}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 611, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2909, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2990, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4503, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3552, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3632, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3799, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4774, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6977, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3807, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6818, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3149, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1565, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 519, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6803, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5341, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4647, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5387, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3794, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1600, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 978, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2858, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4767, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4505, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3654, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2988, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3092, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5367, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5552, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6887, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2955, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6459, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6894, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3753, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6797, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4623, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6700, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3122, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4545, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3412, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4633, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6054, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5219, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6643, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 616, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4917, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6241, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3156, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3430, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5875, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2937, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5678, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3535, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3100, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 162, 81}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3737, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2015, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6077, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5377, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6430, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2877, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4972, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5083, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5742, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 999, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3216, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5772, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4528, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4857, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3024, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6164, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2645, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2831, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2847, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5213, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5531, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 691, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4143, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6462, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6644, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1281, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4475, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 749, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1197, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5065, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4169, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4737, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5227, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1313, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3104, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2196, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5459, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3026, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6025, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3461, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6325, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3965, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 972, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2223, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 976, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5073, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4693, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5826, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 18, 5712, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5032, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5857, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4279, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5185, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6312, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4596, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6608, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 501, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NOBREAK, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 897, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2346, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1834, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1015, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2974, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 15, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4727, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4536, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6937, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1708, 294}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 74, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5244, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5181, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6796, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4275, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2539, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 912, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 525, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3523, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6142, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2720, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6148, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2782, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 673, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3064, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6042, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3018, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1652, 281}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 226, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2801, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 2, 599, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5207, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1043, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2228, 334}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3406, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2437, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6052, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1415, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1149, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 717, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5083, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4057, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5137, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 32, 56}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2431, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6868, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 270, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2051, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6960, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4776, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3528, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4886, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1831, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2856, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6936, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2827, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 449, 99}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5141, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2339, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 364, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4715, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3527, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6925, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 4253, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6527, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 775, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2917, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6292, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5169, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1539, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1472, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6764, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1863, 322}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 602, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1697, 290}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1309, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2732, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3560, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5794, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2940, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3678, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4499, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6673, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3828, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2913, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1303, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6247, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1928, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6959, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 144, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1463, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1624, 271}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3084, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4984, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2313, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6846, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6557, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3623, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4868, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 986, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1421, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1370, 260}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3070, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 685, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6208, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1412, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 984, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 711, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5709, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 178, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2205, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3160, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 397, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6833, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6309, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2861, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4905, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4293, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3985, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6587, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2280, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6813, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2949, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6305, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3066, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4535, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6780, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 543, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 863, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 711, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1361, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2252, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4988, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5375, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6220, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6849, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2328, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2915, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 807, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1606, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6289, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3671, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3959, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5790, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4915, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6397, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4560, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3564, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1385, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5591, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5159, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3622, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3457, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2398, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6027, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4627, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2276, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6083, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 715, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1141, 254}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5303, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6928, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6732, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4950, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3578, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 116, 76}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6948, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5525, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1231, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4938, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5792, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4628, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5147, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1885, 329}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4899, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3473, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4813, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3615, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4608, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5495, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5423, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6061, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1649, 280}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5828, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6776, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3592, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3343, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3199, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4698, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2891, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 687, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1586, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2190, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3162, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 38, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5770, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4572, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6910, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3854, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3373, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6688, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3890, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4782, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 443, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 940, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 980, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6909, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 142, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6678, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1632, 274}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6711, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6638, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5021, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1091, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2848, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6655, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1221, 255}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6700, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3622, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 847, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4772, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2018, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5371, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5051, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6759, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5615, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4620, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5268, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6421, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5393, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1512, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6522, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2919, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1684, 285}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1713, 296}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5231, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5383, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 622, 129}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1072, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6496, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1706, 293}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5387, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4551, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 711, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5123, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3298, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6486, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4313, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1127, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5501, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4113, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4710, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6766, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4666, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5005, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6438, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6778, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6286, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2376, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6400, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2431, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3134, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3231, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2082, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2866, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6627, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 986, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 188, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4094, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 174, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5938, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3252, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5468, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4098, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4852, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2794, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6958, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 988, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3161, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1012, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1861, 321}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4677, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6869, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5137, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2870, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5001, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4398, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6119, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6846, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 613, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5195, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4708, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6765, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2879, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3054, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 46, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2735, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1061, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6939, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4011, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5405, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 823, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2493, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6403, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2959, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5250, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3726, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 797, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1325, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6628, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6744, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4330, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5765, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4477, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 761, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1213, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1621, 270}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4342, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2929, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 60, 62}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1269, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4473, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5773, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4746, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4005, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2907, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4437, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2087, 331}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3052, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 859, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3617, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 24, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2465, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2394, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6857, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5349, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4594, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 495, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 707, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3541, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6310, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5814, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1814, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2921, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6679, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3169, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6547, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6523, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6838, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 635, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 184, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2793, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2183, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1327, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6712, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6854, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3684, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2987, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 370, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5513, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 547, 103}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1752, 304}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1524, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3064, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5534, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2917, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 595, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3445, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4467, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3062, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1562, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3568, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3624, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5231, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6786, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4368, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1596, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2972, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4603, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 50, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5796, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 232, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6262, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3937, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4630, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4537, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4918, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1086, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6593, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1241, 258}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2946, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 876, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 130, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2802, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5792, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4497, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5079, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6728, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6161, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4529, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3534, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3134, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6905, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1277, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5157, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2832, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4721, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 206, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6341, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6265, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5444, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2525, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2839, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2758, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1115, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3102, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 410, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5197, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6798, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2850, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5131, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6906, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6711, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1798, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6465, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4839, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6047, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4639, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5075, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5917, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3388, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 987, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2825, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4882, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6532, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5759, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3530, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2559, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2628, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2825, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3171, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2908, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4671, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3732, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6649, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6745, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 456, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3527, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 461, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4396, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 613, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 616, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5860, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6918, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2938, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5799, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5438, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1283, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 934, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3192, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3076, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 334, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4686, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2672, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2823, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5899, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1515, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5681, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4844, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2003, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2335, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2776, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1051, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4017, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2903, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2929, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3056, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2588, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5555, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4523, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5337, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4489, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6588, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3629, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3718, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6541, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6902, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6592, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1181, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1139, 253}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5038, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5067, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6627, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4944, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5893, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 878, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6826, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3140, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4630, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6875, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4639, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6827, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 695, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3493, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 250, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6603, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3164, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2750, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6570, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5083, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5014, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4297, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6888, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6851, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5834, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1303, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6055, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6968, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1013, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3052, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 1, 598, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 1, 597, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6045, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5215, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5752, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6217, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6945, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5745, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1560, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3708, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2994, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2295, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5361, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2895, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4480, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4819, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6644, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 765, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6087, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6672, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1533, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2922, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2190, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3066, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5022, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1415, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1887, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6962, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1841, 314}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 988, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6697, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5187, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1107, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6839, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3550, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4694, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6319, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3629, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4047, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2100, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 288, 86}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6680, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1752, 304}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4125, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2732, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4571, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6687, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1101, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1659, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6013, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1382, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 387, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 192, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6710, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 288, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2905, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5769, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5308, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5010, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6875, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2304, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3070, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6321, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6036, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2777, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 902, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1985, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6812, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1730, 302}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5179, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 314, 91}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4547, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 945, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6539, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3144, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4512, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3207, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2626, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6904, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1353, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2811, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2428, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2171, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2445, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3349, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2717, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4483, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6813, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6259, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4227, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6725, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1412, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 248, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4029, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2980, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 445, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2201, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3982, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1738, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1973, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1484, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5507, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5391, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4573, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2860, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3214, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5054, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5633, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5361, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2055, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1795, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1221, 255}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1063, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 639, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4990, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6794, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4649, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4712, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3098, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5016, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 982, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6569, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 529, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3206, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1017, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6056, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3056, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4102, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2149, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4662, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 916, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6064, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5738, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6125, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5833, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5331, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6154, 456}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2243, 335}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2726, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1025, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4311, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6158, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6557, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1283, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 463, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 707, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2517, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5231, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3117, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1444, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2763, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4697, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5253, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2892, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1105, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 707, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5441, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 21, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2315, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 34, 57}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1421, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1804, 309}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5654, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5773, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 849, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2778, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2844, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4657, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6815, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4989, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5105, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5663, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6087, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2194, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 652, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3613, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4110, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 272, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 517, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5109, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 503, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 236, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6694, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4586, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6008, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6825, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3132, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 54, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5365, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5217, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6525, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5747, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4684, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1828, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3255, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5465, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 951, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2982, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6068, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6496, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3162, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 136, 80}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2866, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 567, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5351, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6311, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 437, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6596, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5689, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5355, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3074, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 86, 69}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5107, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6855, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6576, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6316, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1811, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1355, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1397, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2233, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 593, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3006, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6559, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 668, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1551, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5432, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5233, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1772, 305}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1007, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5808, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4860, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5516, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5845, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5426, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6483, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1738, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5851, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6947, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2521, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 383, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5489, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5073, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 4230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 24, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6347, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6772, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3901, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2037, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2768, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5121, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2778, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3536, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1014, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3181, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5999, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3485, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6301, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 757, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3000, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1209, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3633, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1246, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5241, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5402, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5835, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4825, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1321, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6847, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4519, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5567, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2933, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6735, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 224, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3044, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2899, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1337, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1004, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 52, 61}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5492, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3907, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2981, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4642, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NOBREAK, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2251, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3499, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5265, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5339, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5453, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6520, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6865, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 691, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6751, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3042, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6323, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3914, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6675, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6077, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6499, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2887, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2935, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4823, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5570, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 431, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4578, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3613, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2289, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3391, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5235, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 715, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5803, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3459, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1063, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5501, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1602, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5357, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4297, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4440, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3692, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3100, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4647, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4495, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1391, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6779, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2967, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 140, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6307, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3076, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2410, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5133, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 234, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6556, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4553, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4575, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6943, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4966, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3177, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6614, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 987, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3542, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4382, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5817, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6229, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 869, 221}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3062, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1099, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2922, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 379, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4670, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4551, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4803, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6514, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1438, 262}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2845, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2781, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5453, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1023, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6311, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5022, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2948, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1368, 259}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2802, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6530, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6555, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 685, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6467, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4601, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 250, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 186, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5456, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4060, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2843, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 160, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4692, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 182, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 531, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2874, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2045, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2213, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1006, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6660, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6020, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 605, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6317, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 650, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5191, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5986, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4283, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5705, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 641, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4470, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4860, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6337, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5697, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5968, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 743, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5331, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4864, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5131, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1271, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4611, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3552, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6915, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 651, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2819, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3508, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2120, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6672, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4690, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5191, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1249, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3150, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6142, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4695, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6960, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4899, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5371, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3076, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6017, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1556, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5189, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1385, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1806, 310}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1869, 324}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1321, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4881, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3358, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6646, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1548, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 100, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3524, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2509, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6660, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3364, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4917, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6955, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2807, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6853, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4080, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5790, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3538, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3165, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4685, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2893, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 362, 97}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5167, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1928, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6612, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6861, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4299, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6453, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2465, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5007, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1161, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 461, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5227, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6872, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6304, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4469, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5878, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2837, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6105, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4713, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3590, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 248, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 252, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2847, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5075, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5857, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 614, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6427, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2858, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6798, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5435, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5153, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6691, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5081, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 527, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3914, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5498, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3176, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 298, 87}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1463, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3325, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2592, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2287, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4557, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 515, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5396, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 459, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5256, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5447, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 783, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2769, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5450, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5262, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6550, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5555, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1558, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 829, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 106, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5540, 0}, - {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5893, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 274, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1057, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3822, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2125, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1335, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3804, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6595, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3630, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3618, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6493, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1394, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2789, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2556, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6805, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1005, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2254, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5381, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2327, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5809, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6757, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2678, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1691, 288}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2925, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5203, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2292, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5805, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 282, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6852, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 775, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1203, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2230, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4455, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3124, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 439, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5567, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6593, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2788, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5483, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4666, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3521, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5125, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1131, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1883, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6685, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5411, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3211, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4562, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4516, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1592, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5032, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6582, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1754, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4169, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2183, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3340, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4954, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1444, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4422, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6914, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3483, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6145, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5486, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3896, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 322, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 941, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1475, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4597, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6928, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3131, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4729, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5423, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4347, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 389, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 393, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2159, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1466, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6388, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3186, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6645, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 200, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5842, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6841, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6532, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3621, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3616, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5147, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6551, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4994, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 575, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2903, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4676, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3708, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5215, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 428, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4740, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3531, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 46, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5796, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5609, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2100, 332}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5977, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 134, 79}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2933, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6262, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2339, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6060, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5908, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1500, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1292, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6521, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6806, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1610, 266}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1665, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2821, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6799, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6415, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2645, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1043, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4776, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3064, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5999, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6180, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3002, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2290, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4815, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6773, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5199, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 434, 102}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3630, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5024, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2549, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2616, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4556, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 158, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 7, 3318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4915, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4700, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6052, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1545, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3632, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3562, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3122, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3421, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1020, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1159, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4587, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 777, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4131, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6834, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6310, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 94, 72}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3832, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4137, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3120, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6667, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 719, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6600, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 747, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5015, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4831, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5239, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6525, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4544, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3196, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6558, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5558, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6859, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3270, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1931, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4615, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2398, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1469, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2349, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3467, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4279, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5444, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 967, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4372, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6575, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5253, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5564, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4558, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5165, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1231, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5399, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5193, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2451, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3334, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4802, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4560, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3628, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5405, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 906, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 827, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5103, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1003, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6232, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 212, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1319, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 919, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6079, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1866, 323}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6679, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6958, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3995, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4534, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6516, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2992, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5119, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6755, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5328, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 364, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2315, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4793, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2955, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 904, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 166, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 485, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3030, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 246, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4017, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2288, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5189, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6412, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2913, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3671, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3042, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6481, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2291, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4566, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1621, 270}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2588, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3355, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1615, 268}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1608, 265}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3558, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3634, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4472, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4088, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6167, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4698, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 106, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5744, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6170, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4999, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5247, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4696, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2104, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3554, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5195, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 68, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3794, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2946, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6038, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 469, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 992, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 144, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 148, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5131, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3876, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1003, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2523, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4507, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6449, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3628, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6937, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2699, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4837, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4637, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 497, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 483, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6695, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2957, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2489, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3076, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6040, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2868, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2149, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6674, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6302, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5781, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2776, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4041, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2815, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 88, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4756, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 563, 105}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3427, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1351, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6829, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6873, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4589, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5041, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4929, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 669, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3134, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5760, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 6, 3822, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6973, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1694, 289}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5044, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4934, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6652, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6809, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3048, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3624, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3517, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5272, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3546, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6553, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4829, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6095, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4655, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6922, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2936, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5829, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 122, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 184, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6905, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 180, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6715, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5073, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5534, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1345, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6571, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5183, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4988, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 895, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5828, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5101, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4998, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6789, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4490, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6623, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 681, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2911, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5633, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6467, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 28, 55}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6468, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4492, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 54, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6480, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2874, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 769, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4522, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4094, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3056, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3202, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2501, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4382, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6349, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4520, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6097, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5250, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5935, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2421, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4386, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6884, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3787, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6717, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 831, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 234, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6737, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5762, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6434, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2077, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5013, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 379, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3620, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5063, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3455, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4504, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4609, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4745, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3078, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5135, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6329, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5343, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6536, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3608, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 172, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3058, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 252, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4559, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5546, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3094, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5588, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4543, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2879, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2243, 335}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1678, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3862, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2033, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4711, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6042, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6566, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5051, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3586, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5029, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4950, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4173, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3869, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 328, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3635, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5006, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6972, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3479, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5223, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6933, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5012, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1524, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 14, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6891, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3133, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4598, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6912, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 908, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 230, 1, 596, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5163, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4731, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4996, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3214, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6698, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6631, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1999, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 58, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1347, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6656, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1258, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3536, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6822, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6130, 450}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6640, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6476, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4683, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6618, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2571, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2636, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SMALL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2293, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4938, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1973, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3137, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1273, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2835, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5759, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4872, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6848, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 439, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 861, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2294, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1059, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 499, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3167, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6724, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6308, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6589, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5276, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3959, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4066, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2805, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5831, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6879, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4303, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2382, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6941, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6977, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3618, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5965, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2735, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5383, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2872, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6508, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2537, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 453, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5089, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4494, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5326, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2495, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1191, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1149, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 531, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2870, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 302, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2973, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 98, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6286, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 224, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4390, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6473, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5223, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2845, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1484, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 657, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 841, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4482, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 611, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5179, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3204, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4524, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3086, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4502, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 757, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4330, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1027, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5161, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3700, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2901, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6009, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1357, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3178, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4500, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1400, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 118, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 422, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 336, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 340, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2714, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6784, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6683, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5189, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 533, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 900, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3094, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5322, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5365, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6095, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5119, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5805, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3006, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4952, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3576, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 751, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 699, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2931, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2199, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2437, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1891, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 595, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1853, 318}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 953, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4848, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5914, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2223, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 604, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6364, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1424, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 66, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 204, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2856, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 56, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3188, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2965, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6202, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4821, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2219, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6903, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3519, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2726, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2891, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4351, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6920, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4852, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5121, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4428, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2927, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 476, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 624, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5884, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6726, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3212, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4449, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 278, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3619, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4518, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2717, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6934, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6301, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4519, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3199, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 664, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5367, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4484, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4842, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2786, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5057, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 945, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5477, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4380, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6702, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4489, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 662, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6459, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4919, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 90, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1624, 271}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4715, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4554, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5537, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3310, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6062, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6896, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 707, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6054, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5743, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1977, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6333, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4717, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5069, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6547, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 779, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6769, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2389, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 2394, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6538, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FRACTION, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2346, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 805, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 990, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1988, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3625, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3128, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5763, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2384, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2079, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 626, 0}, {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5742, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 731, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1235, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6852, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1079, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4722, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5167, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6664, 0}, - {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4541, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 42, 60}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4623, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5041, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4926, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 721, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 174, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6785, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5129, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 228, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6739, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 74, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3627, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4774, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 34, 57}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6027, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5761, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2285, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5025, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 126, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 889, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2274, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 138, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6795, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1267, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUB, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5324, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4674, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5316, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3529, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1261, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 240, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5603, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 787, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3104, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3000, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3082, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3050, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6037, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4817, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6791, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2884, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 521, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6109, 445}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3068, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4993, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3157, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6877, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2517, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6440, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6976, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3991, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6939, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5296, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4283, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 973, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5347, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6309, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6253, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1295, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5099, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 5697, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5351, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4800, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 160, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 330, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3626, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5101, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4499, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1788, 307}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2433, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 80, 67}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 594, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1716, 297}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6616, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 13, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5312, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3008, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6761, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 90, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5229, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4377, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1823, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4844, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6820, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4483, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3240, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5225, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1083, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3102, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2968, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6541, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4546, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3198, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 38, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 975, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 3278, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2758, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 1010, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 887, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2642, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1675, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2869, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2720, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5746, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5155, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5139, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3771, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4807, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6564, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4864, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2957, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6750, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5543, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 797, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4719, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2948, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 6370, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2318, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6733, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2439, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6732, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2768, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4580, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3115, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_NARROW, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5768, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 3397, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3629, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6533, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2990, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1343, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 755, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5669, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1263, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 308, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1200, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_VERTICAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5765, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5197, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1029, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 7, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 537, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5237, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2113, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_MEDIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5308, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2156, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_FINAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5814, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_WIDE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 344, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 4, 1981, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4724, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 5513, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3028, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 648, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 1486, 263}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_FONT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6292, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 3086, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_INITIAL, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 5143, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6471, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 224, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 1589, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2535, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_ISOLATED, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 5077, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2882, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 6036, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 652, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 4968, 0}, + {LXB_UNICODE_CANONICAL_SEPARATELY|LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4220, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 971, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 4011, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SQUARE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3857, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2880, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 2387, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 3, 2151, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 3141, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_MAYBE|LXB_UNICODE_QUICK_NFKD_NO, 0, 2, 6117, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_SUPER, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 963, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE__UNDEF, LXB_UNICODE_QUICK_NFC_NO|LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 4644, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_COMPAT, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 1, 2983, 0}, + {LXB_UNICODE_DECOMPOSITION_TYPE_CIRCLE, LXB_UNICODE_QUICK_NFKC_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 5, 3503, 0}, {0, LXB_UNICODE_QUICK_NFD_NO|LXB_UNICODE_QUICK_NFKD_NO, 0, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 1, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 220, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 240, 0, 0, 0}, {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 91, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 7, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 230, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 216, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 449}, {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 202, 0, 0, 0}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 444}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 439}, - {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 8, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 240, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 230, 0, 0, 0}, {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 9, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 8, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 220, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 7, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 1, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 444}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 91, 0, 0, 0}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 449}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 216, 0, 0, 0}, {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 447}, + {0, LXB_UNICODE_QUICK_NFC_MAYBE|LXB_UNICODE_QUICK_NFKC_MAYBE, 0, 0, 0, 439}, {0, LXB_UNICODE_QUICK__UNDEF, 230, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 220, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 18, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 1, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 216, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 220, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 9, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 28, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 233, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 234, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 224, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 122, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 17, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 7, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 9, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 222, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 232, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 16, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 30, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 25, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 130, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 218, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 228, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 107, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 202, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 13, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 11, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 19, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 27, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 31, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 20, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 35, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 30, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 18, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 21, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 23, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 15, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 32, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 232, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 10, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 216, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 13, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 118, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 34, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 31, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 233, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 84, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 132, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 103, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 228, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 202, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 26, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 226, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 214, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 20, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 24, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 27, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 22, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 10, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 36, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 19, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 224, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 32, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 12, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 33, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 11, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 222, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 218, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 132, 0, 0, 0}, {0, LXB_UNICODE_QUICK__UNDEF, 6, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 14, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 36, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 129, 0, 0, 232}, {0, LXB_UNICODE_QUICK__UNDEF, 29, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 24, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 35, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 17, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 26, 0, 0, 0}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 121}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 136}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 378}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 12}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 395}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 437}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 366}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 369}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 18}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 341}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 143}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 131}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 336}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 373}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 382}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 31}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 219}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 191}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 203}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 170}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 172}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 156}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 383}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 421}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 400}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 120}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 108}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 205}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 356}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 112}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 241}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 174}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 134}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 352}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 25}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 384}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 251}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 186}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 148}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 115}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 58}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 113}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 377}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 211}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 428}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 337}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 419}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 342}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 217}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 452}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 375}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 434}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 22}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 396}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 401}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 6}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 404}, + {0, LXB_UNICODE_QUICK__UNDEF, 16, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 33, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 107, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 214, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 34, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 23, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 103, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 25, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 129, 0, 0, 232}, + {0, LXB_UNICODE_QUICK__UNDEF, 15, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 14, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 84, 0, 0, 0}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 423}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 184}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 228}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 392}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 182}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 410}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 11}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 213}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 157}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 175}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 397}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 215}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 150}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 149}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 201}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 362}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 360}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 8}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 391}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 433}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 183}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 430}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 108}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 144}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 339}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 419}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 235}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 174}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 29}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 18}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 432}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 454}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 138}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 440}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 387}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 28}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 22}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 402}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 197}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 164}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 30}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 438}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 177}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 210}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 415}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 1}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 49}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 133}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 236}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 399}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 403}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 401}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 38}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 53}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 41}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 406}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 137}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 363}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 206}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 196}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 425}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 407}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 179}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 118}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 168}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 220}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 50}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 47}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 440}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 367}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 2}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 46}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 348}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 216}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 27}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 386}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 366}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 193}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 238}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 130}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 222}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 235}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 155}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 351}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 347}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 408}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 243}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 242}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 142}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 153}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 141}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 357}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 371}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 372}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 436}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 354}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 4}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 390}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 145}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 147}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 202}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 192}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 107}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 165}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 227}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 224}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 161}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 413}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 252}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 15}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 166}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 52}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 23}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 344}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 248}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 180}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 77}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 132}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 19}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 32}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 189}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 346}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 391}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 17}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 39}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 133}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 414}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 70}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 380}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 239}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 430}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 199}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 30}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 386}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 247}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 162}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 345}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 178}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 251}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 418}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 152}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 13}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 119}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 198}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 231}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 421}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 114}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 230}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 181}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 182}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 175}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 224}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 409}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 422}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 246}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 338}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 352}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 163}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 203}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 58}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 48}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 233}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 125}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 177}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 169}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 21}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 362}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 42}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 441}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 20}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 8}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 207}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 37}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 65}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 349}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 51}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 46}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 228}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 411}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 242}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 195}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 145}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 217}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 211}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 385}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 212}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 350}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 132}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 44}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 110}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 10}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 229}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 154}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 119}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 237}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 402}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 35}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 214}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 455}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 250}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 241}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 194}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 451}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 200}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 45}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 428}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 347}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 156}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 252}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 443}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 176}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 143}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 2}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 410}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 186}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 367}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 359}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 185}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 240}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 135}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 115}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 172}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 12}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 435}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 146}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 157}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 249}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 411}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 414}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 390}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 142}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 368}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 234}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 429}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 245}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 109}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 378}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 196}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 191}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 118}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 379}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 154}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 43}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 149}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 412}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 139}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 195}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 33}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 197}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 393}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 244}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 13}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 370}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 403}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 358}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 424}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 213}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 237}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 415}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 136}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 65}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 155}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 351}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 161}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 434}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 50}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 223}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 98}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 230}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 420}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 123}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 29}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 356}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 398}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 209}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 364}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 236}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 338}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 212}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 193}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 173}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 423}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 431}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 16}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 240}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 160}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 167}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 163}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 343}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 178}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 218}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 429}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 336}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 375}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 199}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 192}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 436}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 381}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 3}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 385}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 27}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 146}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 34}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 21}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 454}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 151}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 231}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 44}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 443}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 399}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 190}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 353}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 124}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 394}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 41}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 26}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 387}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 159}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 416}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 19}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 248}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 340}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 33}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 15}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 125}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 404}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 412}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 431}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 25}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 344}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 220}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 427}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 5}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 123}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 139}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 1}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 162}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 424}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 397}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 131}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 7}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 394}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 121}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 341}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 9}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 144}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 205}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 17}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 36}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 216}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 355}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 169}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 348}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 202}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 413}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 337}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 16}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 151}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 373}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 365}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 408}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 214}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 448}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 28}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 376}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 188}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 122}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 374}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 389}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 422}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 45}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 10}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 365}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 135}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 138}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 418}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 379}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 455}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 183}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 176}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 110}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 246}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 164}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 114}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 368}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 14}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 451}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 185}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 339}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 438}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 171}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 249}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 388}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 34}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 24}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 198}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 184}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 345}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 245}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 433}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 40}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 442}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 107}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 31}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 363}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 39}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 407}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 6}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 187}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 354}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 150}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 244}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 32}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 372}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 382}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 226}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 49}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 417}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 109}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 350}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 5}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 165}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 361}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 234}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 435}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 396}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 153}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 239}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 204}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 152}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 194}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 7}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 208}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 171}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 437}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 112}, {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 140}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 181}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 359}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 187}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 158}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 405}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 111}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 409}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 416}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 427}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 200}, - {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 250} -}; - -static const lxb_unicode_idna_entry_t lxb_unicode_idna_entries[3923] = -{ - {0, 0, 0}, - {LXB_UNICODE_IDNA_DISALLOWED, 0, 0}, - {LXB_UNICODE_IDNA_VALID, 0, 0}, - {LXB_UNICODE_IDNA_MAPPED, 1, 673}, - {LXB_UNICODE_IDNA_MAPPED, 2, 532}, - {LXB_UNICODE_IDNA_MAPPED, 1, 27}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1976}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3511}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3641}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3528}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4264}, - {LXB_UNICODE_IDNA_MAPPED, 1, 327}, - {LXB_UNICODE_IDNA_IGNORED, 0, 0}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1635}, - {LXB_UNICODE_IDNA_MAPPED, 1, 301}, - {LXB_UNICODE_IDNA_MAPPED, 1, 66}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3328}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1657}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3820}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4861}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2218}, - {LXB_UNICODE_IDNA_DEVIATION, 0, 0}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3267}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3229}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4376}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4990}, - {LXB_UNICODE_IDNA_MAPPED, 1, 627}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1070}, - {LXB_UNICODE_IDNA_MAPPED, 1, 10}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1060}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3722}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3738}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2962}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5062}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1778}, - {LXB_UNICODE_IDNA_MAPPED, 1, 310}, - {LXB_UNICODE_IDNA_MAPPED, 1, 20}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1812}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3818}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1434}, - {LXB_UNICODE_IDNA_MAPPED, 1, 290}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3646}, - {LXB_UNICODE_IDNA_MAPPED, 1, 154}, - {LXB_UNICODE_IDNA_MAPPED, 1, 24}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2479}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4981}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3039}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3001}, - {LXB_UNICODE_IDNA_MAPPED, 2, 560}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1059}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1848}, - {LXB_UNICODE_IDNA_MAPPED, 1, 253}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3443}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2972}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5391}, - {LXB_UNICODE_IDNA_MAPPED, 1, 442}, - {LXB_UNICODE_IDNA_MAPPED, 1, 22}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3403}, - {LXB_UNICODE_IDNA_MAPPED, 1, 297}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2730}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2192}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3766}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3926}, - {LXB_UNICODE_IDNA_MAPPED, 1, 308}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2188}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4623}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1458}, - {LXB_UNICODE_IDNA_MAPPED, 1, 12}, - {LXB_UNICODE_IDNA_MAPPED, 1, 526}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1144}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3120}, - {LXB_UNICODE_IDNA_MAPPED, 1, 304}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4654}, - {LXB_UNICODE_IDNA_MAPPED, 1, 898}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3579}, - {LXB_UNICODE_IDNA_MAPPED, 1, 706}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3053}, - {LXB_UNICODE_IDNA_MAPPED, 1, 314}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3732}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2525}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1016}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1934}, - {LXB_UNICODE_IDNA_MAPPED, 1, 309}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3459}, - {LXB_UNICODE_IDNA_MAPPED, 1, 737}, - {LXB_UNICODE_IDNA_MAPPED, 2, 944}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1678}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5355}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3143}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4306}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4715}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4740}, - {LXB_UNICODE_IDNA_MAPPED, 1, 621}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2605}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3848}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1461}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3687}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4444}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3838}, - {LXB_UNICODE_IDNA_MAPPED, 1, 344}, - {LXB_UNICODE_IDNA_MAPPED, 1, 6}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5325}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4294}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5219}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1064}, - {LXB_UNICODE_IDNA_MAPPED, 1, 298}, - {LXB_UNICODE_IDNA_MAPPED, 1, 23}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1814}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3679}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2074}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3413}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3657}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4679}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2066}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3164}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1816}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2989}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5089}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4939}, - {LXB_UNICODE_IDNA_MAPPED, 1, 26}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3645}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3485}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2000}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1756}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1799}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2953}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3788}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5190}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2999}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2}, - {LXB_UNICODE_IDNA_MAPPED, 1, 16}, - {LXB_UNICODE_IDNA_MAPPED, 1, 196}, - {LXB_UNICODE_IDNA_MAPPED, 1, 158}, - {LXB_UNICODE_IDNA_MAPPED, 1, 15}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2956}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3702}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3752}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3383}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1591}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1165}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3840}, - {LXB_UNICODE_IDNA_MAPPED, 1, 377}, - {LXB_UNICODE_IDNA_MAPPED, 1, 659}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1653}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2907}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1614}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3221}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2780}, - {LXB_UNICODE_IDNA_MAPPED, 1, 741}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1652}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3471}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4457}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4385}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5025}, - {LXB_UNICODE_IDNA_MAPPED, 1, 303}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2534}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3665}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2115}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5291}, - {LXB_UNICODE_IDNA_MAPPED, 1, 397}, - {LXB_UNICODE_IDNA_MAPPED, 2, 922}, - {LXB_UNICODE_IDNA_MAPPED, 1, 25}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3750}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1559}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1235}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3728}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1062}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3782}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2551}, - {LXB_UNICODE_IDNA_MAPPED, 1, 369}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4}, - {LXB_UNICODE_IDNA_MAPPED, 1, 74}, - {LXB_UNICODE_IDNA_MAPPED, 1, 300}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4671}, - {LXB_UNICODE_IDNA_MAPPED, 1, 163}, - {LXB_UNICODE_IDNA_MAPPED, 2, 35}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3848}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3488}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2720}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2196}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4627}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2046}, - {LXB_UNICODE_IDNA_MAPPED, 1, 8}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4204}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4635}, - {LXB_UNICODE_IDNA_MAPPED, 1, 446}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3474}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3824}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5147}, - {LXB_UNICODE_IDNA_MAPPED, 1, 19}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4791}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3587}, - {LXB_UNICODE_IDNA_MAPPED, 1, 710}, - {LXB_UNICODE_IDNA_MAPPED, 2, 972}, - {LXB_UNICODE_IDNA_MAPPED, 1, 735}, - {LXB_UNICODE_IDNA_MAPPED, 1, 720}, - {LXB_UNICODE_IDNA_MAPPED, 1, 21}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3762}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4530}, - {LXB_UNICODE_IDNA_MAPPED, 1, 294}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5114}, - {LXB_UNICODE_IDNA_MAPPED, 1, 372}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2191}, - {LXB_UNICODE_IDNA_MAPPED, 1, 307}, - {LXB_UNICODE_IDNA_MAPPED, 1, 638}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3768}, - {LXB_UNICODE_IDNA_MAPPED, 1, 882}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3850}, - {LXB_UNICODE_IDNA_MAPPED, 1, 519}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3433}, - {LXB_UNICODE_IDNA_MAPPED, 1, 760}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4622}, - {LXB_UNICODE_IDNA_MAPPED, 2, 985}, - {LXB_UNICODE_IDNA_MAPPED, 1, 299}, - {LXB_UNICODE_IDNA_MAPPED, 1, 316}, - {LXB_UNICODE_IDNA_MAPPED, 1, 484}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4478}, - {LXB_UNICODE_IDNA_MAPPED, 1, 863}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3577}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3812}, - {LXB_UNICODE_IDNA_MAPPED, 1, 40}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1664}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1546}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2502}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5271}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2334}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3965}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4135}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1477}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3764}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4776}, - {LXB_UNICODE_IDNA_MAPPED, 1, 115}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2520}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3639}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3010}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2739}, - {LXB_UNICODE_IDNA_MAPPED, 1, 756}, - {LXB_UNICODE_IDNA_MAPPED, 2, 534}, - {LXB_UNICODE_IDNA_MAPPED, 1, 311}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1767}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3214}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3836}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2202}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4616}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4996}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5020}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2098}, - {LXB_UNICODE_IDNA_MAPPED, 1, 352}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5339}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2056}, - {LXB_UNICODE_IDNA_MAPPED, 1, 466}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1979}, - {LXB_UNICODE_IDNA_MAPPED, 1, 750}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3411}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3228}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4708}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4982}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4500}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3720}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3987}, - {LXB_UNICODE_IDNA_MAPPED, 2, 572}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1811}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2269}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1544}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4084}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5202}, - {LXB_UNICODE_IDNA_MAPPED, 1, 14}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1723}, - {LXB_UNICODE_IDNA_MAPPED, 1, 513}, - {LXB_UNICODE_IDNA_MAPPED, 1, 413}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2678}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3186}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4300}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3914}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4415}, - {LXB_UNICODE_IDNA_MAPPED, 1, 685}, - {LXB_UNICODE_IDNA_MAPPED, 1, 302}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1348}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4569}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1037}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4843}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3522}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4989}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4792}, - {LXB_UNICODE_IDNA_MAPPED, 1, 9}, - {LXB_UNICODE_IDNA_MAPPED, 1, 315}, - {LXB_UNICODE_IDNA_MAPPED, 1, 766}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1045}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2199}, - {LXB_UNICODE_IDNA_MAPPED, 1, 37}, - {LXB_UNICODE_IDNA_MAPPED, 1, 478}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3083}, - {LXB_UNICODE_IDNA_MAPPED, 1, 859}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3075}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4396}, - {LXB_UNICODE_IDNA_MAPPED, 1, 317}, - {LXB_UNICODE_IDNA_MAPPED, 1, 156}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3344}, - {LXB_UNICODE_IDNA_MAPPED, 1, 785}, - {LXB_UNICODE_IDNA_MAPPED, 1, 251}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4150}, - {LXB_UNICODE_IDNA_MAPPED, 1, 462}, - {LXB_UNICODE_IDNA_MAPPED, 1, 532}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5121}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3742}, - {LXB_UNICODE_IDNA_MAPPED, 1, 18}, - {LXB_UNICODE_IDNA_MAPPED, 1, 678}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5078}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3169}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3776}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2717}, - {LXB_UNICODE_IDNA_MAPPED, 1, 664}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1392}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5046}, - {LXB_UNICODE_IDNA_MAPPED, 1, 375}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1110}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3560}, - {LXB_UNICODE_IDNA_MAPPED, 1, 354}, - {LXB_UNICODE_IDNA_MAPPED, 1, 13}, - {LXB_UNICODE_IDNA_MAPPED, 1, 853}, - {LXB_UNICODE_IDNA_MAPPED, 1, 474}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3856}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2934}, - {LXB_UNICODE_IDNA_MAPPED, 1, 62}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4828}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1706}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3836}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3768}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2848}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3262}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4027}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2641}, - {LXB_UNICODE_IDNA_MAPPED, 1, 437}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5166}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2170}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4279}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3786}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4452}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5139}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1309}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4888}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3294}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3286}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1300}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3235}, - {LXB_UNICODE_IDNA_MAPPED, 1, 873}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4900}, - {LXB_UNICODE_IDNA_MAPPED, 2, 924}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5278}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5024}, - {LXB_UNICODE_IDNA_MAPPED, 1, 528}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1955}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1372}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2101}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1428}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3020}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5376}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1991}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4592}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3472}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1067}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4722}, - {LXB_UNICODE_IDNA_MAPPED, 1, 782}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5189}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3048}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5317}, - {LXB_UNICODE_IDNA_MAPPED, 1, 661}, - {LXB_UNICODE_IDNA_MAPPED, 1, 174}, - {LXB_UNICODE_IDNA_MAPPED, 1, 333}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3754}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1958}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3379}, - {LXB_UNICODE_IDNA_MAPPED, 1, 160}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2593}, - {LXB_UNICODE_IDNA_MAPPED, 1, 728}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4725}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4593}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3016}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3778}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1403}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3558}, - {LXB_UNICODE_IDNA_MAPPED, 1, 289}, - {LXB_UNICODE_IDNA_MAPPED, 1, 846}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3788}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3842}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3429}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3158}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5180}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1759}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1819}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5113}, - {LXB_UNICODE_IDNA_MAPPED, 1, 631}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4442}, - {LXB_UNICODE_IDNA_MAPPED, 1, 153}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1464}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4649}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3291}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2173}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3355}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3883}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1339}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2197}, - {LXB_UNICODE_IDNA_MAPPED, 1, 79}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3210}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3615}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1916}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1187}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3285}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3599}, - {LXB_UNICODE_IDNA_MAPPED, 1, 671}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1672}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1011}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4920}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5054}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4036}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4120}, - {LXB_UNICODE_IDNA_MAPPED, 1, 241}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4210}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1066}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3754}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3977}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4495}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4660}, - {LXB_UNICODE_IDNA_MAPPED, 1, 381}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3661}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1994}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1049}, - {LXB_UNICODE_IDNA_MAPPED, 2, 948}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5385}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1360}, - {LXB_UNICODE_IDNA_MAPPED, 1, 34}, - {LXB_UNICODE_IDNA_MAPPED, 1, 363}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2850}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3519}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3213}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3371}, - {LXB_UNICODE_IDNA_MAPPED, 1, 904}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5032}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3080}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2619}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3792}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1333}, - {LXB_UNICODE_IDNA_MAPPED, 2, 31}, - {LXB_UNICODE_IDNA_MAPPED, 2, 29}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3074}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1068}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3726}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4147}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2251}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2811}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1718}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1468}, - {LXB_UNICODE_IDNA_MAPPED, 1, 658}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5077}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4081}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1594}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3634}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2680}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4576}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1747}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2201}, - {LXB_UNICODE_IDNA_MAPPED, 1, 77}, - {LXB_UNICODE_IDNA_MAPPED, 1, 91}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4571}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3484}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5235}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3414}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4826}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5142}, - {LXB_UNICODE_IDNA_MAPPED, 3, 998}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1318}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1541}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4132}, - {LXB_UNICODE_IDNA_MAPPED, 1, 379}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3928}, - {LXB_UNICODE_IDNA_MAPPED, 1, 240}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5011}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5305}, - {LXB_UNICODE_IDNA_MAPPED, 1, 277}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1881}, - {LXB_UNICODE_IDNA_MAPPED, 1, 11}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2050}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3452}, - {LXB_UNICODE_IDNA_MAPPED, 1, 17}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3028}, - {LXB_UNICODE_IDNA_MAPPED, 1, 56}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4970}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4189}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5123}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1813}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2381}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3521}, - {LXB_UNICODE_IDNA_MAPPED, 1, 842}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3967}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3877}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3367}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3772}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4790}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3673}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2266}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2802}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1722}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5314}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5210}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4387}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4366}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3985}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3476}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4499}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1661}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3844}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4477}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5049}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2959}, - {LXB_UNICODE_IDNA_MAPPED, 1, 367}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2499}, - {LXB_UNICODE_IDNA_MAPPED, 1, 399}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4527}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3750}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1153}, - {LXB_UNICODE_IDNA_MAPPED, 1, 239}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4689}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2337}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1208}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1238}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3233}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5033}, - {LXB_UNICODE_IDNA_MAPPED, 1, 329}, - {LXB_UNICODE_IDNA_MAPPED, 1, 284}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4494}, - {LXB_UNICODE_IDNA_MAPPED, 2, 542}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4636}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3975}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5173}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3538}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4798}, - {LXB_UNICODE_IDNA_MAPPED, 1, 865}, - {LXB_UNICODE_IDNA_MAPPED, 1, 491}, - {LXB_UNICODE_IDNA_MAPPED, 1, 89}, - {LXB_UNICODE_IDNA_MAPPED, 1, 868}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3448}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2554}, - {LXB_UNICODE_IDNA_MAPPED, 1, 0}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2944}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1029}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1496}, - {LXB_UNICODE_IDNA_MAPPED, 1, 523}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2248}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1744}, - {LXB_UNICODE_IDNA_MAPPED, 1, 7}, - {LXB_UNICODE_IDNA_MAPPED, 1, 975}, - {LXB_UNICODE_IDNA_MAPPED, 1, 762}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3870}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1480}, - {LXB_UNICODE_IDNA_MAPPED, 1, 640}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3728}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3524}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3677}, - {LXB_UNICODE_IDNA_MAPPED, 1, 76}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3589}, - {LXB_UNICODE_IDNA_MAPPED, 1, 695}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1611}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3382}, - {LXB_UNICODE_IDNA_MAPPED, 1, 743}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4201}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2904}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3373}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4819}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3222}, - {LXB_UNICODE_IDNA_MAPPED, 1, 125}, - {LXB_UNICODE_IDNA_MAPPED, 1, 226}, - {LXB_UNICODE_IDNA_MAPPED, 1, 415}, - {LXB_UNICODE_IDNA_MAPPED, 1, 509}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3428}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4628}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3758}, - {LXB_UNICODE_IDNA_MAPPED, 1, 237}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3922}, - {LXB_UNICODE_IDNA_MAPPED, 1, 822}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5090}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3209}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3487}, - {LXB_UNICODE_IDNA_MAPPED, 1, 360}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2065}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4678}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3377}, - {LXB_UNICODE_IDNA_MAPPED, 1, 752}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4670}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5065}, - {LXB_UNICODE_IDNA_MAPPED, 1, 342}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1800}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5181}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5282}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1919}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1530}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2536}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2071}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3013}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2137}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1673}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2179}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3002}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5365}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5351}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2598}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3366}, - {LXB_UNICODE_IDNA_MAPPED, 1, 855}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3776}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4714}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2696}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1141}, - {LXB_UNICODE_IDNA_MAPPED, 2, 960}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3647}, - {LXB_UNICODE_IDNA_MAPPED, 1, 305}, - {LXB_UNICODE_IDNA_MAPPED, 1, 687}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3140}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3736}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3050}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4129}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1579}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1658}, - {LXB_UNICODE_IDNA_MAPPED, 1, 480}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3123}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2931}, - {LXB_UNICODE_IDNA_MAPPED, 1, 787}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4651}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3408}, - {LXB_UNICODE_IDNA_MAPPED, 1, 826}, - {LXB_UNICODE_IDNA_MAPPED, 1, 771}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2219}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2186}, - {LXB_UNICODE_IDNA_MAPPED, 1, 780}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3513}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3008}, - {LXB_UNICODE_IDNA_MAPPED, 1, 371}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1065}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4751}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5070}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1775}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5086}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1377}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1269}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4942}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1931}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5245}, - {LXB_UNICODE_IDNA_MAPPED, 1, 886}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1677}, - {LXB_UNICODE_IDNA_MAPPED, 1, 233}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3197}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3264}, - {LXB_UNICODE_IDNA_MAPPED, 1, 117}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3330}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3640}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1440}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1636}, - {LXB_UNICODE_IDNA_MAPPED, 2, 920}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4192}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3656}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3525}, - {LXB_UNICODE_IDNA_MAPPED, 1, 225}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2733}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1281}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3924}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5145}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1952}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1089}, - {LXB_UNICODE_IDNA_MAPPED, 2, 184}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2997}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3652}, - {LXB_UNICODE_IDNA_MAPPED, 1, 428}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4727}, - {LXB_UNICODE_IDNA_MAPPED, 1, 726}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3017}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4591}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3247}, - {LXB_UNICODE_IDNA_MAPPED, 2, 550}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3780}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4505}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1180}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1761}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1395}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5230}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4883}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3347}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4615}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3283}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4748}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2168}, - {LXB_UNICODE_IDNA_MAPPED, 1, 124}, - {LXB_UNICODE_IDNA_MAPPED, 1, 424}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2207}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3295}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1185}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3613}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3603}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1682}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2123}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4042}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1102}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4374}, - {LXB_UNICODE_IDNA_MAPPED, 1, 346}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1745}, - {LXB_UNICODE_IDNA_MAPPED, 1, 798}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1084}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3808}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4429}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4889}, - {LXB_UNICODE_IDNA_MAPPED, 1, 199}, - {LXB_UNICODE_IDNA_MAPPED, 1, 296}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4949}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2846}, - {LXB_UNICODE_IDNA_MAPPED, 1, 486}, - {LXB_UNICODE_IDNA_MAPPED, 1, 903}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4141}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1106}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2645}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3070}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4021}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1033}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3084}, - {LXB_UNICODE_IDNA_MAPPED, 1, 28}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4395}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3644}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4378}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1726}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5375}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2963}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1467}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5052}, - {LXB_UNICODE_IDNA_MAPPED, 1, 33}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1545}, - {LXB_UNICODE_IDNA_MAPPED, 1, 871}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1596}, - {LXB_UNICODE_IDNA_MAPPED, 2, 928}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2675}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3118}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1294}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4744}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2993}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2211}, - {LXB_UNICODE_IDNA_MAPPED, 2, 269}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3412}, - {LXB_UNICODE_IDNA_MAPPED, 1, 453}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2131}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1291}, - {LXB_UNICODE_IDNA_MAPPED, 1, 794}, - {LXB_UNICODE_IDNA_MAPPED, 2, 106}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5134}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5244}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4075}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5006}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1421}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1005}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1069}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2058}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1690}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3061}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1700}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1851}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1602}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4976}, - {LXB_UNICODE_IDNA_MAPPED, 1, 406}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3663}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1815}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4955}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4017}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4983}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3326}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4816}, - {LXB_UNICODE_IDNA_MAPPED, 1, 96}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3667}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5338}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5205}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2486}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4309}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4531}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4423}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3852}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2986}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4473}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1740}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5330}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3275}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1053}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3952}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3796}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1665}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3816}, - {LXB_UNICODE_IDNA_MAPPED, 1, 200}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1155}, - {LXB_UNICODE_IDNA_MAPPED, 1, 53}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4389}, - {LXB_UNICODE_IDNA_MAPPED, 1, 450}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5040}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5262}, - {LXB_UNICODE_IDNA_MAPPED, 1, 214}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1528}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2331}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1061}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4482}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4634}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3490}, - {LXB_UNICODE_IDNA_MAPPED, 1, 645}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2102}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3696}, - {LXB_UNICODE_IDNA_MAPPED, 1, 701}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3279}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5374}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4807}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4069}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3806}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5026}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2648}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2548}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1754}, - {LXB_UNICODE_IDNA_MAPPED, 1, 991}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4390}, - {LXB_UNICODE_IDNA_MAPPED, 1, 966}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4757}, - {LXB_UNICODE_IDNA_MAPPED, 1, 530}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4969}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5131}, - {LXB_UNICODE_IDNA_MAPPED, 1, 774}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1529}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2892}, - {LXB_UNICODE_IDNA_MAPPED, 1, 139}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3378}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1615}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3435}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4177}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1396}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4609}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3220}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4825}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2376}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3066}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4458}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2187}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1607}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5217}, - {LXB_UNICODE_IDNA_MAPPED, 1, 508}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3762}, - {LXB_UNICODE_IDNA_MAPPED, 1, 675}, - {LXB_UNICODE_IDNA_MAPPED, 1, 212}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5146}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2076}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3824}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2206}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1768}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3993}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5395}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5099}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3348}, - {LXB_UNICODE_IDNA_MAPPED, 1, 812}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4471}, - {LXB_UNICODE_IDNA_MAPPED, 1, 94}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2121}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3478}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1757}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1798}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5290}, - {LXB_UNICODE_IDNA_MAPPED, 1, 505}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4833}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4674}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4090}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2061}, - {LXB_UNICODE_IDNA_MAPPED, 1, 273}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1683}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5056}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2181}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3436}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5345}, - {LXB_UNICODE_IDNA_MAPPED, 1, 280}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3144}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5371}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4991}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1509}, - {LXB_UNICODE_IDNA_MAPPED, 3, 604}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1220}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4710}, - {LXB_UNICODE_IDNA_MAPPED, 1, 146}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2658}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4506}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5331}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4788}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2607}, - {LXB_UNICODE_IDNA_MAPPED, 2, 962}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5297}, - {LXB_UNICODE_IDNA_MAPPED, 1, 828}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2096}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1498}, - {LXB_UNICODE_IDNA_MAPPED, 1, 497}, - {LXB_UNICODE_IDNA_MAPPED, 1, 733}, - {LXB_UNICODE_IDNA_MAPPED, 1, 167}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1738}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1712}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2189}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3995}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4602}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1589}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3125}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2932}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4421}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4567}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3671}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4655}, - {LXB_UNICODE_IDNA_MAPPED, 1, 318}, - {LXB_UNICODE_IDNA_MAPPED, 2, 966}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 384}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 218}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 209}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 343}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 400}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 215}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 442}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 124}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 383}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 369}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 247}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 208}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 168}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 377}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 159}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 406}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 141}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 130}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 137}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 70}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 160}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 420}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 441}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 179}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 361}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 23}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 98}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 364}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 77}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 52}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 47}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 20}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 353}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 395}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 37}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 35}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 380}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 393}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 388}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 219}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 376}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 358}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 357}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 53}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 222}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 355}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 233}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 342}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 173}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 40}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 170}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 417}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 148}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 389}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 425}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 189}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 188}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 51}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 371}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 180}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 370}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 190}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 243}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 360}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 206}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 349}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 207}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 134}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 120}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 4}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 158}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 405}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 111}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 3}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 167}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 166}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 452}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 122}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 14}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 113}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 11}, + {0, LXB_UNICODE_QUICK__UNDEF, 0, 0, 0, 147} +}; + +static const lxb_unicode_idna_entry_t lxb_unicode_idna_entries[3951] = +{ + {0, 0, 0}, + {LXB_UNICODE_IDNA_VALID, 0, 0}, + {LXB_UNICODE_IDNA_DISALLOWED, 0, 0}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4880}, + {LXB_UNICODE_IDNA_MAPPED, 1, 12}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2238}, + {LXB_UNICODE_IDNA_MAPPED, 1, 301}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3672}, + {LXB_UNICODE_IDNA_MAPPED, 1, 709}, + {LXB_UNICODE_IDNA_MAPPED, 2, 952}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3773}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3791}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2092}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3055}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4399}, + {LXB_UNICODE_IDNA_MAPPED, 1, 310}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3751}, {LXB_UNICODE_IDNA_MAPPED, 1, 5337}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3276}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3054}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4743}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3515}, - {LXB_UNICODE_IDNA_MAPPED, 1, 653}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1771}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1779}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3352}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5105}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1379}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5253}, - {LXB_UNICODE_IDNA_MAPPED, 1, 746}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4934}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1687}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2214}, - {LXB_UNICODE_IDNA_MAPPED, 1, 419}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3187}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3163}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3251}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3804}, - {LXB_UNICODE_IDNA_MAPPED, 1, 778}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3529}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3332}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2943}, - {LXB_UNICODE_IDNA_MAPPED, 2, 819}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1634}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1400}, - {LXB_UNICODE_IDNA_MAPPED, 1, 835}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3062}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2706}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3167}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3268}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2886}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1603}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1001}, - {LXB_UNICODE_IDNA_MAPPED, 1, 145}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3708}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4549}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3331}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3530}, - {LXB_UNICODE_IDNA_MAPPED, 1, 81}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3810}, - {LXB_UNICODE_IDNA_MAPPED, 2, 263}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1631}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4581}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5170}, + {LXB_UNICODE_IDNA_MAPPED, 1, 26}, + {LXB_UNICODE_IDNA_IGNORED, 0, 0}, + {LXB_UNICODE_IDNA_MAPPED, 1, 34}, + {LXB_UNICODE_IDNA_MAPPED, 1, 16}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3673}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2196}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4400}, + {LXB_UNICODE_IDNA_MAPPED, 1, 206}, + {LXB_UNICODE_IDNA_MAPPED, 1, 300}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1718}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1324}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1751}, + {LXB_UNICODE_IDNA_MAPPED, 1, 763}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3205}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3076}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3025}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4957}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1597}, + {LXB_UNICODE_IDNA_MAPPED, 18, 4343}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2439}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3769}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1642}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5347}, + {LXB_UNICODE_IDNA_MAPPED, 2, 184}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5154}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1701}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3564}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4332}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5054}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5}, + {LXB_UNICODE_IDNA_MAPPED, 1, 631}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4505}, + {LXB_UNICODE_IDNA_MAPPED, 2, 574}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2808}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3208}, + {LXB_UNICODE_IDNA_MAPPED, 1, 20}, + {LXB_UNICODE_IDNA_MAPPED, 1, 15}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1722}, + {LXB_UNICODE_IDNA_MAPPED, 1, 6}, + {LXB_UNICODE_IDNA_MAPPED, 1, 862}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2085}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3759}, + {LXB_UNICODE_IDNA_MAPPED, 1, 391}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3464}, + {LXB_UNICODE_IDNA_MAPPED, 1, 317}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4018}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5038}, + {LXB_UNICODE_IDNA_MAPPED, 1, 871}, + {LXB_UNICODE_IDNA_MAPPED, 1, 27}, + {LXB_UNICODE_IDNA_MAPPED, 1, 442}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5064}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3955}, + {LXB_UNICODE_IDNA_MAPPED, 1, 296}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4993}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4756}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4420}, + {LXB_UNICODE_IDNA_MAPPED, 1, 343}, + {LXB_UNICODE_IDNA_MAPPED, 1, 23}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3218}, + {LXB_UNICODE_IDNA_MAPPED, 1, 62}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5282}, + {LXB_UNICODE_IDNA_MAPPED, 1, 0}, + {LXB_UNICODE_IDNA_MAPPED, 1, 79}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5130}, + {LXB_UNICODE_IDNA_MAPPED, 1, 258}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1472}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3729}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2079}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3839}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2131}, + {LXB_UNICODE_IDNA_MAPPED, 1, 33}, + {LXB_UNICODE_IDNA_MAPPED, 1, 681}, + {LXB_UNICODE_IDNA_MAPPED, 1, 837}, + {LXB_UNICODE_IDNA_MAPPED, 1, 512}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1081}, + {LXB_UNICODE_IDNA_MAPPED, 1, 304}, + {LXB_UNICODE_IDNA_MAPPED, 1, 667}, + {LXB_UNICODE_IDNA_MAPPED, 2, 938}, + {LXB_UNICODE_IDNA_MAPPED, 1, 761}, {LXB_UNICODE_IDNA_MAPPED, 1, 3269}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3402}, - {LXB_UNICODE_IDNA_MAPPED, 1, 626}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4525}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3514}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1510}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1424}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1820}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1780}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5287}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5398}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1378}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1576}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5096}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2446}, - {LXB_UNICODE_IDNA_MAPPED, 1, 430}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2660}, - {LXB_UNICODE_IDNA_MAPPED, 1, 178}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3503}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2977}, - {LXB_UNICODE_IDNA_MAPPED, 1, 401}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3007}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4804}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2183}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3166}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2704}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2816}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2190}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3124}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1457}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3554}, - {LXB_UNICODE_IDNA_MAPPED, 1, 175}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1401}, - {LXB_UNICODE_IDNA_MAPPED, 1, 910}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4656}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3055}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4839}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5303}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3252}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4959}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2180}, - {LXB_UNICODE_IDNA_MAPPED, 1, 642}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4779}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1367}, - {LXB_UNICODE_IDNA_MAPPED, 1, 496}, - {LXB_UNICODE_IDNA_MAPPED, 1, 220}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1688}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3145}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4827}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5361}, - {LXB_UNICODE_IDNA_MAPPED, 1, 409}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4766}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4713}, - {LXB_UNICODE_IDNA_MAPPED, 1, 319}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2609}, - {LXB_UNICODE_IDNA_MAPPED, 1, 82}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3353}, - {LXB_UNICODE_IDNA_MAPPED, 2, 611}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1772}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3181}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3812}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5320}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4875}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5223}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3660}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5080}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2078}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2064}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4677}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3481}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5107}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2990}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5152}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5251}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1795}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5034}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1758}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2952}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5172}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3432}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3936}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3520}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3280}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3886}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5030}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3515}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1410}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4432}, {LXB_UNICODE_IDNA_MAPPED, 1, 3376}, - {LXB_UNICODE_IDNA_MAPPED, 1, 157}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3381}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3217}, - {LXB_UNICODE_IDNA_MAPPED, 1, 455}, - {LXB_UNICODE_IDNA_MAPPED, 1, 291}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1522}, - {LXB_UNICODE_IDNA_MAPPED, 1, 54}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1169}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2901}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1616}, - {LXB_UNICODE_IDNA_MAPPED, 1, 439}, - {LXB_UNICODE_IDNA_MAPPED, 2, 267}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2983}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4459}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3098}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1288}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3760}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1049}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3664}, - {LXB_UNICODE_IDNA_MAPPED, 1, 448}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3736}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1162}, - {LXB_UNICODE_IDNA_MAPPED, 1, 221}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1022}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5300}, - {LXB_UNICODE_IDNA_MAPPED, 1, 128}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2542}, - {LXB_UNICODE_IDNA_MAPPED, 1, 83}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3991}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1126}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2996}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3940}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3162}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1716}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3067}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2694}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1063}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2277}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1608}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1602}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3641}, + {LXB_UNICODE_IDNA_MAPPED, 1, 233}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3361}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4002}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1069}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4770}, + {LXB_UNICODE_IDNA_MAPPED, 2, 928}, + {LXB_UNICODE_IDNA_MAPPED, 1, 302}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2730}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3082}, + {LXB_UNICODE_IDNA_MAPPED, 1, 14}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1091}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1330}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2593}, + {LXB_UNICODE_IDNA_MAPPED, 1, 10}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3136}, + {LXB_UNICODE_IDNA_MAPPED, 1, 624}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2998}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4494}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4495}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3723}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3382}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1791}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4552}, + {LXB_UNICODE_IDNA_MAPPED, 1, 153}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3645}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3456}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1501}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3439}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3757}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2263}, + {LXB_UNICODE_IDNA_MAPPED, 1, 293}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4983}, + {LXB_UNICODE_IDNA_MAPPED, 1, 21}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3193}, + {LXB_UNICODE_IDNA_MAPPED, 1, 852}, + {LXB_UNICODE_IDNA_MAPPED, 1, 457}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3939}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4824}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3765}, + {LXB_UNICODE_IDNA_MAPPED, 1, 890}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3144}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1555}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4621}, + {LXB_UNICODE_IDNA_MAPPED, 1, 24}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4662}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4893}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4540}, + {LXB_UNICODE_IDNA_MAPPED, 1, 7}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4643}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3880}, + {LXB_UNICODE_IDNA_MAPPED, 1, 17}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1345}, + {LXB_UNICODE_IDNA_MAPPED, 1, 18}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3574}, + {LXB_UNICODE_IDNA_MAPPED, 1, 797}, + {LXB_UNICODE_IDNA_MAPPED, 1, 13}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3644}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2006}, {LXB_UNICODE_IDNA_MAPPED, 3, 4180}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4608}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5182}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3426}, - {LXB_UNICODE_IDNA_MAPPED, 1, 359}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4631}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1415}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4852}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3308}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5233}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4532}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2317}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1354}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4605}, - {LXB_UNICODE_IDNA_MAPPED, 2, 952}, - {LXB_UNICODE_IDNA_MAPPED, 1, 518}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3854}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2182}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1793}, - {LXB_UNICODE_IDNA_MAPPED, 1, 901}, - {LXB_UNICODE_IDNA_MAPPED, 2, 987}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4476}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1666}, - {LXB_UNICODE_IDNA_MAPPED, 1, 891}, - {LXB_UNICODE_IDNA_MAPPED, 1, 358}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2496}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1420}, - {LXB_UNICODE_IDNA_MAPPED, 2, 934}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4019}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1478}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2133}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1560}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3099}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1017}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1716}, - {LXB_UNICODE_IDNA_MAPPED, 1, 368}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2212}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4011}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5304}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5015}, + {LXB_UNICODE_IDNA_MAPPED, 1, 11}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5417}, + {LXB_UNICODE_IDNA_MAPPED, 1, 9}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4392}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3528}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5142}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5390}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5128}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1979}, + {LXB_UNICODE_IDNA_MAPPED, 1, 77}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4078}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3293}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1541}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2658}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4716}, {LXB_UNICODE_IDNA_MAPPED, 1, 5002}, - {LXB_UNICODE_IDNA_MAPPED, 1, 272}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1527}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3138}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3934}, - {LXB_UNICODE_IDNA_MAPPED, 1, 810}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1098}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1739}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1500}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1595}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1703}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5197}, - {LXB_UNICODE_IDNA_MAPPED, 1, 130}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3409}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1804}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4572}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2666}, - {LXB_UNICODE_IDNA_MAPPED, 1, 806}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1321}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1004}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4946}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4393}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4749}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1629}, - {LXB_UNICODE_IDNA_MAPPED, 1, 731}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3085}, - {LXB_UNICODE_IDNA_MAPPED, 1, 356}, - {LXB_UNICODE_IDNA_MAPPED, 1, 712}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3073}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4856}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4431}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4377}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4144}, - {LXB_UNICODE_IDNA_MAPPED, 1, 830}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2840}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2692}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1577}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3161}, - {LXB_UNICODE_IDNA_MAPPED, 1, 722}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4371}, - {LXB_UNICODE_IDNA_MAPPED, 1, 908}, - {LXB_UNICODE_IDNA_MAPPED, 2, 954}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1198}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4418}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1416}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1725}, - {LXB_UNICODE_IDNA_MAPPED, 1, 385}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2940}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3744}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5384}, - {LXB_UNICODE_IDNA_MAPPED, 1, 245}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5161}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5241}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3544}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3648}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3609}, - {LXB_UNICODE_IDNA_MAPPED, 1, 833}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3500}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2159}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3296}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3215}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3601}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1727}, - {LXB_UNICODE_IDNA_MAPPED, 1, 816}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4904}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5259}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4039}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4612}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4957}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1523}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4726}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3774}, - {LXB_UNICODE_IDNA_MAPPED, 1, 168}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4813}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4589}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1746}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1640}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1943}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5171}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1023}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1760}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2060}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4673}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4093}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5050}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1557}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5261}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5274}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2111}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2538}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3637}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4902}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2018}, - {LXB_UNICODE_IDNA_MAPPED, 1, 323}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3477}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1027}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2950}, - {LXB_UNICODE_IDNA_MAPPED, 1, 669}, - {LXB_UNICODE_IDNA_MAPPED, 1, 162}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4734}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1762}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2147}, - {LXB_UNICODE_IDNA_MAPPED, 2, 930}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3944}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4891}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3683}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1535}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5137}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1249}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4629}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3692}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3714}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1474}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2198}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3874}, - {LXB_UNICODE_IDNA_MAPPED, 1, 325}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4815}, - {LXB_UNICODE_IDNA_MAPPED, 1, 799}, - {LXB_UNICODE_IDNA_MAPPED, 1, 629}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2042}, - {LXB_UNICODE_IDNA_MAPPED, 1, 234}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2889}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4936}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4865}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3591}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5117}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4411}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3180}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4977}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1451}, - {LXB_UNICODE_IDNA_MAPPED, 3, 980}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4397}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3748}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1817}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3794}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1743}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2457}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5335}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1830}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3999}, - {LXB_UNICODE_IDNA_MAPPED, 1, 312}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3027}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2288}, - {LXB_UNICODE_IDNA_MAPPED, 1, 292}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3536}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2774}, - {LXB_UNICODE_IDNA_MAPPED, 1, 249}, - {LXB_UNICODE_IDNA_MAPPED, 1, 257}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4483}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4391}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5043}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1190}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1367}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4701}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3234}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1071}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4985}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1385}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4553}, - {LXB_UNICODE_IDNA_MAPPED, 1, 324}, - {LXB_UNICODE_IDNA_MAPPED, 1, 337}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2736}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3202}, - {LXB_UNICODE_IDNA_MAPPED, 1, 349}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4685}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4276}, - {LXB_UNICODE_IDNA_MAPPED, 1, 159}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2034}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3561}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4584}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3796}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3395}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5000}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2215}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5058}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3188}, - {LXB_UNICODE_IDNA_MAPPED, 1, 143}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1514}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1553}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4948}, - {LXB_UNICODE_IDNA_MAPPED, 1, 180}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2107}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3387}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1438}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3038}, - {LXB_UNICODE_IDNA_MAPPED, 1, 682}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4738}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1563}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3465}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3338}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2975}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3455}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2979}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3685}, - {LXB_UNICODE_IDNA_MAPPED, 1, 690}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2824}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1025}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3828}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1455}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3407}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2770}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2216}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3997}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1578}, - {LXB_UNICODE_IDNA_MAPPED, 1, 306}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1659}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4428}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4123}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4381}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4884}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2224}, - {LXB_UNICODE_IDNA_MAPPED, 1, 197}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3655}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1177}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3959}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1432}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1117}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2470}, - {LXB_UNICODE_IDNA_MAPPED, 1, 398}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4507}, - {LXB_UNICODE_IDNA_MAPPED, 2, 113}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4709}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2926}, - {LXB_UNICODE_IDNA_MAPPED, 1, 803}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1842}, - {LXB_UNICODE_IDNA_MAPPED, 2, 538}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3948}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4417}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4412}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2205}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2631}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1827}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5328}, - {LXB_UNICODE_IDNA_MAPPED, 1, 725}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3069}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5042}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2454}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4138}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3708}, - {LXB_UNICODE_IDNA_MAPPED, 1, 755}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3442}, - {LXB_UNICODE_IDNA_MAPPED, 1, 483}, - {LXB_UNICODE_IDNA_MAPPED, 1, 864}, - {LXB_UNICODE_IDNA_MAPPED, 1, 493}, - {LXB_UNICODE_IDNA_MAPPED, 1, 355}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1997}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5394}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4665}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4427}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2937}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3932}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4702}, - {LXB_UNICODE_IDNA_MAPPED, 1, 880}, - {LXB_UNICODE_IDNA_MAPPED, 1, 521}, - {LXB_UNICODE_IDNA_MAPPED, 1, 761}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1729}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3389}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4005}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5192}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3359}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3650}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3880}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1647}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1763}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1731}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3282}, - {LXB_UNICODE_IDNA_MAPPED, 1, 414}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4648}, - {LXB_UNICODE_IDNA_MAPPED, 1, 652}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4937}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4225}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4441}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3430}, - {LXB_UNICODE_IDNA_MAPPED, 1, 246}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3241}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2362}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4733}, - {LXB_UNICODE_IDNA_MAPPED, 1, 751}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3494}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3157}, - {LXB_UNICODE_IDNA_MAPPED, 1, 378}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1390}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5028}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1644}, - {LXB_UNICODE_IDNA_MAPPED, 1, 432}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3035}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2590}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1408}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4753}, - {LXB_UNICODE_IDNA_MAPPED, 1, 740}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5372}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1297}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3260}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5136}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1192}, - {LXB_UNICODE_IDNA_MAPPED, 1, 854}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3826}, - {LXB_UNICODE_IDNA_MAPPED, 1, 473}, - {LXB_UNICODE_IDNA_MAPPED, 1, 313}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5039}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5103}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4380}, - {LXB_UNICODE_IDNA_MAPPED, 1, 232}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4472}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3712}, - {LXB_UNICODE_IDNA_MAPPED, 1, 895}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4706}, - {LXB_UNICODE_IDNA_MAPPED, 2, 589}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4694}, - {LXB_UNICODE_IDNA_MAPPED, 1, 662}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2768}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2481}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4313}, - {LXB_UNICODE_IDNA_MAPPED, 1, 479}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3103}, - {LXB_UNICODE_IDNA_MAPPED, 1, 858}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5216}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1564}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3959}, - {LXB_UNICODE_IDNA_MAPPED, 1, 655}, - {LXB_UNICODE_IDNA_MAPPED, 1, 786}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4414}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2758}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3185}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5359}, - {LXB_UNICODE_IDNA_MAPPED, 1, 765}, - {LXB_UNICODE_IDNA_MAPPED, 1, 772}, - {LXB_UNICODE_IDNA_MAPPED, 1, 676}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4686}, - {LXB_UNICODE_IDNA_MAPPED, 1, 193}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5132}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2032}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4968}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3766}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3404}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1854}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1386}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3451}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1691}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1896}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5295}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2398}, - {LXB_UNICODE_IDNA_MAPPED, 1, 364}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3256}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5143}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3312}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3635}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4072}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3950}, - {LXB_UNICODE_IDNA_MAPPED, 1, 504}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1552}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1808}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1749}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3638}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2106}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3339}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5187}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3930}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5059}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3636}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4802}, - {LXB_UNICODE_IDNA_MAPPED, 2, 104}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2786}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3508}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5083}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3523}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4898}, - {LXB_UNICODE_IDNA_MAPPED, 2, 528}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1750}, - {LXB_UNICODE_IDNA_MAPPED, 1, 205}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2664}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3024}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1805}, - {LXB_UNICODE_IDNA_MAPPED, 1, 195}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5067}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1689}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5195}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1257}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1536}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1454}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3309}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5169}, - {LXB_UNICODE_IDNA_MAPPED, 1, 917}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1724}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1737}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2273}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3989}, - {LXB_UNICODE_IDNA_MAPPED, 1, 101}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2960}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1047}, {LXB_UNICODE_IDNA_MAPPED, 1, 387}, - {LXB_UNICODE_IDNA_MAPPED, 1, 635}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4501}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4707}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1863}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5030}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3625}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1899}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1694}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2400}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3031}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3868}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3746}, - {LXB_UNICODE_IDNA_MAPPED, 1, 293}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4436}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3886}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3952}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1766}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2756}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1073}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3868}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2203}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4643}, - {LXB_UNICODE_IDNA_MAPPED, 1, 256}, - {LXB_UNICODE_IDNA_MAPPED, 1, 194}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5369}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3100}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3954}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3669}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1561}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1079}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4325}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2575}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3127}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5286}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3450}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3434}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5094}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1099}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1471}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2314}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4695}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5224}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3152}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3047}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2998}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3380}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1940}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1572}, - {LXB_UNICODE_IDNA_MAPPED, 1, 681}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4588}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4823}, - {LXB_UNICODE_IDNA_MAPPED, 1, 692}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3019}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4246}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3653}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1641}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3772}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4995}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1409}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1494}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5362}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1327}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3401}, - {LXB_UNICODE_IDNA_MAPPED, 1, 78}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4611}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4837}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3510}, - {LXB_UNICODE_IDNA_MAPPED, 3, 286}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3372}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1728}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2929}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1055}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2157}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5184}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3360}, - {LXB_UNICODE_IDNA_MAPPED, 1, 204}, - {LXB_UNICODE_IDNA_MAPPED, 1, 339}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3541}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4453}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3607}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4228}, - {LXB_UNICODE_IDNA_MAPPED, 1, 217}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3240}, - {LXB_UNICODE_IDNA_MAPPED, 1, 347}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2813}, - {LXB_UNICODE_IDNA_MAPPED, 1, 433}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4769}, + {LXB_UNICODE_IDNA_MAPPED, 1, 306}, + {LXB_UNICODE_IDNA_MAPPED, 1, 8}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3238}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3292}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4708}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1582}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4394}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5355}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4267}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4961}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3}, + {LXB_UNICODE_IDNA_MAPPED, 1, 760}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1810}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4596}, {LXB_UNICODE_IDNA_MAPPED, 1, 3261}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3174}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3742}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2949}, - {LXB_UNICODE_IDNA_MAPPED, 2, 918}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2587}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4666}, - {LXB_UNICODE_IDNA_MAPPED, 2, 609}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5249}, - {LXB_UNICODE_IDNA_MAPPED, 1, 247}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5036}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4370}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1391}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2838}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3156}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4440}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5129}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3343}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2204}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3877}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2633}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4647}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4580}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4392}, - {LXB_UNICODE_IDNA_MAPPED, 1, 320}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1465}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3390}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2965}, - {LXB_UNICODE_IDNA_MAPPED, 1, 643}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3866}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3962}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3013}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2609}, + {LXB_UNICODE_IDNA_MAPPED, 1, 271}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3753}, + {LXB_UNICODE_IDNA_MAPPED, 2, 572}, + {LXB_UNICODE_IDNA_MAPPED, 1, 40}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3264}, {LXB_UNICODE_IDNA_MAPPED, 1, 5311}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4642}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4510}, - {LXB_UNICODE_IDNA_MAPPED, 1, 660}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2223}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4216}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3735}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5075}, + {LXB_UNICODE_IDNA_MAPPED, 1, 25}, + {LXB_UNICODE_IDNA_MAPPED, 1, 22}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3994}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5367}, + {LXB_UNICODE_IDNA_MAPPED, 1, 332}, {LXB_UNICODE_IDNA_MAPPED, 1, 713}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4739}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4303}, - {LXB_UNICODE_IDNA_MAPPED, 1, 489}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1679}, - {LXB_UNICODE_IDNA_MAPPED, 1, 485}, - {LXB_UNICODE_IDNA_MAPPED, 1, 869}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1937}, - {LXB_UNICODE_IDNA_MAPPED, 1, 219}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3454}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2572}, - {LXB_UNICODE_IDNA_MAPPED, 1, 698}, - {LXB_UNICODE_IDNA_MAPPED, 1, 757}, - {LXB_UNICODE_IDNA_MAPPED, 1, 718}, - {LXB_UNICODE_IDNA_MAPPED, 1, 181}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4003}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3151}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3862}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2819}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1091}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2226}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1845}, - {LXB_UNICODE_IDNA_MAPPED, 2, 938}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1492}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5382}, - {LXB_UNICODE_IDNA_MAPPED, 1, 739}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2475}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1566}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3507}, - {LXB_UNICODE_IDNA_MAPPED, 1, 361}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1423}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3464}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1511}, - {LXB_UNICODE_IDNA_MAPPED, 1, 382}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3740}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4261}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3191}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3775}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3662}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1440}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2340}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3481}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2201}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5329}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5162}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3663}, + {LXB_UNICODE_IDNA_MAPPED, 1, 87}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1651}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3988}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1928}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3415}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3719}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1475}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1681}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5291}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3227}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4741}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3799}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2929}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1160}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1768}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1770}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3224}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2223}, + {LXB_UNICODE_IDNA_MAPPED, 1, 825}, {LXB_UNICODE_IDNA_MAPPED, 1, 5082}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4974}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3203}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2217}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1630}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1443}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2764}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4582}, - {LXB_UNICODE_IDNA_MAPPED, 1, 511}, - {LXB_UNICODE_IDNA_MAPPED, 2, 41}, - {LXB_UNICODE_IDNA_MAPPED, 1, 228}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1040}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3564}, - {LXB_UNICODE_IDNA_MAPPED, 1, 793}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3406}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3627}, - {LXB_UNICODE_IDNA_MAPPED, 1, 112}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3394}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4550}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4785}, - {LXB_UNICODE_IDNA_MAPPED, 1, 770}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5239}, - {LXB_UNICODE_IDNA_MAPPED, 2, 964}, - {LXB_UNICODE_IDNA_MAPPED, 1, 767}, - {LXB_UNICODE_IDNA_MAPPED, 1, 99}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4630}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4486}, - {LXB_UNICODE_IDNA_MAPPED, 1, 374}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2044}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4207}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3765}, + {LXB_UNICODE_IDNA_MAPPED, 1, 149}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3783}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1762}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2096}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3892}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2216}, + {LXB_UNICODE_IDNA_MAPPED, 1, 297}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2205}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2995}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1017}, + {LXB_UNICODE_IDNA_MAPPED, 1, 315}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2400}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3050}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3841}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4856}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3509}, {LXB_UNICODE_IDNA_MAPPED, 1, 860}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3446}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2280}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4403}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2792}, - {LXB_UNICODE_IDNA_MAPPED, 2, 585}, - {LXB_UNICODE_IDNA_MAPPED, 1, 116}, - {LXB_UNICODE_IDNA_MAPPED, 1, 666}, - {LXB_UNICODE_IDNA_MAPPED, 1, 789}, - {LXB_UNICODE_IDNA_MAPPED, 1, 893}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3489}, - {LXB_UNICODE_IDNA_MAPPED, 1, 108}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1060}, + {LXB_UNICODE_IDNA_MAPPED, 1, 360}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5110}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3962}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1281}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1710}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3081}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3676}, + {LXB_UNICODE_IDNA_MAPPED, 1, 711}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4818}, + {LXB_UNICODE_IDNA_MAPPED, 2, 530}, + {LXB_UNICODE_IDNA_MAPPED, 2, 968}, + {LXB_UNICODE_IDNA_MAPPED, 1, 80}, + {LXB_UNICODE_IDNA_MAPPED, 1, 157}, + {LXB_UNICODE_IDNA_MAPPED, 1, 175}, + {LXB_UNICODE_IDNA_MAPPED, 1, 445}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3643}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4968}, + {LXB_UNICODE_IDNA_MAPPED, 1, 274}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3688}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3873}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2966}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4522}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5313}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1147}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1703}, + {LXB_UNICODE_IDNA_MAPPED, 1, 28}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5098}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1389}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4384}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1468}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4875}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4057}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4153}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4721}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4764}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2852}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3493}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3658}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1672}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1351}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2750}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4863}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4531}, + {LXB_UNICODE_IDNA_MAPPED, 1, 88}, + {LXB_UNICODE_IDNA_MAPPED, 1, 54}, + {LXB_UNICODE_IDNA_MAPPED, 1, 728}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3431}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2026}, + {LXB_UNICODE_IDNA_MAPPED, 1, 313}, + {LXB_UNICODE_IDNA_MAPPED, 1, 340}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3392}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1367}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1824}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4489}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2788}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4048}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3630}, {LXB_UNICODE_IDNA_MAPPED, 2, 2540}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4672}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1324}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1212}, - {LXB_UNICODE_IDNA_MAPPED, 2, 562}, - {LXB_UNICODE_IDNA_MAPPED, 1, 475}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3153}, + {LXB_UNICODE_IDNA_MAPPED, 1, 881}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1367}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3348}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3366}, + {LXB_UNICODE_IDNA_MAPPED, 1, 735}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4722}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4042}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1123}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3819}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4443}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1552}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1571}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4657}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3394}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2486}, + {LXB_UNICODE_IDNA_MAPPED, 1, 739}, + {LXB_UNICODE_IDNA_MAPPED, 1, 298}, + {LXB_UNICODE_IDNA_MAPPED, 1, 246}, + {LXB_UNICODE_IDNA_MAPPED, 1, 493}, + {LXB_UNICODE_IDNA_MAPPED, 1, 657}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3102}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2774}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3827}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3797}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1815}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1061}, + {LXB_UNICODE_IDNA_MAPPED, 1, 311}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4783}, + {LXB_UNICODE_IDNA_MAPPED, 1, 873}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3045}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4558}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4501}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1045}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3516}, + {LXB_UNICODE_IDNA_MAPPED, 1, 793}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1059}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1739}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1232}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3088}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5069}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1306}, + {LXB_UNICODE_IDNA_MAPPED, 1, 60}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4776}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3883}, + {LXB_UNICODE_IDNA_MAPPED, 1, 277}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4754}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4222}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4753}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1766}, + {LXB_UNICODE_IDNA_MAPPED, 1, 700}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3739}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4965}, + {LXB_UNICODE_IDNA_MAPPED, 1, 514}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2926}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5350}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5316}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1377}, + {LXB_UNICODE_IDNA_MAPPED, 1, 256}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3771}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3221}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5051}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2179}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1063}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1741}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3686}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3779}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1765}, + {LXB_UNICODE_IDNA_MAPPED, 1, 665}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3483}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3646}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1653}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2241}, + {LXB_UNICODE_IDNA_MAPPED, 1, 19}, + {LXB_UNICODE_IDNA_MAPPED, 2, 948}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3813}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2108}, + {LXB_UNICODE_IDNA_MAPPED, 1, 809}, + {LXB_UNICODE_IDNA_MAPPED, 1, 354}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2207}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4406}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2309}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1220}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5090}, + {LXB_UNICODE_IDNA_MAPPED, 1, 688}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3731}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1683}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3559}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3588}, + {LXB_UNICODE_IDNA_MAPPED, 1, 205}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2204}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3982}, + {LXB_UNICODE_IDNA_MAPPED, 1, 117}, + {LXB_UNICODE_IDNA_MAPPED, 1, 376}, + {LXB_UNICODE_IDNA_MAPPED, 1, 791}, + {LXB_UNICODE_IDNA_MAPPED, 1, 507}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4649}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3563}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1510}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5286}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3833}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4988}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3216}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5079}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3511}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4105}, + {LXB_UNICODE_IDNA_MAPPED, 1, 96}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3299}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1585}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3010}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3674}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1588}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4607}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5071}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4463}, + {LXB_UNICODE_IDNA_MAPPED, 1, 58}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4520}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3809}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5223}, + {LXB_UNICODE_IDNA_MAPPED, 1, 109}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4674}, + {LXB_UNICODE_IDNA_MAPPED, 2, 954}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3397}, + {LXB_UNICODE_IDNA_MAPPED, 1, 696}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4886}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4389}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4382}, + {LXB_UNICODE_IDNA_MAPPED, 1, 427}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4671}, {LXB_UNICODE_IDNA_MAPPED, 1, 1558}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1491}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5003}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5301}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2113}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1483}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4249}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1191}, - {LXB_UNICODE_IDNA_MAPPED, 1, 334}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3906}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4869}, - {LXB_UNICODE_IDNA_MAPPED, 2, 615}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2778}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1068}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3743}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4063}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3400}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2686}, + {LXB_UNICODE_IDNA_MAPPED, 1, 638}, + {LXB_UNICODE_IDNA_MAPPED, 1, 521}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2578}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4977}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3129}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2798}, + {LXB_UNICODE_IDNA_MAPPED, 1, 135}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4963}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4033}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1745}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1675}, + {LXB_UNICODE_IDNA_MAPPED, 1, 204}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2756}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4534}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4374}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1830}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5205}, + {LXB_UNICODE_IDNA_MAPPED, 1, 384}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4602}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5044}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3626}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1813}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3436}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3336}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3155}, + {LXB_UNICODE_IDNA_MAPPED, 1, 308}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2762}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2835}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1678}, + {LXB_UNICODE_IDNA_MAPPED, 1, 356}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4537}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3434}, + {LXB_UNICODE_IDNA_MAPPED, 1, 333}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5405}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3640}, {LXB_UNICODE_IDNA_MAPPED, 1, 1573}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3216}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3734}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3534}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3438}, - {LXB_UNICODE_IDNA_MAPPED, 1, 707}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3633}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4988}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3889}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5265}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2015}, - {LXB_UNICODE_IDNA_MAPPED, 1, 781}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1794}, - {LXB_UNICODE_IDNA_MAPPED, 1, 716}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1742}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5109}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2149}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1330}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4099}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3304}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5232}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3313}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1590}, - {LXB_UNICODE_IDNA_MAPPED, 1, 133}, - {LXB_UNICODE_IDNA_MAPPED, 1, 122}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5102}, - {LXB_UNICODE_IDNA_MAPPED, 1, 650}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1702}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4568}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1809}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1019}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3324}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1748}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5072}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3642}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1486}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3690}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5188}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1449}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1158}, - {LXB_UNICODE_IDNA_MAPPED, 1, 423}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2492}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2199}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3721}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5149}, + {LXB_UNICODE_IDNA_MAPPED, 1, 431}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3927}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4642}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5080}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5123}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2202}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3520}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1608}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1465}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4421}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3699}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3053}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1383}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1503}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3735}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3725}, + {LXB_UNICODE_IDNA_MAPPED, 1, 817}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3517}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3317}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4373}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1605}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5058}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3823}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2115}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1565}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3741}, {LXB_UNICODE_IDNA_MAPPED, 1, 1720}, - {LXB_UNICODE_IDNA_MAPPED, 1, 177}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1869}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1893}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1696}, - {LXB_UNICODE_IDNA_MAPPED, 1, 888}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4057}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3889}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2963}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1110}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1064}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2288}, + {LXB_UNICODE_IDNA_MAPPED, 1, 790}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3036}, + {LXB_UNICODE_IDNA_MAPPED, 1, 305}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5013}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5363}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1342}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3566}, + {LXB_UNICODE_IDNA_MAPPED, 2, 550}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4141}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1214}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5166}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5333}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3038}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4819}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3466}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1424}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3354}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1645}, + {LXB_UNICODE_IDNA_MAPPED, 1, 884}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4014}, + {LXB_UNICODE_IDNA_MAPPED, 1, 661}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5024}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3202}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1744}, + {LXB_UNICODE_IDNA_MAPPED, 2, 962}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1755}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1099}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2554}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1648}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1022}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2970}, + {LXB_UNICODE_IDNA_MAPPED, 1, 425}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4320}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1073}, {LXB_UNICODE_IDNA_MAPPED, 1, 2097}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2396}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3137}, - {LXB_UNICODE_IDNA_MAPPED, 1, 429}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5023}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3030}, - {LXB_UNICODE_IDNA_MAPPED, 1, 353}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3104}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4464}, - {LXB_UNICODE_IDNA_MAPPED, 1, 386}, - {LXB_UNICODE_IDNA_MAPPED, 2, 186}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5294}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1565}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1643}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3883}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2213}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3979}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3116}, - {LXB_UNICODE_IDNA_MAPPED, 1, 727}, - {LXB_UNICODE_IDNA_MAPPED, 2, 548}, - {LXB_UNICODE_IDNA_MAPPED, 1, 182}, - {LXB_UNICODE_IDNA_MAPPED, 6, 2744}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5349}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2135}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4333}, - {LXB_UNICODE_IDNA_MAPPED, 1, 166}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3785}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1066}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2168}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3671}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3108}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1106}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1747}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3690}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3267}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1382}, + {LXB_UNICODE_IDNA_MAPPED, 2, 576}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4748}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3378}, + {LXB_UNICODE_IDNA_MAPPED, 1, 807}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4391}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2596}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4090}, + {LXB_UNICODE_IDNA_MAPPED, 1, 299}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2824}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4279}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1704}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1817}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4905}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1804}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4605}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4591}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5361}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1288}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4630}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4084}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1435}, + {LXB_UNICODE_IDNA_MAPPED, 1, 733}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4702}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5252}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5245}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5216}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2024}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3441}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4637}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1443}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3191}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2015}, + {LXB_UNICODE_IDNA_MAPPED, 2, 35}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3907}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3753}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3418}, + {LXB_UNICODE_IDNA_MAPPED, 1, 370}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3941}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4454}, + {LXB_UNICODE_IDNA_MAPPED, 2, 188}, + {LXB_UNICODE_IDNA_MAPPED, 1, 243}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3150}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3459}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4435}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3654}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3147}, + {LXB_UNICODE_IDNA_MAPPED, 1, 417}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1912}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5026}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1478}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3462}, + {LXB_UNICODE_IDNA_MAPPED, 1, 519}, + {LXB_UNICODE_IDNA_MAPPED, 1, 89}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3388}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4008}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4482}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3530}, + {LXB_UNICODE_IDNA_MAPPED, 1, 362}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1973}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2593}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1543}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3385}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2675}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3955}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5020}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1191}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2381}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2992}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2865}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3283}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3705}, + {LXB_UNICODE_IDNA_MAPPED, 1, 83}, + {LXB_UNICODE_IDNA_MAPPED, 1, 145}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4920}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4378}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3101}, + {LXB_UNICODE_IDNA_MAPPED, 1, 371}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3234}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1566}, {LXB_UNICODE_IDNA_MAPPED, 1, 410}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5060}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1650}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1100}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5158}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3710}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3444}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1507}, + {LXB_UNICODE_IDNA_DEVIATION, 0, 0}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1430}, + {LXB_UNICODE_IDNA_MAPPED, 1, 344}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3622}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4700}, + {LXB_UNICODE_IDNA_MAPPED, 1, 148}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1785}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1691}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1514}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1413}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4901}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4626}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5182}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4697}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1869}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2951}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4547}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2715}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4416}, + {LXB_UNICODE_IDNA_MAPPED, 1, 178}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4448}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1547}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2991}, + {LXB_UNICODE_IDNA_MAPPED, 1, 374}, + {LXB_UNICODE_IDNA_MAPPED, 1, 722}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3383}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1141}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2643}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5055}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2182}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1492}, + {LXB_UNICODE_IDNA_MAPPED, 1, 326}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4168}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5092}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3534}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4564}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4478}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2954}, + {LXB_UNICODE_IDNA_MAPPED, 1, 528}, + {LXB_UNICODE_IDNA_MAPPED, 1, 314}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5394}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1636}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3344}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3652}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1194}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1291}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1779}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3067}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3235}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4907}, + {LXB_UNICODE_IDNA_MAPPED, 2, 597}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3867}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2454}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3311}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3346}, + {LXB_UNICODE_IDNA_MAPPED, 1, 355}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4577}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1782}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3070}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4666}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4829}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1042}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3937}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5001}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4012}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2939}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5118}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3028}, + {LXB_UNICODE_IDNA_MAPPED, 1, 37}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3747}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1616}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4726}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5144}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2422}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1591}, {LXB_UNICODE_IDNA_MAPPED, 3, 2359}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3694}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1792}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4693}, - {LXB_UNICODE_IDNA_MAPPED, 1, 366}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4561}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3493}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5326}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4598}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1582}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3014}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4721}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3654}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1645}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1407}, - {LXB_UNICODE_IDNA_MAPPED, 1, 390}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1755}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4847}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3400}, - {LXB_UNICODE_IDNA_MAPPED, 3, 599}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1502}, - {LXB_UNICODE_IDNA_MAPPED, 1, 121}, - {LXB_UNICODE_IDNA_MAPPED, 1, 67}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3236}, - {LXB_UNICODE_IDNA_MAPPED, 1, 454}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3358}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2080}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1732}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2090}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3643}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3593}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5149}, - {LXB_UNICODE_IDNA_MAPPED, 1, 502}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4222}, - {LXB_UNICODE_IDNA_MAPPED, 1, 51}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4024}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1731}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3695}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1117}, + {LXB_UNICODE_IDNA_MAPPED, 1, 82}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3522}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4426}, {LXB_UNICODE_IDNA_MAPPED, 1, 440}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4403}, + {LXB_UNICODE_IDNA_MAPPED, 1, 676}, + {LXB_UNICODE_IDNA_MAPPED, 1, 167}, + {LXB_UNICODE_IDNA_MAPPED, 1, 742}, + {LXB_UNICODE_IDNA_MAPPED, 1, 879}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1818}, + {LXB_UNICODE_IDNA_MAPPED, 1, 100}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1724}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2901}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5023}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2190}, + {LXB_UNICODE_IDNA_MAPPED, 1, 163}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3248}, + {LXB_UNICODE_IDNA_MAPPED, 1, 915}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3047}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4192}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4975}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1464}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1610}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3600}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5420}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5180}, + {LXB_UNICODE_IDNA_MAPPED, 1, 252}, + {LXB_UNICODE_IDNA_MAPPED, 1, 907}, + {LXB_UNICODE_IDNA_MAPPED, 1, 780}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4108}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4936}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4903}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3181}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3247}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1404}, + {LXB_UNICODE_IDNA_MAPPED, 1, 672}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1426}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3665}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4982}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5203}, + {LXB_UNICODE_IDNA_MAPPED, 2, 602}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2119}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2692}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1692}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1309}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5213}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5190}, + {LXB_UNICODE_IDNA_MAPPED, 1, 526}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1484}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3745}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4827}, + {LXB_UNICODE_IDNA_MAPPED, 1, 162}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3492}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3787}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5238}, {LXB_UNICODE_IDNA_MAPPED, 1, 897}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4664}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4938}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3858}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4503}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1132}, - {LXB_UNICODE_IDNA_MAPPED, 1, 202}, - {LXB_UNICODE_IDNA_MAPPED, 2, 940}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2865}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3170}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1730}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4548}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2629}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1628}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3112}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4750}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2200}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2966}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3956}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5209}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3981}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1773}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5316}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4443}, - {LXB_UNICODE_IDNA_MAPPED, 2, 968}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4512}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4465}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3354}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5341}, - {LXB_UNICODE_IDNA_MAPPED, 1, 488}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4416}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1370}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5293}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2826}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3253}, - {LXB_UNICODE_IDNA_MAPPED, 1, 699}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4932}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3119}, - {LXB_UNICODE_IDNA_MAPPED, 1, 668}, - {LXB_UNICODE_IDNA_MAPPED, 1, 467}, - {LXB_UNICODE_IDNA_MAPPED, 1, 841}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4007}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3552}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1402}, - {LXB_UNICODE_IDNA_MAPPED, 1, 274}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5167}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2880}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4794}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2362}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1515}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3461}, - {LXB_UNICODE_IDNA_MAPPED, 1, 874}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2443}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1303}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2662}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5390}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4886}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3004}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1507}, - {LXB_UNICODE_IDNA_MAPPED, 1, 376}, - {LXB_UNICODE_IDNA_MAPPED, 1, 295}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2083}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1719}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5053}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1435}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2094}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3456}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3136}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4524}, - {LXB_UNICODE_IDNA_MAPPED, 1, 137}, - {LXB_UNICODE_IDNA_MAPPED, 1, 634}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4554}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3042}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5101}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3193}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2220}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3201}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4565}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1442}, - {LXB_UNICODE_IDNA_MAPPED, 1, 877}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3327}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1587}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4601}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4871}, - {LXB_UNICODE_IDNA_MAPPED, 1, 913}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3566}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4267}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4060}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5009}, - {LXB_UNICODE_IDNA_MAPPED, 1, 807}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2292}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3803}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3469}, + {LXB_UNICODE_IDNA_MAPPED, 1, 503}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1759}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3974}, + {LXB_UNICODE_IDNA_MAPPED, 2, 41}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4393}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2520}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3650}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3691}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2062}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1198}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2840}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1079}, + {LXB_UNICODE_IDNA_MAPPED, 1, 316}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3125}, + {LXB_UNICODE_IDNA_MAPPED, 1, 679}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4837}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3648}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3402}, + {LXB_UNICODE_IDNA_MAPPED, 1, 396}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4309}, {LXB_UNICODE_IDNA_MAPPED, 1, 3307}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5138}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4488}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3425}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4183}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2968}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5203}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1609}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2868}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2788}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2370}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3068}, - {LXB_UNICODE_IDNA_MAPPED, 1, 165}, - {LXB_UNICODE_IDNA_MAPPED, 2, 950}, - {LXB_UNICODE_IDNA_MAPPED, 1, 135}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3111}, - {LXB_UNICODE_IDNA_MAPPED, 1, 829}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4469}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5378}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5309}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3784}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4069}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5015}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4852}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4459}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1727}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3114}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4676}, + {LXB_UNICODE_IDNA_MAPPED, 2, 942}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2981}, + {LXB_UNICODE_IDNA_MAPPED, 1, 784}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5256}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1318}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4586}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1796}, + {LXB_UNICODE_IDNA_MAPPED, 1, 61}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3925}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1206}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2764}, + {LXB_UNICODE_IDNA_MAPPED, 1, 991}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4804}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3323}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3638}, + {LXB_UNICODE_IDNA_MAPPED, 1, 110}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4473}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2505}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4380}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1577}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5368}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4438}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3016}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3096}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4470}, + {LXB_UNICODE_IDNA_MAPPED, 1, 364}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2623}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3639}, + {LXB_UNICODE_IDNA_MAPPED, 1, 129}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3159}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3220}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1743}, + {LXB_UNICODE_IDNA_MAPPED, 2, 934}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3869}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3551}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5375}, {LXB_UNICODE_IDNA_MAPPED, 1, 2946}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1202}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1214}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5021}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1482}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4001}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3896}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3097}, - {LXB_UNICODE_IDNA_MAPPED, 1, 136}, - {LXB_UNICODE_IDNA_MAPPED, 2, 576}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4562}, - {LXB_UNICODE_IDNA_MAPPED, 2, 570}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1583}, - {LXB_UNICODE_IDNA_MAPPED, 1, 418}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3440}, - {LXB_UNICODE_IDNA_MAPPED, 1, 351}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4979}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3902}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3938}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4066}, - {LXB_UNICODE_IDNA_MAPPED, 1, 817}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3281}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5393}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5270}, - {LXB_UNICODE_IDNA_MAPPED, 1, 745}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4914}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3320}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1503}, - {LXB_UNICODE_IDNA_MAPPED, 1, 684}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5044}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2003}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1752}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2145}, - {LXB_UNICODE_IDNA_MAPPED, 1, 471}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2091}, - {LXB_UNICODE_IDNA_MAPPED, 1, 837}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3482}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4105}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1534}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5226}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2070}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2139}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1842}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1519}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1428}, + {LXB_UNICODE_IDNA_MAPPED, 1, 257}, + {LXB_UNICODE_IDNA_MAPPED, 1, 747}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3815}, + {LXB_UNICODE_IDNA_MAPPED, 1, 727}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3502}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5250}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2317}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5016}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5321}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1643}, + {LXB_UNICODE_IDNA_MAPPED, 1, 718}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4781}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3373}, + {LXB_UNICODE_IDNA_MAPPED, 1, 372}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1657}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3485}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4839}, + {LXB_UNICODE_IDNA_MAPPED, 1, 69}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5294}, + {LXB_UNICODE_IDNA_MAPPED, 1, 783}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3767}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1098}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3242}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4234}, + {LXB_UNICODE_IDNA_MAPPED, 1, 312}, + {LXB_UNICODE_IDNA_MAPPED, 1, 66}, {LXB_UNICODE_IDNA_MAPPED, 1, 5280}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5255}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1531}, - {LXB_UNICODE_IDNA_MAPPED, 2, 265}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2012}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2987}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5055}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4470}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5238}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5387}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4102}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5165}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3497}, - {LXB_UNICODE_IDNA_MAPPED, 1, 516}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3904}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2373}, - {LXB_UNICODE_IDNA_MAPPED, 1, 425}, - {LXB_UNICODE_IDNA_MAPPED, 3, 47}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1786}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3424}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4809}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4610}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1638}, - {LXB_UNICODE_IDNA_MAPPED, 1, 648}, - {LXB_UNICODE_IDNA_MAPPED, 2, 591}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1610}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3439}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3306}, - {LXB_UNICODE_IDNA_MAPPED, 2, 619}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5247}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4454}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1707}, + {LXB_UNICODE_IDNA_MAPPED, 1, 378}, + {LXB_UNICODE_IDNA_MAPPED, 1, 652}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5254}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5127}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5409}, + {LXB_UNICODE_IDNA_MAPPED, 1, 217}, + {LXB_UNICODE_IDNA_MAPPED, 1, 670}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3422}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3851}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5152}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3674}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3666}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1454}, + {LXB_UNICODE_IDNA_MAPPED, 1, 118}, + {LXB_UNICODE_IDNA_MAPPED, 1, 686}, + {LXB_UNICODE_IDNA_MAPPED, 1, 781}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3655}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3849}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1736}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2141}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4249}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1526}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2211}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3474}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2210}, + {LXB_UNICODE_IDNA_MAPPED, 1, 181}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1395}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3513}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3213}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2936}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5219}, + {LXB_UNICODE_IDNA_MAPPED, 1, 645}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5373}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4735}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5097}, + {LXB_UNICODE_IDNA_MAPPED, 1, 365}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4614}, + {LXB_UNICODE_IDNA_MAPPED, 1, 303}, + {LXB_UNICODE_IDNA_MAPPED, 1, 382}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2071}, + {LXB_UNICODE_IDNA_MAPPED, 1, 151}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3707}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2916}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1687}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3019}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1893}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3711}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3933}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4379}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4513}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3660}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2844}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3699}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3171}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3172}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3123}, + {LXB_UNICODE_IDNA_MAPPED, 1, 325}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3031}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1029}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5287}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2942}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2637}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1190}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1245}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3325}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4093}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1101}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1967}, + {LXB_UNICODE_IDNA_MAPPED, 1, 160}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1799}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3253}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4843}, + {LXB_UNICODE_IDNA_MAPPED, 1, 475}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4526}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4467}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2631}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4611}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3328}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1802}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1764}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4589}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5276}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2978}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3134}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3923}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2770}, + {LXB_UNICODE_IDNA_MAPPED, 2, 562}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3120}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1733}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5066}, + {LXB_UNICODE_IDNA_MAPPED, 1, 84}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4690}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1015}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4439}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5351}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5040}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3187}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3117}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1730}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3986}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2530}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3331}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1534}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3913}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1303}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2068}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3701}, + {LXB_UNICODE_IDNA_MAPPED, 1, 833}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2046}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2048}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2536}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4375}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2065}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3636}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3007}, {LXB_UNICODE_IDNA_MAPPED, 1, 5122}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4519}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1446}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1753}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3790}, - {LXB_UNICODE_IDNA_MAPPED, 1, 72}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2427}, - {LXB_UNICODE_IDNA_MAPPED, 1, 408}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5012}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2296}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4797}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2782}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1704}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4487}, - {LXB_UNICODE_IDNA_MAPPED, 1, 373}, - {LXB_UNICODE_IDNA_MAPPED, 1, 461}, - {LXB_UNICODE_IDNA_MAPPED, 1, 847}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3096}, - {LXB_UNICODE_IDNA_MAPPED, 1, 391}, - {LXB_UNICODE_IDNA_MAPPED, 1, 500}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4555}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2709}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3192}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5092}, - {LXB_UNICODE_IDNA_MAPPED, 1, 438}, - {LXB_UNICODE_IDNA_MAPPED, 1, 50}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2883}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2079}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3168}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2327}, + {LXB_UNICODE_IDNA_MAPPED, 1, 910}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1629}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4998}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1005}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1560}, + {LXB_UNICODE_IDNA_MAPPED, 1, 324}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1664}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5148}, + {LXB_UNICODE_IDNA_MAPPED, 1, 414}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5260}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5404}, + {LXB_UNICODE_IDNA_MAPPED, 2, 113}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1401}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2188}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2147}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3855}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4258}, + {LXB_UNICODE_IDNA_MAPPED, 1, 453}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3507}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4794}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3479}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5274}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1851}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4822}, + {LXB_UNICODE_IDNA_MAPPED, 1, 67}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2153}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3861}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4431}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1398}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4126}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1419}, + {LXB_UNICODE_IDNA_MAPPED, 1, 895}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1451}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3477}, + {LXB_UNICODE_IDNA_MAPPED, 1, 485}, + {LXB_UNICODE_IDNA_MAPPED, 1, 723}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3972}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5100}, + {LXB_UNICODE_IDNA_MAPPED, 1, 416}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3680}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1714}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5379}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1748}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4979}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2212}, + {LXB_UNICODE_IDNA_MAPPED, 2, 568}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4410}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1169}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3211}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3455}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3839}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3851}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4737}, + {LXB_UNICODE_IDNA_MAPPED, 1, 350}, + {LXB_UNICODE_IDNA_MAPPED, 2, 207}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5388}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3711}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2073}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3167}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3229}, + {LXB_UNICODE_IDNA_MAPPED, 1, 917}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5415}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5265}, + {LXB_UNICODE_IDNA_MAPPED, 1, 906}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1630}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5340}, + {LXB_UNICODE_IDNA_MAPPED, 2, 542}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3064}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1776}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3745}, + {LXB_UNICODE_IDNA_MAPPED, 1, 834}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2475}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1269}, + {LXB_UNICODE_IDNA_MAPPED, 1, 422}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3341}, + {LXB_UNICODE_IDNA_MAPPED, 1, 644}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3367}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5307}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2464}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3130}, + {LXB_UNICODE_IDNA_MAPPED, 1, 421}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3197}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3420}, + {LXB_UNICODE_IDNA_MAPPED, 1, 532}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3139}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4569}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2185}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3668}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1495}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4579}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2036}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1787}, + {LXB_UNICODE_IDNA_MAPPED, 1, 447}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3535}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2180}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1165}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4624}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1498}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1539}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2187}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2988}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4915}, + {LXB_UNICODE_IDNA_MAPPED, 1, 690}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2183}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2720}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1700}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5334}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1991}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5209}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1520}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3166}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2648}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3657}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4518}, + {LXB_UNICODE_IDNA_MAPPED, 1, 239}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5235}, + {LXB_UNICODE_IDNA_MAPPED, 1, 698}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1049}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5106}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1253}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4694}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4476}, + {LXB_UNICODE_IDNA_MAPPED, 1, 836}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4931}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1908}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4948}, {LXB_UNICODE_IDNA_MAPPED, 1, 3421}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3550}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4585}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3565}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3303}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3393}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5284}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3198}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3651}, + {LXB_UNICODE_IDNA_MAPPED, 1, 867}, + {LXB_UNICODE_IDNA_MAPPED, 3, 41}, + {LXB_UNICODE_IDNA_MAPPED, 1, 215}, + {LXB_UNICODE_IDNA_MAPPED, 1, 386}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2874}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3004}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1062}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2101}, + {LXB_UNICODE_IDNA_MAPPED, 1, 369}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3871}, + {LXB_UNICODE_IDNA_MAPPED, 1, 470}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4572}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3278}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4664}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1952}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2883}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1363}, {LXB_UNICODE_IDNA_MAPPED, 1, 5019}, - {LXB_UNICODE_IDNA_MAPPED, 1, 161}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3263}, + {LXB_UNICODE_IDNA_MAPPED, 1, 456}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3450}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4450}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1753}, + {LXB_UNICODE_IDNA_MAPPED, 1, 706}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1523}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5424}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3488}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2427}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1593}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1481}, + {LXB_UNICODE_IDNA_MAPPED, 1, 156}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3959}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2219}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1698}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4010}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2706}, {LXB_UNICODE_IDNA_MAPPED, 2, 1171}, - {LXB_UNICODE_IDNA_MAPPED, 1, 457}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1516}, - {LXB_UNICODE_IDNA_MAPPED, 1, 851}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4943}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1437}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1774}, - {LXB_UNICODE_IDNA_MAPPED, 1, 395}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4752}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2084}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4542}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4386}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1490}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2974}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5200}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3457}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2980}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1622}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2185}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2828}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4923}, - {LXB_UNICODE_IDNA_MAPPED, 2, 524}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4650}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4566}, - {LXB_UNICODE_IDNA_MAPPED, 1, 171}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1588}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3092}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3049}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3139}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3659}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2095}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4523}, - {LXB_UNICODE_IDNA_MAPPED, 1, 909}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4511}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3176}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1120}, - {LXB_UNICODE_IDNA_MAPPED, 1, 223}, - {LXB_UNICODE_IDNA_MAPPED, 1, 449}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2439}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3807}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4916}, + {LXB_UNICODE_IDNA_MAPPED, 1, 850}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4682}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5006}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2192}, + {LXB_UNICODE_IDNA_MAPPED, 2, 613}, + {LXB_UNICODE_IDNA_MAPPED, 2, 926}, + {LXB_UNICODE_IDNA_MAPPED, 2, 259}, + {LXB_UNICODE_IDNA_MAPPED, 2, 106}, + {LXB_UNICODE_IDNA_MAPPED, 1, 121}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2698}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1695}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4867}, + {LXB_UNICODE_IDNA_MAPPED, 1, 74}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3408}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3059}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5233}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3273}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1461}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1406}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4207}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3664}, + {LXB_UNICODE_IDNA_MAPPED, 1, 169}, + {LXB_UNICODE_IDNA_MAPPED, 1, 454}, + {LXB_UNICODE_IDNA_MAPPED, 1, 636}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5207}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1669}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4833}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2123}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3831}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4198}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1624}, + {LXB_UNICODE_IDNA_MAPPED, 1, 413}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4729}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5173}, + {LXB_UNICODE_IDNA_MAPPED, 1, 115}, + {LXB_UNICODE_IDNA_MAPPED, 1, 650}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5094}, + {LXB_UNICODE_IDNA_MAPPED, 1, 477}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2373}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1737}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3504}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4732}, + {LXB_UNICODE_IDNA_MAPPED, 1, 827}, + {LXB_UNICODE_IDNA_MAPPED, 1, 281}, + {LXB_UNICODE_IDNA_MAPPED, 1, 216}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2366}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3863}, {LXB_UNICODE_IDNA_MAPPED, 1, 1508}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2596}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2193}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4646}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3755}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1372}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2955}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4720}, + {LXB_UNICODE_IDNA_MAPPED, 1, 878}, + {LXB_UNICODE_IDNA_MAPPED, 1, 285}, + {LXB_UNICODE_IDNA_MAPPED, 1, 358}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3582}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2982}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1686}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5380}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3427}, + {LXB_UNICODE_IDNA_MAPPED, 1, 357}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4717}, + {LXB_UNICODE_IDNA_MAPPED, 2, 987}, + {LXB_UNICODE_IDNA_MAPPED, 1, 230}, + {LXB_UNICODE_IDNA_MAPPED, 2, 611}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4635}, + {LXB_UNICODE_IDNA_MAPPED, 1, 745}, + {LXB_UNICODE_IDNA_MAPPED, 1, 901}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3659}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3296}, + {LXB_UNICODE_IDNA_MAPPED, 1, 196}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3391}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1970}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1067}, + {LXB_UNICODE_IDNA_MAPPED, 1, 737}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5228}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2384}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1527}, + {LXB_UNICODE_IDNA_MAPPED, 1, 821}, + {LXB_UNICODE_IDNA_MAPPED, 1, 409}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1113}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3871}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4434}, + {LXB_UNICODE_IDNA_MAPPED, 1, 177}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1049}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4773}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1135}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1312}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3085}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2598}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3135}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4592}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1805}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4913}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5010}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5401}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4498}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4703}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1434}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4555}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5261}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3829}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3374}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4051}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1656}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3362}, + {LXB_UNICODE_IDNA_MAPPED, 1, 165}, + {LXB_UNICODE_IDNA_MAPPED, 2, 819}, + {LXB_UNICODE_IDNA_MAPPED, 1, 411}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3190}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3365}, + {LXB_UNICODE_IDNA_MAPPED, 1, 731}, + {LXB_UNICODE_IDNA_MAPPED, 3, 604}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1294}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2669}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3769}, + {LXB_UNICODE_IDNA_MAPPED, 2, 0}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1370}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4369}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2102}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4231}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3996}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1423}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3553}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5292}, + {LXB_UNICODE_IDNA_MAPPED, 1, 668}, + {LXB_UNICODE_IDNA_MAPPED, 1, 359}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5065}, + {LXB_UNICODE_IDNA_MAPPED, 1, 505}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3158}, + {LXB_UNICODE_IDNA_MAPPED, 1, 289}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2283}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5017}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5319}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1474}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1336}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1706}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1839}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5039}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5029}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2098}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3039}, + {LXB_UNICODE_IDNA_MAPPED, 1, 373}, {LXB_UNICODE_IDNA_MAPPED, 2, 607}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5381}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4800}, - {LXB_UNICODE_IDNA_MAPPED, 1, 322}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3942}, - {LXB_UNICODE_IDNA_MAPPED, 1, 85}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3504}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3670}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4518}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3079}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2621}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2424}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5334}, - {LXB_UNICODE_IDNA_MAPPED, 1, 703}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3173}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3133}, - {LXB_UNICODE_IDNA_MAPPED, 1, 362}, - {LXB_UNICODE_IDNA_MAPPED, 1, 580}, - {LXB_UNICODE_IDNA_MAPPED, 1, 65}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4661}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3946}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2936}, - {LXB_UNICODE_IDNA_MAPPED, 1, 624}, - {LXB_UNICODE_IDNA_MAPPED, 1, 879}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4213}, - {LXB_UNICODE_IDNA_MAPPED, 1, 885}, - {LXB_UNICODE_IDNA_MAPPED, 1, 805}, - {LXB_UNICODE_IDNA_MAPPED, 1, 915}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1265}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1002}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3651}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3291}, + {LXB_UNICODE_IDNA_MAPPED, 1, 439}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3265}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3266}, + {LXB_UNICODE_IDNA_MAPPED, 1, 231}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3288}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2502}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1576}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1019}, + {LXB_UNICODE_IDNA_MAPPED, 1, 908}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3204}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3077}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5008}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4408}, + {LXB_UNICODE_IDNA_MAPPED, 1, 726}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1384}, + {LXB_UNICODE_IDNA_MAPPED, 1, 904}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3051}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3052}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3027}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3080}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4328}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5196}, + {LXB_UNICODE_IDNA_MAPPED, 1, 501}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3892}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1529}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3775}, + {LXB_UNICODE_IDNA_MAPPED, 1, 674}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2162}, + {LXB_UNICODE_IDNA_MAPPED, 1, 441}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3228}, + {LXB_UNICODE_IDNA_MAPPED, 1, 323}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4844}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4398}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1455}, + {LXB_UNICODE_IDNA_MAPPED, 1, 899}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3524}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4746}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2095}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3781}, {LXB_UNICODE_IDNA_MAPPED, 1, 5175}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5156}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1733}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3290}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1627}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5248}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3239}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4547}, - {LXB_UNICODE_IDNA_MAPPED, 1, 150}, - {LXB_UNICODE_IDNA_MAPPED, 1, 422}, - {LXB_UNICODE_IDNA_MAPPED, 1, 811}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4504}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1787}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1425}, - {LXB_UNICODE_IDNA_MAPPED, 2, 275}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1404}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5237}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1646}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1495}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5352}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1226}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4690}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1194}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4329}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4526}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3128}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3704}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5084}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3091}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1660}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4801}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4144}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4658}, + {LXB_UNICODE_IDNA_MAPPED, 1, 748}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1721}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4990}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3817}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3624}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2546}, + {LXB_UNICODE_IDNA_MAPPED, 3, 47}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1758}, + {LXB_UNICODE_IDNA_MAPPED, 1, 108}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3737}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4661}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4622}, + {LXB_UNICODE_IDNA_MAPPED, 2, 946}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3789}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4834}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3351}, + {LXB_UNICODE_IDNA_MAPPED, 1, 75}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3468}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3379}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4490}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4810}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2572}, + {LXB_UNICODE_IDNA_MAPPED, 1, 983}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4493}, {LXB_UNICODE_IDNA_MAPPED, 1, 3105}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5212}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5323}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1475}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2754}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3325}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4962}, - {LXB_UNICODE_IDNA_MAPPED, 2, 970}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2384}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3420}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4964}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2971}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1884}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2048}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1791}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1866}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3302}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1695}, - {LXB_UNICODE_IDNA_MAPPED, 1, 694}, - {LXB_UNICODE_IDNA_MAPPED, 1, 747}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1422}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4039}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2796}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5087}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1202}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4601}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4519}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4765}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1811}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1723}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4606}, + {LXB_UNICODE_IDNA_MAPPED, 1, 408}, + {LXB_UNICODE_IDNA_MAPPED, 1, 640}, {LXB_UNICODE_IDNA_MAPPED, 1, 3314}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3864}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1182}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5186}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5425}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4381}, + {LXB_UNICODE_IDNA_MAPPED, 1, 746}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1489}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4768}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4967}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3178}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2800}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3569}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4865}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5392}, + {LXB_UNICODE_IDNA_MAPPED, 1, 646}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4906}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1297}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2999}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1746}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5081}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1652}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5146}, + {LXB_UNICODE_IDNA_MAPPED, 1, 380}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5402}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1637}, + {LXB_UNICODE_IDNA_MAPPED, 8, 4361}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5120}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3886}, + {LXB_UNICODE_IDNA_MAPPED, 1, 50}, + {LXB_UNICODE_IDNA_MAPPED, 1, 90}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3209}, + {LXB_UNICODE_IDNA_MAPPED, 1, 499}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3498}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2927}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4951}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5047}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2234}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4417}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1546}, + {LXB_UNICODE_IDNA_MAPPED, 1, 654}, + {LXB_UNICODE_IDNA_MAPPED, 2, 944}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5300}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5085}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3533}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4401}, + {LXB_UNICODE_IDNA_MAPPED, 1, 799}, + {LXB_UNICODE_IDNA_MAPPED, 1, 678}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1738}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5328}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2224}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3223}, + {LXB_UNICODE_IDNA_MAPPED, 1, 684}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1087}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3827}, + {LXB_UNICODE_IDNA_MAPPED, 1, 438}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4276}, + {LXB_UNICODE_IDNA_MAPPED, 1, 702}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2106}, + {LXB_UNICODE_IDNA_MAPPED, 1, 663}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1872}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4297}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4755}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3260}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5267}, + {LXB_UNICODE_IDNA_MAPPED, 1, 782}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5341}, + {LXB_UNICODE_IDNA_MAPPED, 1, 720}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5074}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2245}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1567}, + {LXB_UNICODE_IDNA_MAPPED, 1, 172}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4855}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3011}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3443}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1506}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5188}, + {LXB_UNICODE_IDNA_MAPPED, 1, 474}, + {LXB_UNICODE_IDNA_MAPPED, 1, 740}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1821}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2025}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2542}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2198}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1129}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3152}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3970}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4723}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5113}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3349}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2932}, + {LXB_UNICODE_IDNA_MAPPED, 1, 64}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5214}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2481}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1570}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4533}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1674}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2754}, + {LXB_UNICODE_IDNA_MAPPED, 1, 468}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3821}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3272}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4603}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4762}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1814}, + {LXB_UNICODE_IDNA_MAPPED, 1, 911}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1300}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3042}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3103}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3500}, + {LXB_UNICODE_IDNA_MAPPED, 1, 883}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5103}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3433}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3919}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1496}, + {LXB_UNICODE_IDNA_MAPPED, 1, 171}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4683}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2784}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4487}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3312}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3389}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2581}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3957}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3409}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3058}, + {LXB_UNICODE_IDNA_MAPPED, 1, 476}, + {LXB_UNICODE_IDNA_MAPPED, 2, 534}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2590}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1032}, + {LXB_UNICODE_IDNA_MAPPED, 1, 769}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4054}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4655}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3396}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2802}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1554}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3151}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3463}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1458}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4670}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5296}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1011}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4075}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2985}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1584}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1680}, + {LXB_UNICODE_IDNA_MAPPED, 1, 484}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2958}, + {LXB_UNICODE_IDNA_MAPPED, 1, 352}, + {LXB_UNICODE_IDNA_MAPPED, 2, 526}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5323}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1065}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5091}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2109}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3815}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3508}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1609}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1988}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3414}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2113}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2962}, + {LXB_UNICODE_IDNA_MAPPED, 1, 415}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2203}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5346}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3537}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1438}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5272}, + {LXB_UNICODE_IDNA_MAPPED, 1, 348}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3138}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1378}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4921}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4270}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4857}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2221}, + {LXB_UNICODE_IDNA_MAPPED, 1, 291}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1381}, + {LXB_UNICODE_IDNA_MAPPED, 2, 564}, + {LXB_UNICODE_IDNA_MAPPED, 2, 918}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4213}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5315}, + {LXB_UNICODE_IDNA_MAPPED, 1, 307}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3196}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1740}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2251}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5096}, + {LXB_UNICODE_IDNA_MAPPED, 1, 232}, + {LXB_UNICODE_IDNA_MAPPED, 1, 848}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3480}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1650}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1649}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5171}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4644}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4539}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4006}, + {LXB_UNICODE_IDNA_MAPPED, 1, 471}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2684}, + {LXB_UNICODE_IDNA_MAPPED, 1, 642}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3359}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3384}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3577}, + {LXB_UNICODE_IDNA_MAPPED, 1, 669}, + {LXB_UNICODE_IDNA_MAPPED, 1, 152}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5133}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1919}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2678}, + {LXB_UNICODE_IDNA_MAPPED, 1, 835}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4675}, + {LXB_UNICODE_IDNA_MAPPED, 1, 383}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4436}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5061}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3527}, + {LXB_UNICODE_IDNA_MAPPED, 1, 319}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3458}, + {LXB_UNICODE_IDNA_MAPPED, 2, 538}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1559}, {LXB_UNICODE_IDNA_MAPPED, 1, 1540}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5093}, - {LXB_UNICODE_IDNA_MAPPED, 1, 815}, - {LXB_UNICODE_IDNA_MAPPED, 1, 420}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1810}, - {LXB_UNICODE_IDNA_MAPPED, 1, 341}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5150}, - {LXB_UNICODE_IDNA_MAPPED, 1, 75}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3117}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1623}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5285}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5178}, - {LXB_UNICODE_IDNA_MAPPED, 1, 834}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4543}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1741}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4195}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3294}, + {LXB_UNICODE_IDNA_MAPPED, 1, 381}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3401}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3945}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3146}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2393}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4388}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3405}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4771}, {LXB_UNICODE_IDNA_MAPPED, 1, 4638}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2910}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5017}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3232}, - {LXB_UNICODE_IDNA_MAPPED, 1, 68}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1601}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3060}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1035}, - {LXB_UNICODE_IDNA_MAPPED, 1, 129}, - {LXB_UNICODE_IDNA_MAPPED, 1, 902}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3384}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4986}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4165}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2027}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2560}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5157}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3083}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2603}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4641}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3909}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3020}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2012}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1807}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4926}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4395}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4705}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4496}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4553}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1420}, + {LXB_UNICODE_IDNA_MAPPED, 1, 469}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1500}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3437}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3438}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2826}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4714}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5396}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1261}, + {LXB_UNICODE_IDNA_MAPPED, 1, 473}, + {LXB_UNICODE_IDNA_MAPPED, 1, 635}, + {LXB_UNICODE_IDNA_MAPPED, 2, 546}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2832}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1679}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4909}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4538}, + {LXB_UNICODE_IDNA_MAPPED, 1, 510}, + {LXB_UNICODE_IDNA_MAPPED, 1, 158}, + {LXB_UNICODE_IDNA_MAPPED, 1, 849}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3406}, + {LXB_UNICODE_IDNA_MAPPED, 1, 682}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4752}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2090}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1767}, + {LXB_UNICODE_IDNA_MAPPED, 1, 704}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2170}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4999}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2178}, + {LXB_UNICODE_IDNA_MAPPED, 2, 922}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4749}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1644}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2100}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3791}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3074}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3024}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5034}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3188}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1375}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1638}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5059}, + {LXB_UNICODE_IDNA_MAPPED, 1, 346}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4980}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3254}, + {LXB_UNICODE_IDNA_MAPPED, 2, 930}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4387}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1386}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1617}, + {LXB_UNICODE_IDNA_MAPPED, 1, 851}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2224}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1589}, + {LXB_UNICODE_IDNA_MAPPED, 1, 52}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5178}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4525}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3897}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4610}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5338}, + {LXB_UNICODE_IDNA_MAPPED, 1, 483}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3733}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2081}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2948}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1471}, + {LXB_UNICODE_IDNA_MAPPED, 6, 2303}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2208}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1491}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5263}, + {LXB_UNICODE_IDNA_MAPPED, 1, 229}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1604}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1153}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1339}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5014}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1102}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2292}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5192}, + {LXB_UNICODE_IDNA_MAPPED, 1, 697}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1071}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4147}, + {LXB_UNICODE_IDNA_MAPPED, 1, 455}, + {LXB_UNICODE_IDNA_MAPPED, 1, 648}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5204}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3184}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4923}, + {LXB_UNICODE_IDNA_MAPPED, 2, 956}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3449}, + {LXB_UNICODE_IDNA_MAPPED, 1, 823}, + {LXB_UNICODE_IDNA_MAPPED, 2, 581}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4442}, + {LXB_UNICODE_IDNA_MAPPED, 1, 97}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3799}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5161}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3865}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2776}, {LXB_UNICODE_IDNA_MAPPED, 1, 248}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5264}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5198}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2067}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4680}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3486}, + {LXB_UNICODE_IDNA_MAPPED, 1, 629}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1482}, + {LXB_UNICODE_IDNA_MAPPED, 1, 749}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1093}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4020}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5164}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5331}, + {LXB_UNICODE_IDNA_MAPPED, 1, 85}, + {LXB_UNICODE_IDNA_MAPPED, 1, 858}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3980}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5212}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3521}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4156}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1462}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2904}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2850}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5227}, + {LXB_UNICODE_IDNA_MAPPED, 1, 633}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1622}, + {LXB_UNICODE_IDNA_MAPPED, 1, 762}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2913}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5304}, {LXB_UNICODE_IDNA_MAPPED, 1, 5108}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1550}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2104}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5234}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4947}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4668}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3800}, - {LXB_UNICODE_IDNA_MAPPED, 1, 723}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2766}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2488}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4960}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1285}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3585}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1735}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4976}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3697}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3949}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1732}, + {LXB_UNICODE_IDNA_MAPPED, 1, 330}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1613}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1390}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4428}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3503}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3596}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5176}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3343}, + {LXB_UNICODE_IDNA_MAPPED, 1, 367}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2215}, + {LXB_UNICODE_IDNA_MAPPED, 1, 250}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3066}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1778}, + {LXB_UNICODE_IDNA_MAPPED, 2, 924}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4871}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2405}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1521}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4306}, + {LXB_UNICODE_IDNA_MAPPED, 2, 591}, + {LXB_UNICODE_IDNA_MAPPED, 1, 622}, + {LXB_UNICODE_IDNA_MAPPED, 1, 375}, + {LXB_UNICODE_IDNA_MAPPED, 2, 587}, + {LXB_UNICODE_IDNA_MAPPED, 1, 98}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4475}, + {LXB_UNICODE_IDNA_MAPPED, 1, 716}, + {LXB_UNICODE_IDNA_MAPPED, 1, 203}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2032}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1931}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2952}, + {LXB_UNICODE_IDNA_MAPPED, 1, 798}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2078}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3717}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1771}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4571}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4928}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2989}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4740}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1053}, + {LXB_UNICODE_IDNA_MAPPED, 1, 489}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4663}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3164}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4551}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1515}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4919}, + {LXB_UNICODE_IDNA_MAPPED, 1, 692}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4696}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3616}, + {LXB_UNICODE_IDNA_MAPPED, 1, 443}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3368}, + {LXB_UNICODE_IDNA_MAPPED, 2, 940}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4548}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2337}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1518}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3005}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4597}, {LXB_UNICODE_IDNA_MAPPED, 1, 4474}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4626}, - {LXB_UNICODE_IDNA_MAPPED, 2, 926}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3718}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3274}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2195}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2184}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3822}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4606}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3224}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4973}, - {LXB_UNICODE_IDNA_MAPPED, 1, 881}, - {LXB_UNICODE_IDNA_MAPPED, 1, 639}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4712}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3814}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3675}, - {LXB_UNICODE_IDNA_MAPPED, 1, 492}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3012}, - {LXB_UNICODE_IDNA_MAPPED, 1, 176}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1416}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1757}, + {LXB_UNICODE_IDNA_MAPPED, 1, 336}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4623}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5317}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4709}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4123}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1946}, + {LXB_UNICODE_IDNA_MAPPED, 1, 214}, {LXB_UNICODE_IDNA_MAPPED, 1, 5302}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2532}, - {LXB_UNICODE_IDNA_MAPPED, 2, 530}, - {LXB_UNICODE_IDNA_MAPPED, 1, 52}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1802}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2025}, - {LXB_UNICODE_IDNA_MAPPED, 1, 445}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3346}, - {LXB_UNICODE_IDNA_MAPPED, 1, 169}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4731}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4892}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5240}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1675}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3280}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1070}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2612}, + {LXB_UNICODE_IDNA_MAPPED, 1, 796}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1662}, + {LXB_UNICODE_IDNA_MAPPED, 1, 331}, + {LXB_UNICODE_IDNA_MAPPED, 3, 995}, + {LXB_UNICODE_IDNA_MAPPED, 1, 729}, {LXB_UNICODE_IDNA_MAPPED, 1, 5383}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1925}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3501}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3681}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2224}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5163}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4419}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2063}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4676}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2951}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1681}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5073}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5260}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3480}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2898}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1656}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5134}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4177}, + {LXB_UNICODE_IDNA_MAPPED, 1, 764}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3656}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1025}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2656}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5411}, + {LXB_UNICODE_IDNA_MAPPED, 1, 861}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5137}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3210}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4412}, + {LXB_UNICODE_IDNA_MAPPED, 1, 826}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1144}, + {LXB_UNICODE_IDNA_MAPPED, 1, 57}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4617}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1035}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1716}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2938}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3877}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3230}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1452}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4402}, {LXB_UNICODE_IDNA_MAPPED, 1, 5153}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3846}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1631}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4004}, + {LXB_UNICODE_IDNA_MAPPED, 1, 859}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1485}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3491}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5279}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5117}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2266}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1561}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3489}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1158}, + {LXB_UNICODE_IDNA_MAPPED, 1, 127}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3547}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5244}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5251}, + {LXB_UNICODE_IDNA_MAPPED, 1, 893}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3801}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5360}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2727}, {LXB_UNICODE_IDNA_MAPPED, 1, 3246}, - {LXB_UNICODE_IDNA_MAPPED, 2, 0}, - {LXB_UNICODE_IDNA_MAPPED, 1, 70}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4814}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1394}, - {LXB_UNICODE_IDNA_MAPPED, 1, 843}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2643}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2448}, - {LXB_UNICODE_IDNA_MAPPED, 2, 261}, - {LXB_UNICODE_IDNA_MAPPED, 1, 663}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4716}, - {LXB_UNICODE_IDNA_MAPPED, 1, 896}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5310}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4432}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3468}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3732}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1821}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3009}, + {LXB_UNICODE_IDNA_MAPPED, 1, 627}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1360}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2972}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1854}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3243}, + {LXB_UNICODE_IDNA_MAPPED, 1, 824}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5284}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1790}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4582}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3667}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4930}, + {LXB_UNICODE_IDNA_MAPPED, 1, 795}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5412}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3837}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2129}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4511}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3921}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1357}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1887}, + {LXB_UNICODE_IDNA_MAPPED, 1, 280}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5139}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3574}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4701}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5268}, + {LXB_UNICODE_IDNA_MAPPED, 1, 495}, + {LXB_UNICODE_IDNA_MAPPED, 1, 338}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5385}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1409}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5342}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1445}, + {LXB_UNICODE_IDNA_MAPPED, 1, 754}, + {LXB_UNICODE_IDNA_MAPPED, 1, 191}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3330}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3100}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3018}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3284}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3915}, + {LXB_UNICODE_IDNA_MAPPED, 1, 444}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4757}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3097}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2050}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4469}, + {LXB_UNICODE_IDNA_MAPPED, 1, 491}, + {LXB_UNICODE_IDNA_MAPPED, 1, 126}, + {LXB_UNICODE_IDNA_MAPPED, 1, 342}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1752}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3413}, + {LXB_UNICODE_IDNA_MAPPED, 1, 295}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2979}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1596}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2436}, + {LXB_UNICODE_IDNA_MAPPED, 1, 56}, {LXB_UNICODE_IDNA_MAPPED, 1, 3071}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1315}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1135}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1783}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3173}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2084}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3757}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3347}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3310}, + {LXB_UNICODE_IDNA_MAPPED, 1, 736}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5046}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4506}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3122}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2811}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4688}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1277}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4096}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1532}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4853}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2195}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4457}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4679}, + {LXB_UNICODE_IDNA_MAPPED, 1, 294}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1354}, + {LXB_UNICODE_IDNA_MAPPED, 1, 446}, + {LXB_UNICODE_IDNA_MAPPED, 1, 875}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4481}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1699}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5378}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2709}, + {LXB_UNICODE_IDNA_MAPPED, 1, 423}, + {LXB_UNICODE_IDNA_MAPPED, 1, 125}, {LXB_UNICODE_IDNA_MAPPED, 1, 2209}, - {LXB_UNICODE_IDNA_MAPPED, 1, 623}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2941}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3045}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3398}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2727}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4285}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4881}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3021}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1735}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4803}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4595}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4475}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5397}, - {LXB_UNICODE_IDNA_MAPPED, 2, 946}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2492}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1964}, - {LXB_UNICODE_IDNA_MAPPED, 1, 190}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1456}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3798}, - {LXB_UNICODE_IDNA_MAPPED, 1, 365}, - {LXB_UNICODE_IDNA_MAPPED, 1, 823}, - {LXB_UNICODE_IDNA_MAPPED, 1, 507}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2925}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1463}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3076}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2178}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4450}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4961}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2806}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4711}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3244}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4153}, - {LXB_UNICODE_IDNA_MAPPED, 1, 254}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3369}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5321}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2922}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3619}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3499}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3556}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3254}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3218}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3177}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2854}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4683}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4993}, - {LXB_UNICODE_IDNA_MAPPED, 1, 867}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4763}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1988}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4967}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5368}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1383}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4373}, - {LXB_UNICODE_IDNA_MAPPED, 1, 80}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4841}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3336}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3287}, - {LXB_UNICODE_IDNA_MAPPED, 1, 111}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4742}, - {LXB_UNICODE_IDNA_MAPPED, 1, 783}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5016}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3044}, - {LXB_UNICODE_IDNA_MAPPED, 1, 646}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5095}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1469}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4078}, - {LXB_UNICODE_IDNA_MAPPED, 1, 330}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2208}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1005}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4578}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1245}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3072}, - {LXB_UNICODE_IDNA_MAPPED, 1, 370}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2684}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4617}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4822}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2260}, - {LXB_UNICODE_IDNA_MAPPED, 1, 243}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4430}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1450}, - {LXB_UNICODE_IDNA_MAPPED, 1, 711}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4407}, + {LXB_UNICODE_IDNA_MAPPED, 1, 462}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3495}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3240}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4415}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4451}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3779}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4734}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5416}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4669}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4615}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1089}, + {LXB_UNICODE_IDNA_MAPPED, 1, 516}, + {LXB_UNICODE_IDNA_MAPPED, 2, 31}, + {LXB_UNICODE_IDNA_MAPPED, 1, 327}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3232}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2070}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1749}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5389}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1633}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5365}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3487}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1709}, + {LXB_UNICODE_IDNA_MAPPED, 1, 170}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4255}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2189}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3853}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2145}, + {LXB_UNICODE_IDNA_MAPPED, 1, 815}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2376}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2314}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5259}, + {LXB_UNICODE_IDNA_MAPPED, 2, 265}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5224}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4849}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1563}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2935}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3998}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1397}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3404}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3476}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4733}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4210}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5112}, + {LXB_UNICODE_IDNA_MAPPED, 2, 978}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1665}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5240}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5247}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1226}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1860}, + {LXB_UNICODE_IDNA_MAPPED, 1, 385}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5357}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4629}, + {LXB_UNICODE_IDNA_MAPPED, 1, 792}, + {LXB_UNICODE_IDNA_MAPPED, 1, 194}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4823}, + {LXB_UNICODE_IDNA_MAPPED, 1, 530}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4273}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1668}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3109}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2766}, + {LXB_UNICODE_IDNA_MAPPED, 1, 224}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2528}, + {LXB_UNICODE_IDNA_MAPPED, 1, 523}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4570}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1535}, + {LXB_UNICODE_IDNA_MAPPED, 1, 161}, + {LXB_UNICODE_IDNA_MAPPED, 1, 694}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2184}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1538}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1499}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2064}, {LXB_UNICODE_IDNA_MAPPED, 1, 3416}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3178}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4479}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4699}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2505}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1417}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5106}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1204}, - {LXB_UNICODE_IDNA_MAPPED, 1, 906}, - {LXB_UNICODE_IDNA_MAPPED, 1, 357}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4497}, - {LXB_UNICODE_IDNA_MAPPED, 1, 779}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4876}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3284}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5154}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3971}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5250}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4126}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1176}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4896}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5170}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5193}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2119}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4013}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3479}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5066}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3212}, - {LXB_UNICODE_IDNA_MAPPED, 1, 350}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2062}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4675}, - {LXB_UNICODE_IDNA_MAPPED, 1, 336}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4297}, - {LXB_UNICODE_IDNA_MAPPED, 1, 498}, - {LXB_UNICODE_IDNA_MAPPED, 1, 465}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5128}, - {LXB_UNICODE_IDNA_MAPPED, 1, 683}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3431}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3033}, - {LXB_UNICODE_IDNA_MAPPED, 1, 689}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2984}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3475}, + {LXB_UNICODE_IDNA_MAPPED, 2, 950}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2479}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3305}, + {LXB_UNICODE_IDNA_MAPPED, 1, 155}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3355}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3917}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3419}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2054}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4691}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5217}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1729}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3116}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2557}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5031}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1187}, + {LXB_UNICODE_IDNA_MAPPED, 1, 251}, + {LXB_UNICODE_IDNA_MAPPED, 1, 715}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3324}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2786}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3001}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1615}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4587}, + {LXB_UNICODE_IDNA_MAPPED, 1, 51}, + {LXB_UNICODE_IDNA_MAPPED, 1, 842}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1798}, + {LXB_UNICODE_IDNA_MAPPED, 2, 920}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2629}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3175}, + {LXB_UNICODE_IDNA_MAPPED, 1, 805}, + {LXB_UNICODE_IDNA_MAPPED, 1, 99}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2886}, + {LXB_UNICODE_IDNA_MAPPED, 1, 368}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2838}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4847}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3015}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3094}, + {LXB_UNICODE_IDNA_MAPPED, 1, 402}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3693}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4099}, + {LXB_UNICODE_IDNA_MAPPED, 1, 687}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1896}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3403}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3606}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4514}, + {LXB_UNICODE_IDNA_MAPPED, 1, 432}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5324}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5050}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4677}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4842}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1905}, + {LXB_UNICODE_IDNA_MAPPED, 1, 508}, + {LXB_UNICODE_IDNA_MAPPED, 2, 958}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4517}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5248}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5242}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5359}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2945}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3318}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4728}, + {LXB_UNICODE_IDNA_MAPPED, 1, 140}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3182}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1448}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4832}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1045}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3048}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1403}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1402}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5397}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4424}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3505}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2117}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3825}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2155}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4132}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3875}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2364}, + {LXB_UNICODE_IDNA_MAPPED, 1, 128}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1003}, {LXB_UNICODE_IDNA_MAPPED, 3, 2895}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5162}, - {LXB_UNICODE_IDNA_MAPPED, 1, 791}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2344}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1524}, - {LXB_UNICODE_IDNA_MAPPED, 2, 602}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5299}, - {LXB_UNICODE_IDNA_MAPPED, 2, 566}, - {LXB_UNICODE_IDNA_MAPPED, 1, 515}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2958}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2026}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3720}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1521}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4698}, - {LXB_UNICODE_IDNA_MAPPED, 1, 183}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3730}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4905}, - {LXB_UNICODE_IDNA_MAPPED, 2, 554}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1949}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2509}, - {LXB_UNICODE_IDNA_MAPPED, 1, 738}, - {LXB_UNICODE_IDNA_MAPPED, 2, 568}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4480}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4806}, - {LXB_UNICODE_IDNA_MAPPED, 1, 271}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3415}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3611}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1796}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5144}, - {LXB_UNICODE_IDNA_MAPPED, 1, 911}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1150}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2125}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4614}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4618}, + {LXB_UNICODE_IDNA_MAPPED, 1, 426}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3008}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5052}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1628}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5198}, + {LXB_UNICODE_IDNA_MAPPED, 1, 909}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3335}, + {LXB_UNICODE_IDNA_MAPPED, 2, 972}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1625}, + {LXB_UNICODE_IDNA_MAPPED, 1, 816}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3976}, + {LXB_UNICODE_IDNA_MAPPED, 1, 886}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5156}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4969}, + {LXB_UNICODE_IDNA_MAPPED, 1, 774}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3128}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4994}, + {LXB_UNICODE_IDNA_MAPPED, 1, 966}, + {LXB_UNICODE_IDNA_MAPPED, 2, 186}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2696}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5423}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1694}, + {LXB_UNICODE_IDNA_MAPPED, 1, 278}, + {LXB_UNICODE_IDNA_MAPPED, 2, 556}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1590}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2417}, {LXB_UNICODE_IDNA_MAPPED, 1, 5185}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4405}, - {LXB_UNICODE_IDNA_MAPPED, 1, 140}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4835}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2165}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2682}, - {LXB_UNICODE_IDNA_MAPPED, 1, 443}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3444}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1908}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4419}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4971}, + {LXB_UNICODE_IDNA_MAPPED, 1, 913}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3451}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5232}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1819}, + {LXB_UNICODE_IDNA_MAPPED, 1, 818}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4462}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3454}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3249}, + {LXB_UNICODE_IDNA_MAPPED, 1, 424}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2218}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3962}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1611}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4986}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5193}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1760}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4932}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3300}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2641}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2639}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4138}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2871}, {LXB_UNICODE_IDNA_MAPPED, 3, 1103}, - {LXB_UNICODE_IDNA_MAPPED, 1, 490}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2414}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2340}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2844}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5289}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5037}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3983}, - {LXB_UNICODE_IDNA_MAPPED, 1, 883}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5098}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4375}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1964}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4165}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1763}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1803}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4590}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4129}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1955}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5083}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1431}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3329}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5200}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3424}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1512}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3590}, + {LXB_UNICODE_IDNA_MAPPED, 1, 806}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4404}, + {LXB_UNICODE_IDNA_MAPPED, 1, 361}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4545}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4650}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4945}, + {LXB_UNICODE_IDNA_MAPPED, 1, 717}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3170}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1494}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1027}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3703}, + {LXB_UNICODE_IDNA_MAPPED, 1, 279}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5308}, + {LXB_UNICODE_IDNA_MAPPED, 1, 290}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2069}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2038}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4973}, + {LXB_UNICODE_IDNA_MAPPED, 1, 218}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4566}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3370}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5042}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2044}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2538}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1734}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3121}, + {LXB_UNICODE_IDNA_MAPPED, 2, 964}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5076}, {LXB_UNICODE_IDNA_MAPPED, 1, 1414}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4632}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1087}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4498}, - {LXB_UNICODE_IDNA_MAPPED, 1, 131}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1031}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5221}, - {LXB_UNICODE_IDNA_MAPPED, 1, 625}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4394}, - {LXB_UNICODE_IDNA_MAPPED, 1, 801}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3427}, - {LXB_UNICODE_IDNA_MAPPED, 1, 400}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4087}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3698}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1721}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2263}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2544}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4755}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3969}, - {LXB_UNICODE_IDNA_MAPPED, 2, 574}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1433}, - {LXB_UNICODE_IDNA_MAPPED, 1, 845}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3617}, - {LXB_UNICODE_IDNA_MAPPED, 1, 436}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5007}, - {LXB_UNICODE_IDNA_MAPPED, 1, 875}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5104}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4156}, - {LXB_UNICODE_IDNA_MAPPED, 1, 71}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3505}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4877}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1306}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2639}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3133}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1784}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4578}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4559}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4502}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4777}, + {LXB_UNICODE_IDNA_MAPPED, 1, 808}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2712}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3089}, + {LXB_UNICODE_IDNA_MAPPED, 1, 377}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2975}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3131}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2461}, + {LXB_UNICODE_IDNA_MAPPED, 1, 292}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4995}, + {LXB_UNICODE_IDNA_MAPPED, 1, 249}, + {LXB_UNICODE_IDNA_MAPPED, 1, 649}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5060}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5273}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3435}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3041}, + {LXB_UNICODE_IDNA_MAPPED, 1, 719}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1627}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2159}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5035}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3270}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5183}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5422}, + {LXB_UNICODE_IDNA_MAPPED, 2, 985}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5021}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2758}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1676}, + {LXB_UNICODE_IDNA_MAPPED, 1, 779}, + {LXB_UNICODE_IDNA_MAPPED, 1, 406}, + {LXB_UNICODE_IDNA_MAPPED, 1, 628}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4535}, {LXB_UNICODE_IDNA_MAPPED, 1, 4745}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2175}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3077}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4579}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2672}, - {LXB_UNICODE_IDNA_MAPPED, 1, 380}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1632}, - {LXB_UNICODE_IDNA_MAPPED, 1, 633}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1961}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1985}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4594}, - {LXB_UNICODE_IDNA_MAPPED, 1, 179}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5358}, - {LXB_UNICODE_IDNA_MAPPED, 1, 396}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4451}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4237}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5347}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2808}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3370}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5296}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4015}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5329}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3363}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4640}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3288}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4372}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1412}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2327}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2852}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3149}, - {LXB_UNICODE_IDNA_MAPPED, 1, 665}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3756}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5206}, - {LXB_UNICODE_IDNA_MAPPED, 1, 123}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2566}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1385}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3506}, {LXB_UNICODE_IDNA_MAPPED, 1, 892}, - {LXB_UNICODE_IDNA_MAPPED, 1, 132}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2842}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4901}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3160}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2690}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1714}, - {LXB_UNICODE_IDNA_MAPPED, 1, 704}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3206}, - {LXB_UNICODE_IDNA_MAPPED, 1, 412}, - {LXB_UNICODE_IDNA_MAPPED, 1, 856}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4633}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3916}, - {LXB_UNICODE_IDNA_MAPPED, 1, 825}, + {LXB_UNICODE_IDNA_MAPPED, 1, 309}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2931}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5132}, {LXB_UNICODE_IDNA_MAPPED, 1, 1466}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2961}, - {LXB_UNICODE_IDNA_MAPPED, 1, 749}, - {LXB_UNICODE_IDNA_MAPPED, 2, 558}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2546}, - {LXB_UNICODE_IDNA_MAPPED, 1, 481}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3040}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2652}, + {LXB_UNICODE_IDNA_MAPPED, 1, 86}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2964}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3895}, + {LXB_UNICODE_IDNA_MAPPED, 3, 286}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2200}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4396}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3287}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1315}, + {LXB_UNICODE_IDNA_MAPPED, 1, 683}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3529}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4830}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3682}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4672}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3670}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3075}, + {LXB_UNICODE_IDNA_MAPPED, 1, 802}, + {LXB_UNICODE_IDNA_MAPPED, 1, 193}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1055}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1173}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2099}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3968}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1457}, + {LXB_UNICODE_IDNA_MAPPED, 1, 653}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1556}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3398}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3453}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5215}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3947}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3771}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2091}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3200}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3056}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3953}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4312}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5158}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2280}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4912}, + {LXB_UNICODE_IDNA_MAPPED, 3, 998}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4648}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3592}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3586}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1982}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4651}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2666}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3169}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4715}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2919}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2600}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3301}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2957}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4135}, + {LXB_UNICODE_IDNA_MAPPED, 1, 400}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1961}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1180}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5271}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1257}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2984}, {LXB_UNICODE_IDNA_MAPPED, 1, 788}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3219}, - {LXB_UNICODE_IDNA_MAPPED, 1, 332}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1397}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1261}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1459}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1655}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3399}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3872}, - {LXB_UNICODE_IDNA_MAPPED, 1, 884}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2238}, - {LXB_UNICODE_IDNA_MAPPED, 1, 255}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4240}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3248}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4590}, - {LXB_UNICODE_IDNA_MAPPED, 1, 281}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1637}, - {LXB_UNICODE_IDNA_MAPPED, 1, 672}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1946}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1570}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5231}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1797}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4950}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1489}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1676}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1684}, - {LXB_UNICODE_IDNA_MAPPED, 1, 862}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1928}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3000}, - {LXB_UNICODE_IDNA_MAPPED, 1, 759}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4908}, - {LXB_UNICODE_IDNA_MAPPED, 1, 517}, - {LXB_UNICODE_IDNA_MAPPED, 2, 597}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2162}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1586}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4704}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3298}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5345}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4593}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4528}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1806}, + {LXB_UNICODE_IDNA_MAPPED, 1, 202}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1204}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5000}, {LXB_UNICODE_IDNA_MAPPED, 1, 4613}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3349}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4717}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4956}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3483}, - {LXB_UNICODE_IDNA_MAPPED, 2, 936}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2155}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5116}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4775}, + {LXB_UNICODE_IDNA_MAPPED, 1, 903}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4634}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3132}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4560}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4503}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3087}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3194}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2993}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3905}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2388}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4778}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4557}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3090}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4500}, + {LXB_UNICODE_IDNA_MAPPED, 1, 786}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3360}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2819}, {LXB_UNICODE_IDNA_MAPPED, 1, 213}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4681}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4536}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2068}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1539}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1229}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5336}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5207}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2530}, - {LXB_UNICODE_IDNA_MAPPED, 2, 546}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2557}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2954}, - {LXB_UNICODE_IDNA_MAPPED, 1, 138}, - {LXB_UNICODE_IDNA_MAPPED, 3, 44}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4999}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4604}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2322}, - {LXB_UNICODE_IDNA_MAPPED, 1, 95}, - {LXB_UNICODE_IDNA_MAPPED, 1, 763}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3385}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5243}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1470}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4399}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3583}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5346}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3277}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1710}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4625}, - {LXB_UNICODE_IDNA_MAPPED, 1, 736}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2194}, - {LXB_UNICODE_IDNA_MAPPED, 1, 151}, - {LXB_UNICODE_IDNA_MAPPED, 1, 866}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4637}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2913}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1801}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5263}, - {LXB_UNICODE_IDNA_MAPPED, 1, 384}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5051}, - {LXB_UNICODE_IDNA_MAPPED, 1, 416}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3410}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3666}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5273}, - {LXB_UNICODE_IDNA_MAPPED, 1, 852}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2994}, - {LXB_UNICODE_IDNA_MAPPED, 1, 730}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2669}, - {LXB_UNICODE_IDNA_MAPPED, 1, 693}, - {LXB_UNICODE_IDNA_MAPPED, 1, 680}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4669}, - {LXB_UNICODE_IDNA_MAPPED, 1, 192}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3223}, - {LXB_UNICODE_IDNA_MAPPED, 1, 340}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4168}, - {LXB_UNICODE_IDNA_MAPPED, 1, 463}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4198}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3621}, - {LXB_UNICODE_IDNA_MAPPED, 1, 784}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1604}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4817}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2593}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3231}, - {LXB_UNICODE_IDNA_MAPPED, 1, 477}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3063}, - {LXB_UNICODE_IDNA_MAPPED, 1, 55}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4854}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1633}, - {LXB_UNICODE_IDNA_MAPPED, 1, 753}, - {LXB_UNICODE_IDNA_MAPPED, 1, 715}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3700}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4879}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3460}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4534}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1525}, - {LXB_UNICODE_IDNA_MAPPED, 8, 4358}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1047}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1668}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4724}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3470}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4821}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3131}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3597}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4291}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3417}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4981}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1658}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3637}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3647}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1916}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1437}, + {LXB_UNICODE_IDNA_MAPPED, 1, 398}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2042}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4939}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5407}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5257}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2925}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5150}, + {LXB_UNICODE_IDNA_MAPPED, 2, 38}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4455}, + {LXB_UNICODE_IDNA_MAPPED, 1, 898}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4294}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3843}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3148}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5102}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2248}, {LXB_UNICODE_IDNA_MAPPED, 1, 1479}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1147}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4033}, - {LXB_UNICODE_IDNA_MAPPED, 1, 912}, - {LXB_UNICODE_IDNA_MAPPED, 1, 405}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2129}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3460}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5125}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1712}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3219}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3678}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4453}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5114}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2105}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4925}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3044}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3386}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1037}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5281}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3880}, + {LXB_UNICODE_IDNA_MAPPED, 1, 237}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3061}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1321}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2222}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5095}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4087}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3275}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3257}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4282}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5376}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3684}, + {LXB_UNICODE_IDNA_MAPPED, 1, 180}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4285}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1667}, + {LXB_UNICODE_IDNA_MAPPED, 1, 894}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1444}, + {LXB_UNICODE_IDNA_MAPPED, 1, 675}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3499}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3661}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2018}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1333}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2191}, + {LXB_UNICODE_IDNA_MAPPED, 1, 506}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3978}, + {LXB_UNICODE_IDNA_MAPPED, 1, 647}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5206}, + {LXB_UNICODE_IDNA_MAPPED, 1, 877}, + {LXB_UNICODE_IDNA_MAPPED, 1, 397}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4656}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2551}, + {LXB_UNICODE_IDNA_MAPPED, 2, 595}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3356}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4914}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3199}, + {LXB_UNICODE_IDNA_MAPPED, 1, 337}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4027}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2560}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1646}, + {LXB_UNICODE_IDNA_MAPPED, 1, 785}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2971}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3353}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3110}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4488}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3805}, + {LXB_UNICODE_IDNA_MAPPED, 1, 284}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4600}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3632}, + {LXB_UNICODE_IDNA_MAPPED, 1, 498}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3141}, + {LXB_UNICODE_IDNA_MAPPED, 2, 619}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4840}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4541}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3107}, + {LXB_UNICODE_IDNA_MAPPED, 2, 269}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1537}, + {LXB_UNICODE_IDNA_MAPPED, 1, 490}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4763}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3518}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1606}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1132}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3316}, + {LXB_UNICODE_IDNA_MAPPED, 1, 147}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3442}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2569}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1997}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2947}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2082}, + {LXB_UNICODE_IDNA_MAPPED, 1, 900}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3412}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1902}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4516}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3319}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4523}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4609}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3002}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5427}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4895}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4385}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3037}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4800}, + {LXB_UNICODE_IDNA_MAPPED, 1, 154}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3000}, + {LXB_UNICODE_IDNA_MAPPED, 1, 366}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5277}, + {LXB_UNICODE_IDNA_MAPPED, 1, 703}, + {LXB_UNICODE_IDNA_MAPPED, 1, 452}, + {LXB_UNICODE_IDNA_MAPPED, 1, 124}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3572}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4884}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5086}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5419}, {LXB_UNICODE_IDNA_MAPPED, 1, 5179}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1597}, - {LXB_UNICODE_IDNA_MAPPED, 1, 393}, - {LXB_UNICODE_IDNA_MAPPED, 1, 849}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2210}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3211}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3318}, - {LXB_UNICODE_IDNA_MAPPED, 2, 956}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1878}, - {LXB_UNICODE_IDNA_MAPPED, 1, 402}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1014}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1699}, - {LXB_UNICODE_IDNA_MAPPED, 1, 216}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5064}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5031}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1418}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5155}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4496}, - {LXB_UNICODE_IDNA_MAPPED, 1, 102}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1351}, - {LXB_UNICODE_IDNA_MAPPED, 1, 383}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5211}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4788}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1441}, + {LXB_UNICODE_IDNA_MAPPED, 1, 912}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1726}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3811}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2107}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1580}, + {LXB_UNICODE_IDNA_MAPPED, 1, 829}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5119}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1684}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5400}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5262}, + {LXB_UNICODE_IDNA_MAPPED, 2, 932}, + {LXB_UNICODE_IDNA_MAPPED, 1, 328}, + {LXB_UNICODE_IDNA_MAPPED, 1, 479}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5145}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2220}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4991}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3245}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4225}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4826}, + {LXB_UNICODE_IDNA_MAPPED, 1, 379}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3046}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3484}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1002}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1654}, + {LXB_UNICODE_IDNA_MAPPED, 1, 481}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5381}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3490}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1476}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2269}, + {LXB_UNICODE_IDNA_MAPPED, 1, 190}, + {LXB_UNICODE_IDNA_MAPPED, 1, 197}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4619}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2260}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3793}, + {LXB_UNICODE_IDNA_MAPPED, 1, 831}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3471}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1162}, + {LXB_UNICODE_IDNA_MAPPED, 2, 548}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1238}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1574}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4654}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2496}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4529}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2739}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3099}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1670}, + {LXB_UNICODE_IDNA_MAPPED, 1, 641}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4758}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5048}, + {LXB_UNICODE_IDNA_MAPPED, 1, 223}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3446}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4813}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3430}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1509}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4845}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5195}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5403}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4486}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3313}, {LXB_UNICODE_IDNA_MAPPED, 1, 451}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1548}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2256}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3449}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5127}, - {LXB_UNICODE_IDNA_MAPPED, 1, 700}, - {LXB_UNICODE_IDNA_MAPPED, 1, 724}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3109}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3912}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1375}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5071}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4971}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1593}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5085}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3003}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3512}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3087}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4747}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4577}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5322}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1973}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2100}, - {LXB_UNICODE_IDNA_MAPPED, 1, 258}, - {LXB_UNICODE_IDNA_MAPPED, 1, 155}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3329}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4728}, - {LXB_UNICODE_IDNA_MAPPED, 1, 447}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3041}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4379}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4449}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2804}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5367}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3368}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5332}, - {LXB_UNICODE_IDNA_MAPPED, 1, 714}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3298}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4445}, - {LXB_UNICODE_IDNA_MAPPED, 1, 797}, - {LXB_UNICODE_IDNA_MAPPED, 1, 215}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1217}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1499}, - {LXB_UNICODE_IDNA_MAPPED, 1, 907}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1833}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1812}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1429}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5147}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2194}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2782}, + {LXB_UNICODE_IDNA_MAPPED, 1, 388}, + {LXB_UNICODE_IDNA_MAPPED, 2, 524}, + {LXB_UNICODE_IDNA_MAPPED, 1, 869}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3156}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3642}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5121}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4761}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5073}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1549}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1550}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2575}, + {LXB_UNICODE_IDNA_MAPPED, 1, 832}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3104}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2544}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2968}, + {LXB_UNICODE_IDNA_MAPPED, 1, 390}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2806}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4336}, + {LXB_UNICODE_IDNA_MAPPED, 1, 449}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1265}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3350}, {LXB_UNICODE_IDNA_MAPPED, 2, 1200}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4941}, - {LXB_UNICODE_IDNA_MAPPED, 1, 459}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4425}, - {LXB_UNICODE_IDNA_MAPPED, 1, 206}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2930}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3121}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4719}, - {LXB_UNICODE_IDNA_MAPPED, 1, 103}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3569}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2859}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2715}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3196}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5126}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2698}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3271}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4448}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5164}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3126}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1782}, - {LXB_UNICODE_IDNA_MAPPED, 1, 809}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4433}, - {LXB_UNICODE_IDNA_MAPPED, 1, 644}, - {LXB_UNICODE_IDNA_MAPPED, 1, 494}, - {LXB_UNICODE_IDNA_MAPPED, 2, 282}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1101}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5379}, - {LXB_UNICODE_IDNA_MAPPED, 1, 63}, - {LXB_UNICODE_IDNA_MAPPED, 2, 581}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2656}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1081}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1399}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4723}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3250}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3015}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1018}, - {LXB_UNICODE_IDNA_MAPPED, 2, 207}, - {LXB_UNICODE_IDNA_MAPPED, 1, 651}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3057}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4559}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4658}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1651}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3333}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1580}, - {LXB_UNICODE_IDNA_MAPPED, 1, 73}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1380}, - {LXB_UNICODE_IDNA_MAPPED, 1, 836}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4030}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1674}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4880}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2088}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3147}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1686}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1922}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3502}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1336}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3595}, - {LXB_UNICODE_IDNA_MAPPED, 2, 983}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1770}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3516}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4515}, - {LXB_UNICODE_IDNA_MAPPED, 1, 98}, - {LXB_UNICODE_IDNA_MAPPED, 1, 777}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5269}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3351}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4820}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2615}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1129}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5124}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2991}, - {LXB_UNICODE_IDNA_MAPPED, 1, 238}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4111}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2518}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3830}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5342}, - {LXB_UNICODE_IDNA_MAPPED, 2, 587}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4462}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1076}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3309}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1750}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4507}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3739}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3206}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4854}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4045}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1640}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1659}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5253}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1569}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5229}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2165}, + {LXB_UNICODE_IDNA_MAPPED, 1, 725}, + {LXB_UNICODE_IDNA_MAPPED, 1, 55}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5004}, + {LXB_UNICODE_IDNA_MAPPED, 1, 139}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4240}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4747}, + {LXB_UNICODE_IDNA_MAPPED, 1, 673}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3795}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1004}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1756}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3465}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5426}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3286}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5187}, + {LXB_UNICODE_IDNA_MAPPED, 1, 486}, + {LXB_UNICODE_IDNA_MAPPED, 1, 412}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3073}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3023}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5372}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1388}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3457}, + {LXB_UNICODE_IDNA_MAPPED, 1, 478}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3901}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2967}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1600}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1469}, + {LXB_UNICODE_IDNA_MAPPED, 1, 828}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3514}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3567}, + {LXB_UNICODE_IDNA_MAPPED, 1, 914}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3899}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2213}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1391}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2089}, + {LXB_UNICODE_IDNA_MAPPED, 2, 615}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4159}, + {LXB_UNICODE_IDNA_MAPPED, 1, 353}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5236}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4835}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3033}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1008}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1689}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5009}, + {LXB_UNICODE_IDNA_MAPPED, 1, 236}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5210}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2285}, + {LXB_UNICODE_IDNA_MAPPED, 1, 176}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4150}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2910}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1769}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3763}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3225}, + {LXB_UNICODE_IDNA_MAPPED, 1, 448}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1934}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3531}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1772}, + {LXB_UNICODE_IDNA_MAPPED, 2, 566}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1544}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4917}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3142}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2672}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1925}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4713}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5028}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2928}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4072}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3084}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3889}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4772}, + {LXB_UNICODE_IDNA_MAPPED, 1, 772}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2996}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2409}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4554}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4497}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4836}, + {LXB_UNICODE_IDNA_MAPPED, 1, 345}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2398}, + {LXB_UNICODE_IDNA_MAPPED, 1, 173}, + {LXB_UNICODE_IDNA_MAPPED, 1, 419}, {LXB_UNICODE_IDNA_MAPPED, 1, 5018}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5315}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4795}, - {LXB_UNICODE_IDNA_MAPPED, 1, 983}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5141}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4621}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2353}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3278}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5366}, - {LXB_UNICODE_IDNA_MAPPED, 1, 832}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3574}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4461}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1504}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4598}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3012}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4636}, + {LXB_UNICODE_IDNA_MAPPED, 1, 868}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2607}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5327}, + {LXB_UNICODE_IDNA_MAPPED, 2, 593}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4710}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4595}, + {LXB_UNICODE_IDNA_MAPPED, 1, 219}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1809}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4954}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3709}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3262}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2511}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2615}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5299}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1579}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3295}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4707}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3990}, + {LXB_UNICODE_IDNA_MAPPED, 1, 434}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4550}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4645}, + {LXB_UNICODE_IDNA_MAPPED, 1, 235}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2821}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3161}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2000}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3580}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1848}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1517}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1155}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3653}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5053}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1432}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2950}, + {LXB_UNICODE_IDNA_MAPPED, 1, 853}, + {LXB_UNICODE_IDNA_MAPPED, 1, 94}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4574}, + {LXB_UNICODE_IDNA_MAPPED, 1, 458}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4882}, + {LXB_UNICODE_IDNA_MAPPED, 1, 888}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2987}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1943}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4120}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4962}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4667}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3339}, + {LXB_UNICODE_IDNA_MAPPED, 1, 166}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3749}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3163}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3062}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1774}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2682}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1096}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5398}, + {LXB_UNICODE_IDNA_MAPPED, 2, 583}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4831}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4910}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3369}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4889}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4479}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3003}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1513}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4627}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3423}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2030}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3276}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3338}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2830}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4546}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5131}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3478}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3911}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1522}, + {LXB_UNICODE_IDNA_MAPPED, 1, 496}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5184}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1418}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1399}, + {LXB_UNICODE_IDNA_MAPPED, 1, 721}, + {LXB_UNICODE_IDNA_MAPPED, 1, 757}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4377}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4640}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3610}, + {LXB_UNICODE_IDNA_MAPPED, 1, 732}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4692}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2149}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3857}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4261}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1421}, + {LXB_UNICODE_IDNA_MAPPED, 1, 159}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3186}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3118}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4942}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5049}, {LXB_UNICODE_IDNA_MAPPED, 1, 5199}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4538}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1618}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3122}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5281}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5048}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5254}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2995}, - {LXB_UNICODE_IDNA_MAPPED, 2, 188}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3445}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3419}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4570}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1592}, - {LXB_UNICODE_IDNA_MAPPED, 1, 679}, - {LXB_UNICODE_IDNA_MAPPED, 1, 97}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4667}, - {LXB_UNICODE_IDNA_MAPPED, 1, 345}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2099}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4808}, - {LXB_UNICODE_IDNA_MAPPED, 1, 434}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4174}, - {LXB_UNICODE_IDNA_MAPPED, 1, 503}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1606}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4051}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3065}, - {LXB_UNICODE_IDNA_MAPPED, 2, 613}, + {LXB_UNICODE_IDNA_MAPPED, 1, 53}, + {LXB_UNICODE_IDNA_MAPPED, 2, 578}, + {LXB_UNICODE_IDNA_MAPPED, 1, 392}, + {LXB_UNICODE_IDNA_MAPPED, 1, 863}, + {LXB_UNICODE_IDNA_MAPPED, 1, 707}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5335}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5168}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2066}, + {LXB_UNICODE_IDNA_MAPPED, 2, 275}, + {LXB_UNICODE_IDNA_MAPPED, 1, 662}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4751}, + {LXB_UNICODE_IDNA_MAPPED, 1, 488}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5068}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1621}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2175}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2532}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3984}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1480}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1486}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5078}, + {LXB_UNICODE_IDNA_MAPPED, 1, 838}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2898}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5032}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2298}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3859}, + {LXB_UNICODE_IDNA_MAPPED, 1, 133}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3032}, + {LXB_UNICODE_IDNA_MAPPED, 1, 712}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2943}, + {LXB_UNICODE_IDNA_MAPPED, 2, 552}, + {LXB_UNICODE_IDNA_MAPPED, 1, 500}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3602}, + {LXB_UNICODE_IDNA_MAPPED, 1, 335}, {LXB_UNICODE_IDNA_MAPPED, 1, 4972}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3227}, - {LXB_UNICODE_IDNA_MAPPED, 1, 813}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4491}, - {LXB_UNICODE_IDNA_MAPPED, 1, 90}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5208}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4171}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1617}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3300}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4998}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1605}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3230}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3255}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3448}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2633}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1460}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1618}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1023}, + {LXB_UNICODE_IDNA_MAPPED, 1, 430}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1800}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4588}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3252}, + {LXB_UNICODE_IDNA_MAPPED, 1, 322}, + {LXB_UNICODE_IDNA_MAPPED, 1, 767}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3326}, + {LXB_UNICODE_IDNA_MAPPED, 1, 73}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3333}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4201}, + {LXB_UNICODE_IDNA_MAPPED, 3, 992}, + {LXB_UNICODE_IDNA_MAPPED, 1, 730}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1531}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4632}, + {LXB_UNICODE_IDNA_MAPPED, 1, 621}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5366}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5231}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1427}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4465}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1816}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4604}, + {LXB_UNICODE_IDNA_MAPPED, 1, 856}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2368}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3847}, + {LXB_UNICODE_IDNA_MAPPED, 2, 29}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3095}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4687}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5377}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4970}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1447}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3174}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4730}, + {LXB_UNICODE_IDNA_MAPPED, 1, 461}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3306}, + {LXB_UNICODE_IDNA_MAPPED, 1, 522}, + {LXB_UNICODE_IDNA_MAPPED, 1, 655}, {LXB_UNICODE_IDNA_MAPPED, 1, 4460}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3266}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3064}, - {LXB_UNICODE_IDNA_MAPPED, 1, 388}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2309}, {LXB_UNICODE_IDNA_MAPPED, 2, 2052}, - {LXB_UNICODE_IDNA_MAPPED, 1, 403}, - {LXB_UNICODE_IDNA_MAPPED, 1, 916}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1003}, - {LXB_UNICODE_IDNA_MAPPED, 1, 677}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3418}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4186}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4980}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3527}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4774}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5272}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4009}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5225}, - {LXB_UNICODE_IDNA_MAPPED, 1, 456}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1777}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5115}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1542}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4653}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4388}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1662}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3089}, - {LXB_UNICODE_IDNA_MAPPED, 1, 702}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1345}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3052}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3581}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5356}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4624}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3900}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2193}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4607}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4528}, - {LXB_UNICODE_IDNA_MAPPED, 1, 142}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2603}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3142}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3658}, - {LXB_UNICODE_IDNA_MAPPED, 1, 427}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3671}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3011}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5307}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2528}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4769}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1476}, - {LXB_UNICODE_IDNA_MAPPED, 1, 152}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5008}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4887}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1685}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5388}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3292}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1769}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2073}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1671}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5279}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3350}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1781}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5079}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1398}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1613}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2933}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1654}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3270}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4456}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3249}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3920}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2835}, - {LXB_UNICODE_IDNA_MAPPED, 1, 792}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1426}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3531}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3375}, - {LXB_UNICODE_IDNA_MAPPED, 1, 141}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2417}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2612}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2087}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5318}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4434}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3517}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3081}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3724}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1223}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3146}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1519}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4516}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4951}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1312}, - {LXB_UNICODE_IDNA_MAPPED, 1, 326}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2654}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1196}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1381}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4587}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4657}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2942}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4911}, - {LXB_UNICODE_IDNA_MAPPED, 1, 795}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3334}, - {LXB_UNICODE_IDNA_MAPPED, 1, 452}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5045}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3056}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4558}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1884}, + {LXB_UNICODE_IDNA_MAPPED, 1, 334}, + {LXB_UNICODE_IDNA_MAPPED, 2, 560}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4684}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4484}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4848}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3407}, + {LXB_UNICODE_IDNA_MAPPED, 1, 626}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1696}, {LXB_UNICODE_IDNA_MAPPED, 3, 2701}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2723}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3165}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3662}, - {LXB_UNICODE_IDNA_MAPPED, 1, 732}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4729}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1649}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3018}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1663}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3051}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4652}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4529}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3770}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1736}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1462}, - {LXB_UNICODE_IDNA_MAPPED, 1, 173}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3086}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5357}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2600}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3365}, - {LXB_UNICODE_IDNA_MAPPED, 1, 831}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4045}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2800}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3141}, - {LXB_UNICODE_IDNA_MAPPED, 2, 958}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3605}, - {LXB_UNICODE_IDNA_MAPPED, 1, 775}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3265}, - {LXB_UNICODE_IDNA_MAPPED, 1, 974}, - {LXB_UNICODE_IDNA_MAPPED, 1, 252}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1734}, - {LXB_UNICODE_IDNA_MAPPED, 2, 552}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3462}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3526}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1982}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2054}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5348}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1429}, - {LXB_UNICODE_IDNA_MAPPED, 1, 64}, - {LXB_UNICODE_IDNA_MAPPED, 1, 469}, - {LXB_UNICODE_IDNA_MAPPED, 1, 148}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3297}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1620}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5061}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4997}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4540}, - {LXB_UNICODE_IDNA_MAPPED, 1, 647}, - {LXB_UNICODE_IDNA_MAPPED, 1, 231}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1543}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1776}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4746}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1042}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1241}, - {LXB_UNICODE_IDNA_MAPPED, 1, 328}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1277}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3082}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1598}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3518}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3317}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1445}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2245}, - {LXB_UNICODE_IDNA_MAPPED, 2, 978}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4493}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1667}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3973}, - {LXB_UNICODE_IDNA_MAPPED, 1, 667}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1419}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1051}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3132}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5088}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4533}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1123}, + {LXB_UNICODE_IDNA_MAPPED, 1, 459}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4510}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2977}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4681}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3410}, + {LXB_UNICODE_IDNA_MAPPED, 1, 854}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5258}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2587}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4780}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3126}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1857}, + {LXB_UNICODE_IDNA_MAPPED, 1, 91}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5364}, + {LXB_UNICODE_IDNA_MAPPED, 2, 282}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5077}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2111}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1450}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5218}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1562}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1487}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3021}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1223}, + {LXB_UNICODE_IDNA_MAPPED, 1, 759}, + {LXB_UNICODE_IDNA_MAPPED, 1, 905}, + {LXB_UNICODE_IDNA_MAPPED, 1, 395}, {LXB_UNICODE_IDNA_MAPPED, 1, 839}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3208}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3293}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5220}, - {LXB_UNICODE_IDNA_MAPPED, 1, 230}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4894}, - {LXB_UNICODE_IDNA_MAPPED, 2, 932}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3397}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2127}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3108}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5176}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1569}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1547}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2988}, - {LXB_UNICODE_IDNA_MAPPED, 1, 435}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4117}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2072}, - {LXB_UNICODE_IDNA_MAPPED, 1, 335}, - {LXB_UNICODE_IDNA_MAPPED, 1, 499}, - {LXB_UNICODE_IDNA_MAPPED, 1, 870}, - {LXB_UNICODE_IDNA_MAPPED, 1, 688}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2985}, - {LXB_UNICODE_IDNA_MAPPED, 1, 827}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4455}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3473}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1612}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1526}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3374}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2957}, - {LXB_UNICODE_IDNA_MAPPED, 1, 59}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2089}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1784}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1427}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3237}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4718}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4737}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1501}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4810}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5174}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3466}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5157}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5246}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4940}, - {LXB_UNICODE_IDNA_MAPPED, 1, 149}, - {LXB_UNICODE_IDNA_MAPPED, 1, 69}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2009}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1581}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4597}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4560}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5333}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4867}, - {LXB_UNICODE_IDNA_MAPPED, 1, 84}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3396}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5256}, - {LXB_UNICODE_IDNA_MAPPED, 1, 321}, - {LXB_UNICODE_IDNA_MAPPED, 1, 127}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2234}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3706}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4255}, - {LXB_UNICODE_IDNA_MAPPED, 1, 512}, - {LXB_UNICODE_IDNA_MAPPED, 1, 222}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1575}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4270}, + {LXB_UNICODE_IDNA_MAPPED, 1, 866}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5314}, {LXB_UNICODE_IDNA_MAPPED, 1, 5353}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2430}, + {LXB_UNICODE_IDNA_MAPPED, 1, 634}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2877}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3214}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4000}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4303}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2186}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1742}, {LXB_UNICODE_IDNA_MAPPED, 3, 2467}, - {LXB_UNICODE_IDNA_MAPPED, 1, 889}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1839}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5364}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4520}, - {LXB_UNICODE_IDNA_MAPPED, 1, 520}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2974}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5297}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1018}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4841}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5358}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5325}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1632}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3387}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5241}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3231}, + {LXB_UNICODE_IDNA_MAPPED, 1, 664}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3539}, + {LXB_UNICODE_IDNA_MAPPED, 1, 393}, + {LXB_UNICODE_IDNA_MAPPED, 1, 841}, + {LXB_UNICODE_IDNA_MAPPED, 1, 864}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1661}, + {LXB_UNICODE_IDNA_MAPPED, 1, 752}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4567}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3669}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4414}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3241}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2181}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5289}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3494}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1380}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2736}, + {LXB_UNICODE_IDNA_MAPPED, 1, 131}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1533}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4492}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5349}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1793}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4583}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2794}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4678}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1725}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3112}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4966}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4997}, + {LXB_UNICODE_IDNA_MAPPED, 2, 558}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4024}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2772}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1483}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2514}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3093}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2058}, {LXB_UNICODE_IDNA_MAPPED, 1, 1023}, - {LXB_UNICODE_IDNA_MAPPED, 1, 637}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1444}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3860}, - {LXB_UNICODE_IDNA_MAPPED, 1, 802}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2935}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3205}, - {LXB_UNICODE_IDNA_MAPPED, 2, 536}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2862}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2712}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3171}, - {LXB_UNICODE_IDNA_MAPPED, 1, 147}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3226}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3392}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4944}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3631}, - {LXB_UNICODE_IDNA_MAPPED, 1, 844}, - {LXB_UNICODE_IDNA_MAPPED, 1, 126}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4054}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2796}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3908}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2040}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4273}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3422}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4818}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1701}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5091}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3463}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4689}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4660}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4440}, + {LXB_UNICODE_IDNA_MAPPED, 1, 320}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3731}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5221}, + {LXB_UNICODE_IDNA_MAPPED, 1, 428}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2060}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3931}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3179}, + {LXB_UNICODE_IDNA_MAPPED, 1, 93}, + {LXB_UNICODE_IDNA_MAPPED, 1, 437}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3935}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3304}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3886}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3177}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5285}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1890}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3321}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5160}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4186}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1794}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4512}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4584}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1463}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2619}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2662}, + {LXB_UNICODE_IDNA_MAPPED, 1, 363}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4111}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4767}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2846}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5278}, + {LXB_UNICODE_IDNA_MAPPED, 2, 263}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4738}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5348}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2230}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2990}, + {LXB_UNICODE_IDNA_MAPPED, 1, 433}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3497}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3713}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2074}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2953}, + {LXB_UNICODE_IDNA_MAPPED, 2, 966}, + {LXB_UNICODE_IDNA_MAPPED, 2, 528}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5318}, + {LXB_UNICODE_IDNA_MAPPED, 1, 132}, + {LXB_UNICODE_IDNA_MAPPED, 2, 554}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3236}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5138}, + {LXB_UNICODE_IDNA_MAPPED, 1, 405}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5343}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5269}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3523}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1599}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2446}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3068}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1780}, + {LXB_UNICODE_IDNA_MAPPED, 1, 144}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5370}, + {LXB_UNICODE_IDNA_MAPPED, 1, 777}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2087}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5384}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3345}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1635}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5072}, + {LXB_UNICODE_IDNA_MAPPED, 1, 254}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4616}, + {LXB_UNICODE_IDNA_MAPPED, 1, 347}, + {LXB_UNICODE_IDNA_MAPPED, 1, 887}, {LXB_UNICODE_IDNA_MAPPED, 1, 5283}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2110}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1484}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1556}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5063}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2021}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2916}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4574}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2776}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3571}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4384}, - {LXB_UNICODE_IDNA_MAPPED, 1, 729}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5069}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3093}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2356}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4620}, - {LXB_UNICODE_IDNA_MAPPED, 1, 900}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3386}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4799}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3834}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5324}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4463}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5214}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1538}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2514}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2750}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5125}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2153}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4682}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2069}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4963}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3110}, - {LXB_UNICODE_IDNA_MAPPED, 1, 876}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1185}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3777}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3281}, + {LXB_UNICODE_IDNA_MAPPED, 1, 179}, + {LXB_UNICODE_IDNA_MAPPED, 1, 255}, + {LXB_UNICODE_IDNA_MAPPED, 1, 92}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1568}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3006}, + {LXB_UNICODE_IDNA_MAPPED, 1, 810}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4243}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3845}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2137}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2135}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2331}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1866}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1663}, + {LXB_UNICODE_IDNA_MAPPED, 2, 267}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3618}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4698}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1393}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3239}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1412}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3472}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1875}, + {LXB_UNICODE_IDNA_MAPPED, 1, 509}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5165}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5332}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5211}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1415}, {LXB_UNICODE_IDNA_MAPPED, 1, 1453}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3696}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1447}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3184}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4413}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2760}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4705}, - {LXB_UNICODE_IDNA_MAPPED, 1, 110}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5112}, - {LXB_UNICODE_IDNA_MAPPED, 1, 824}, - {LXB_UNICODE_IDNA_MAPPED, 1, 773}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3032}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5047}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2409}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3172}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5268}, - {LXB_UNICODE_IDNA_MAPPED, 2, 942}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1905}, - {LXB_UNICODE_IDNA_MAPPED, 1, 628}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3319}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1096}, - {LXB_UNICODE_IDNA_MAPPED, 1, 331}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3889}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3238}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5257}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1253}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4619}, - {LXB_UNICODE_IDNA_MAPPED, 1, 674}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2006}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5386}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5140}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4288}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5236}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4796}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3469}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4811}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4481}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5013}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3037}, - {LXB_UNICODE_IDNA_MAPPED, 1, 487}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2511}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5343}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4697}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1788}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2955}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4720}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5076}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3154}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5213}, - {LXB_UNICODE_IDNA_MAPPED, 1, 86}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3496}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3175}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1411}, - {LXB_UNICODE_IDNA_MAPPED, 1, 211}, - {LXB_UNICODE_IDNA_MAPPED, 1, 242}, - {LXB_UNICODE_IDNA_MAPPED, 1, 224}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2581}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3362}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1460}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3289}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2928}, - {LXB_UNICODE_IDNA_MAPPED, 1, 709}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5306}, - {LXB_UNICODE_IDNA_MAPPED, 1, 495}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4234}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4438}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4645}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2752}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3391}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2948}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3259}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5380}, - {LXB_UNICODE_IDNA_MAPPED, 1, 691}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2081}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1389}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5313}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1970}, - {LXB_UNICODE_IDNA_MAPPED, 1, 790}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1624}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2637}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3078}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2973}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3342}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4159}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4878}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3242}, - {LXB_UNICODE_IDNA_MAPPED, 1, 338}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4544}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4965}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4945}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1436}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3509}, - {LXB_UNICODE_IDNA_MAPPED, 1, 769}, - {LXB_UNICODE_IDNA_MAPPED, 1, 118}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3910}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5201}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4926}, - {LXB_UNICODE_IDNA_MAPPED, 1, 510}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5168}, - {LXB_UNICODE_IDNA_MAPPED, 1, 201}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3341}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4398}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3688}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4231}, - {LXB_UNICODE_IDNA_MAPPED, 1, 742}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1487}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4541}, - {LXB_UNICODE_IDNA_MAPPED, 1, 654}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4899}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3005}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3388}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4575}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3361}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1621}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4933}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1410}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1890}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1357}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3258}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1525}, + {LXB_UNICODE_IDNA_MAPPED, 2, 960}, + {LXB_UNICODE_IDNA_MAPPED, 1, 693}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3873}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5237}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1949}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1528}, + {LXB_UNICODE_IDNA_MAPPED, 2, 261}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3426}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2362}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4719}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2652}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3165}, + {LXB_UNICODE_IDNA_MAPPED, 2, 536}, {LXB_UNICODE_IDNA_MAPPED, 3, 2856}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2393}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3495}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1441}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4688}, - {LXB_UNICODE_IDNA_MAPPED, 1, 431}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2938}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3199}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5010}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1388}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3571}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4873}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2798}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5340}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3243}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3956}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2859}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4171}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3428}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1647}, + {LXB_UNICODE_IDNA_MAPPED, 1, 845}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5116}, + {LXB_UNICODE_IDNA_MAPPED, 1, 975}, + {LXB_UNICODE_IDNA_MAPPED, 1, 429}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1511}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2034}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4580}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5303}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1788}, {LXB_UNICODE_IDNA_MAPPED, 1, 3364}, - {LXB_UNICODE_IDNA_MAPPED, 1, 800}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4953}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4439}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4646}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2635}, - {LXB_UNICODE_IDNA_MAPPED, 2, 540}, - {LXB_UNICODE_IDNA_MAPPED, 3, 3874}, - {LXB_UNICODE_IDNA_MAPPED, 1, 522}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2221}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3155}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1032}, - {LXB_UNICODE_IDNA_MAPPED, 1, 641}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4692}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1342}, - {LXB_UNICODE_IDNA_MAPPED, 1, 444}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1967}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5389}, - {LXB_UNICODE_IDNA_MAPPED, 2, 119}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4793}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2584}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3022}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4596}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1785}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1406}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5022}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1902}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3036}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5308}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2405}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3372}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4022}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2723}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4544}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2448}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4446}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4445}, + {LXB_UNICODE_IDNA_MAPPED, 1, 418}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5135}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4562}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2780}, + {LXB_UNICODE_IDNA_MAPPED, 1, 659}, + {LXB_UNICODE_IDNA_MAPPED, 1, 517}, + {LXB_UNICODE_IDNA_MAPPED, 1, 511}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4471}, + {LXB_UNICODE_IDNA_MAPPED, 1, 789}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1820}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3290}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5330}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5163}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1612}, + {LXB_UNICODE_IDNA_MAPPED, 1, 811}, + {LXB_UNICODE_IDNA_MAPPED, 3, 980}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1348}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3250}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1210}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4724}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3555}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3029}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2940}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1407}, + {LXB_UNICODE_IDNA_MAPPED, 1, 870}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3549}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5310}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2125}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1623}, {LXB_UNICODE_IDNA_MAPPED, 4, 2349}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3492}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5120}, - {LXB_UNICODE_IDNA_MAPPED, 1, 506}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1532}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5204}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1765}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2762}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2141}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4917}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4114}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4219}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4845}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1173}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5228}, - {LXB_UNICODE_IDNA_MAPPED, 2, 593}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3321}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3357}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1751}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3207}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2784}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4704}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3716}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2969}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4696}, - {LXB_UNICODE_IDNA_MAPPED, 1, 894}, - {LXB_UNICODE_IDNA_MAPPED, 1, 134}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5277}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4492}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4663}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4772}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1481}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2241}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2945}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5377}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3962}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3183}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2686}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3113}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2625}, - {LXB_UNICODE_IDNA_MAPPED, 1, 209}, - {LXB_UNICODE_IDNA_MAPPED, 2, 976}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1803}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2024}, - {LXB_UNICODE_IDNA_MAPPED, 1, 244}, - {LXB_UNICODE_IDNA_MAPPED, 1, 861}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5292}, - {LXB_UNICODE_IDNA_MAPPED, 1, 768}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3880}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5350}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4466}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4691}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3225}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2364}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2222}, - {LXB_UNICODE_IDNA_MAPPED, 1, 476}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4401}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2794}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2353}, {LXB_UNICODE_IDNA_MAPPED, 1, 5177}, - {LXB_UNICODE_IDNA_MAPPED, 1, 92}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4383}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1473}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3090}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4952}, - {LXB_UNICODE_IDNA_MAPPED, 1, 905}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3832}, - {LXB_UNICODE_IDNA_MAPPED, 1, 878}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5159}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5218}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1537}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5087}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2151}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5100}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2109}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3026}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1555}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2563}, - {LXB_UNICODE_IDNA_MAPPED, 1, 482}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3029}, - {LXB_UNICODE_IDNA_MAPPED, 1, 754}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3532}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2388}, - {LXB_UNICODE_IDNA_MAPPED, 2, 526}, - {LXB_UNICODE_IDNA_MAPPED, 1, 670}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1887}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3200}, - {LXB_UNICODE_IDNA_MAPPED, 1, 630}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3301}, - {LXB_UNICODE_IDNA_MAPPED, 1, 279}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4573}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2038}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4639}, - {LXB_UNICODE_IDNA_MAPPED, 1, 343}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4282}, - {LXB_UNICODE_IDNA_MAPPED, 4, 2230}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2871}, - {LXB_UNICODE_IDNA_MAPPED, 1, 93}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4662}, - {LXB_UNICODE_IDNA_MAPPED, 1, 191}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1639}, - {LXB_UNICODE_IDNA_MAPPED, 1, 203}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3649}, + {LXB_UNICODE_IDNA_MAPPED, 1, 195}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2892}, + {LXB_UNICODE_IDNA_MAPPED, 1, 813}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3723}, + {LXB_UNICODE_IDNA_MAPPED, 1, 515}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3525}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1285}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2094}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4743}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2214}, + {LXB_UNICODE_IDNA_MAPPED, 1, 192}, + {LXB_UNICODE_IDNA_MAPPED, 1, 465}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4797}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5027}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1229}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3183}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4918}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1719}, + {LXB_UNICODE_IDNA_MAPPED, 1, 228}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1690}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2688}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3079}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1728}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2430}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2980}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1594}, + {LXB_UNICODE_IDNA_MAPPED, 3, 44}, + {LXB_UNICODE_IDNA_MAPPED, 1, 874}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3140}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4568}, + {LXB_UNICODE_IDNA_MAPPED, 1, 708}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3111}, {LXB_UNICODE_IDNA_MAPPED, 1, 1439}, - {LXB_UNICODE_IDNA_MAPPED, 1, 210}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2464}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4517}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1836}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5354}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2623}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2976}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3467}, - {LXB_UNICODE_IDNA_MAPPED, 1, 758}, - {LXB_UNICODE_IDNA_MAPPED, 1, 109}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5327}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2422}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3405}, - {LXB_UNICODE_IDNA_MAPPED, 1, 764}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1405}, - {LXB_UNICODE_IDNA_MAPPED, 3, 995}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1182}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3918}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3204}, - {LXB_UNICODE_IDNA_MAPPED, 1, 348}, - {LXB_UNICODE_IDNA_MAPPED, 1, 464}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5227}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4258}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4599}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1584}, - {LXB_UNICODE_IDNA_MAPPED, 1, 278}, - {LXB_UNICODE_IDNA_MAPPED, 1, 657}, - {LXB_UNICODE_IDNA_MAPPED, 1, 857}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4858}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3491}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4563}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4736}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4216}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1912}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1533}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4829}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2092}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1670}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2143}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3356}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5392}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5148}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1504}, - {LXB_UNICODE_IDNA_MAPPED, 1, 472}, - {LXB_UNICODE_IDNA_MAPPED, 1, 229}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1625}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1273}, - {LXB_UNICODE_IDNA_MAPPED, 1, 389}, - {LXB_UNICODE_IDNA_MAPPED, 1, 392}, - {LXB_UNICODE_IDNA_MAPPED, 1, 848}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4545}, - {LXB_UNICODE_IDNA_MAPPED, 1, 887}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5160}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3006}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4929}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5075}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3441}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4741}, - {LXB_UNICODE_IDNA_MAPPED, 1, 914}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3337}, + {LXB_UNICODE_IDNA_MAPPED, 1, 435}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5012}, {LXB_UNICODE_IDNA_MAPPED, 1, 1497}, - {LXB_UNICODE_IDNA_MAPPED, 1, 407}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1693}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4975}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1860}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1384}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3562}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4684}, - {LXB_UNICODE_IDNA_MAPPED, 1, 441}, - {LXB_UNICODE_IDNA_MAPPED, 1, 717}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3255}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3189}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5068}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1138}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3668}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4048}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2919}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3506}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1363}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4508}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4437}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4644}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3870}, - {LXB_UNICODE_IDNA_MAPPED, 2, 989}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4502}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3153}, - {LXB_UNICODE_IDNA_MAPPED, 1, 218}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1764}, - {LXB_UNICODE_IDNA_MAPPED, 2, 259}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4321}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3046}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4893}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2578}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1648}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4730}, - {LXB_UNICODE_IDNA_MAPPED, 1, 622}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1493}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1708}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4383}, + {LXB_UNICODE_IDNA_MAPPED, 1, 758}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1379}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3137}, + {LXB_UNICODE_IDNA_MAPPED, 1, 116}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4929}, + {LXB_UNICODE_IDNA_MAPPED, 1, 199}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4542}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1542}, + {LXB_UNICODE_IDNA_MAPPED, 1, 487}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3358}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3357}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4774}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3086}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3195}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2470}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2563}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2003}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2997}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3198}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4499}, + {LXB_UNICODE_IDNA_MAPPED, 1, 341}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4556}, + {LXB_UNICODE_IDNA_MAPPED, 1, 756}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2986}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3440}, + {LXB_UNICODE_IDNA_MAPPED, 2, 585}, + {LXB_UNICODE_IDNA_MAPPED, 1, 209}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1502}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3143}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4300}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3297}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2959}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4712}, + {LXB_UNICODE_IDNA_MAPPED, 1, 734}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5305}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2880}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4647}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1994}, + {LXB_UNICODE_IDNA_MAPPED, 1, 494}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4846}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5371}, + {LXB_UNICODE_IDNA_MAPPED, 1, 123}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5226}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1985}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3381}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3584}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3320}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2110}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2961}, {LXB_UNICODE_IDNA_MAPPED, 1, 1697}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5004}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1872}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5014}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3437}, - {LXB_UNICODE_IDNA_MAPPED, 4, 1113}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1789}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2704}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3072}, + {LXB_UNICODE_IDNA_MAPPED, 1, 768}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3057}, + {LXB_UNICODE_IDNA_MAPPED, 1, 200}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3727}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4397}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2584}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1601}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3377}, + {LXB_UNICODE_IDNA_MAPPED, 1, 112}, + {LXB_UNICODE_IDNA_MAPPED, 1, 857}, + {LXB_UNICODE_IDNA_MAPPED, 1, 65}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3060}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3203}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5159}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4456}, + {LXB_UNICODE_IDNA_MAPPED, 1, 253}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1754}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2088}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4449}, {LXB_UNICODE_IDNA_MAPPED, 1, 3034}, - {LXB_UNICODE_IDNA_MAPPED, 1, 696}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2117}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1568}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3107}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5196}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5267}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5111}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3323}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4882}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2970}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3802}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3447}, - {LXB_UNICODE_IDNA_MAPPED, 1, 721}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2103}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4484}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4337}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3134}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5258}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4700}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3129}, - {LXB_UNICODE_IDNA_MAPPED, 1, 458}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4987}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3179}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4409}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3316}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1485}, - {LXB_UNICODE_IDNA_MAPPED, 1, 734}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1599}, - {LXB_UNICODE_IDNA_MAPPED, 1, 411}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4812}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3115}, - {LXB_UNICODE_IDNA_MAPPED, 1, 235}, - {LXB_UNICODE_IDNA_MAPPED, 2, 556}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5298}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5029}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5370}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4966}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4468}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4509}, - {LXB_UNICODE_IDNA_MAPPED, 2, 583}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2368}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1206}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3273}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5312}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3898}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5194}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1472}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3094}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4897}, - {LXB_UNICODE_IDNA_MAPPED, 4, 4317}, - {LXB_UNICODE_IDNA_MAPPED, 1, 804}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4489}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5151}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2105}, - {LXB_UNICODE_IDNA_MAPPED, 1, 818}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5081}, + {LXB_UNICODE_IDNA_MAPPED, 1, 822}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4324}, + {LXB_UNICODE_IDNA_MAPPED, 2, 609}, + {LXB_UNICODE_IDNA_MAPPED, 1, 101}, + {LXB_UNICODE_IDNA_MAPPED, 1, 660}, + {LXB_UNICODE_IDNA_MAPPED, 1, 750}, + {LXB_UNICODE_IDNA_MAPPED, 1, 889}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1459}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5239}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5246}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1641}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1470}, + {LXB_UNICODE_IDNA_MAPPED, 1, 78}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5356}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2370}, + {LXB_UNICODE_IDNA_MAPPED, 1, 671}, + {LXB_UNICODE_IDNA_MAPPED, 1, 766}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4731}, + {LXB_UNICODE_IDNA_MAPPED, 1, 714}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2933}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3565}, + {LXB_UNICODE_IDNA_MAPPED, 1, 329}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4996}, + {LXB_UNICODE_IDNA_MAPPED, 1, 210}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1702}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4978}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5225}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3274}, + {LXB_UNICODE_IDNA_MAPPED, 1, 222}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4204}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4288}, + {LXB_UNICODE_IDNA_MAPPED, 1, 164}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3271}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5025}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3043}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5222}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3285}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2635}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4760}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4524}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4964}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1572}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2488}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3302}, {LXB_UNICODE_IDNA_MAPPED, 1, 1551}, - {LXB_UNICODE_IDNA_MAPPED, 1, 100}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3025}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2992}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2030}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4162}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3563}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3059}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1692}, - {LXB_UNICODE_IDNA_MAPPED, 1, 470}, - {LXB_UNICODE_IDNA_MAPPED, 1, 514}, - {LXB_UNICODE_IDNA_MAPPED, 1, 57}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1857}, - {LXB_UNICODE_IDNA_MAPPED, 6, 2303}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1600}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3629}, - {LXB_UNICODE_IDNA_MAPPED, 1, 61}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3190}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5074}, - {LXB_UNICODE_IDNA_MAPPED, 1, 87}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3423}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5215}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4557}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2877}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5035}, - {LXB_UNICODE_IDNA_MAPPED, 1, 814}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4527}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4386}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1196}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4612}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3327}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1801}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2949}, + {LXB_UNICODE_IDNA_MAPPED, 1, 794}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2296}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1827}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3315}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3594}, + {LXB_UNICODE_IDNA_MAPPED, 1, 245}, + {LXB_UNICODE_IDNA_MAPPED, 1, 755}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3154}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4652}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4750}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4530}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1671}, + {LXB_UNICODE_IDNA_MAPPED, 6, 2744}, + {LXB_UNICODE_IDNA_MAPPED, 1, 460}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4989}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4653}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2067}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3634}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3106}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2173}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2534}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4376}, + {LXB_UNICODE_IDNA_MAPPED, 1, 855}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4877}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4036}, + {LXB_UNICODE_IDNA_MAPPED, 1, 138}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4817}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4561}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4504}, {LXB_UNICODE_IDNA_MAPPED, 1, 4485}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3335}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4586}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5363}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2964}, - {LXB_UNICODE_IDNA_MAPPED, 1, 236}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5130}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1382}, - {LXB_UNICODE_IDNA_MAPPED, 1, 227}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2433}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4782}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4760}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4994}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4958}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1518}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4521}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5319}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1824}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2981}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2086}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2451}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3119}, + {LXB_UNICODE_IDNA_MAPPED, 1, 623}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5057}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2969}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2548}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4060}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1177}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3091}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5043}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5089}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3352}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4779}, + {LXB_UNICODE_IDNA_MAPPED, 1, 130}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1150}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1400}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3510}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2206}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3259}, + {LXB_UNICODE_IDNA_MAPPED, 1, 76}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1442}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2151}, + {LXB_UNICODE_IDNA_MAPPED, 1, 753}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1176}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4264}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4639}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5197}, {LXB_UNICODE_IDNA_MAPPED, 1, 840}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4513}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1393}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1045}, - {LXB_UNICODE_IDNA_MAPPED, 3, 992}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4824}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5266}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2832}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4446}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3194}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5110}, - {LXB_UNICODE_IDNA_MAPPED, 1, 88}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3245}, - {LXB_UNICODE_IDNA_MAPPED, 1, 872}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4252}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1574}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1682}, + {LXB_UNICODE_IDNA_MAPPED, 1, 765}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5386}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5070}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2828}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1761}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5140}, + {LXB_UNICODE_IDNA_MAPPED, 1, 632}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5413}, + {LXB_UNICODE_IDNA_MAPPED, 1, 625}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2680}, + {LXB_UNICODE_IDNA_MAPPED, 1, 751}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5124}, + {LXB_UNICODE_IDNA_MAPPED, 1, 865}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4219}, + {LXB_UNICODE_IDNA_MAPPED, 1, 394}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3482}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4987}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1001}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3222}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5406}, + {LXB_UNICODE_IDNA_MAPPED, 2, 976}, + {LXB_UNICODE_IDNA_MAPPED, 1, 743}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5045}, {LXB_UNICODE_IDNA_MAPPED, 1, 656}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1586}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3546}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4564}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1008}, - {LXB_UNICODE_IDNA_MAPPED, 2, 617}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4096}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1680}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5183}, - {LXB_UNICODE_IDNA_MAPPED, 1, 808}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1477}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4820}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1581}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5362}, + {LXB_UNICODE_IDNA_MAPPED, 1, 666}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4437}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3959}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4452}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5115}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1014}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2414}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2566}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3395}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2804}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1553}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3026}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4066}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3078}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1031}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4927}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1937}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4873}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3628}, + {LXB_UNICODE_IDNA_MAPPED, 1, 420}, + {LXB_UNICODE_IDNA_MAPPED, 1, 492}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1773}, + {LXB_UNICODE_IDNA_MAPPED, 1, 122}, + {LXB_UNICODE_IDNA_MAPPED, 1, 146}, + {LXB_UNICODE_IDNA_MAPPED, 1, 220}, {LXB_UNICODE_IDNA_MAPPED, 1, 2093}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5396}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1506}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4732}, - {LXB_UNICODE_IDNA_MAPPED, 1, 198}, - {LXB_UNICODE_IDNA_MAPPED, 1, 170}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3345}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4735}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2085}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4532}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1836}, + {LXB_UNICODE_IDNA_MAPPED, 1, 689}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1673}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2752}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3160}, + {LXB_UNICODE_IDNA_MAPPED, 1, 436}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3157}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1845}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3432}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5111}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5301}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4030}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1473}, + {LXB_UNICODE_IDNA_MAPPED, 1, 71}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1575}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2499}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5169}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5336}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3289}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4711}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1433}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2197}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4608}, + {LXB_UNICODE_IDNA_MAPPED, 1, 843}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4599}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4521}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4472}, {LXB_UNICODE_IDNA_MAPPED, 2, 2617}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4514}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3498}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3458}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5191}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4895}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3649}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4935}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5252}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1517}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3148}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1505}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5222}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1431}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1571}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2509}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1578}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4850}, + {LXB_UNICODE_IDNA_MAPPED, 1, 804}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5105}, + {LXB_UNICODE_IDNA_MAPPED, 1, 339}, + {LXB_UNICODE_IDNA_MAPPED, 1, 401}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5391}, {LXB_UNICODE_IDNA_MAPPED, 1, 404}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4659}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3058}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5027}, - {LXB_UNICODE_IDNA_MAPPED, 1, 632}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4243}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1642}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5275}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4556}, - {LXB_UNICODE_IDNA_MAPPED, 1, 850}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3894}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4600}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1585}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3548}, - {LXB_UNICODE_IDNA_MAPPED, 1, 394}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5373}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2436}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2461}, - {LXB_UNICODE_IDNA_MAPPED, 1, 144}, - {LXB_UNICODE_IDNA_MAPPED, 1, 890}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1833}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5344}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4522}, - {LXB_UNICODE_IDNA_MAPPED, 1, 636}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1783}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2939}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3195}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5118}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2874}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4447}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3272}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3159}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2688}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2830}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2285}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3567}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4831}, + {LXB_UNICODE_IDNA_MAPPED, 1, 174}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3258}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5418}, + {LXB_UNICODE_IDNA_MAPPED, 1, 212}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4861}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1076}, + {LXB_UNICODE_IDNA_MAPPED, 1, 776}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2103}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5143}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2256}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4228}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5312}, + {LXB_UNICODE_IDNA_MAPPED, 1, 221}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3486}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5099}, + {LXB_UNICODE_IDNA_MAPPED, 1, 59}, + {LXB_UNICODE_IDNA_MAPPED, 1, 463}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4237}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3363}, + {LXB_UNICODE_IDNA_MAPPED, 2, 970}, + {LXB_UNICODE_IDNA_MAPPED, 2, 532}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1655}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3380}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4162}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4718}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4785}, + {LXB_UNICODE_IDNA_MAPPED, 1, 201}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5249}, + {LXB_UNICODE_IDNA_MAPPED, 1, 885}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5243}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4825}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5109}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1685}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4891}, + {LXB_UNICODE_IDNA_MAPPED, 1, 778}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4291}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1688}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2104}, {LXB_UNICODE_IDNA_MAPPED, 3, 1107}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4490}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4063}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3903}, + {LXB_UNICODE_IDNA_MAPPED, 1, 814}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1583}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4430}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3512}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3049}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1392}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3445}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4633}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5155}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3620}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4699}, + {LXB_UNICODE_IDNA_MAPPED, 1, 844}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4081}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1976}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1505}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3282}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2956}, + {LXB_UNICODE_IDNA_MAPPED, 1, 137}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2605}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2816}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2009}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4594}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1212}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1808}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4759}, + {LXB_UNICODE_IDNA_MAPPED, 1, 691}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2983}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4706}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5290}, + {LXB_UNICODE_IDNA_MAPPED, 1, 846}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3192}, + {LXB_UNICODE_IDNA_MAPPED, 1, 238}, + {LXB_UNICODE_IDNA_MAPPED, 1, 198}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5129}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1051}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3145}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4508}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2813}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4576}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1781}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3069}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2664}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1100}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2396}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1249}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2994}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3761}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2922}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2226}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4897}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1548}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4390}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3532}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5063}, + {LXB_UNICODE_IDNA_MAPPED, 1, 695}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5309}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5354}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1436}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1545}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5037}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1922}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4960}, + {LXB_UNICODE_IDNA_MAPPED, 1, 872}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3040}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2080}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1603}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4984}, + {LXB_UNICODE_IDNA_MAPPED, 1, 466}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3268}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5201}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4766}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1327}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3201}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1467}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3570}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2930}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3035}, + {LXB_UNICODE_IDNA_MAPPED, 1, 513}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4016}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1387}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5382}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5136}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3568}, + {LXB_UNICODE_IDNA_MAPPED, 4, 4316}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1705}, + {LXB_UNICODE_IDNA_MAPPED, 1, 812}, + {LXB_UNICODE_IDNA_MAPPED, 1, 136}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5410}, + {LXB_UNICODE_IDNA_MAPPED, 1, 318}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2965}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2277}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1456}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3467}, + {LXB_UNICODE_IDNA_MAPPED, 1, 273}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2273}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5003}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2157}, + {LXB_UNICODE_IDNA_MAPPED, 1, 168}, + {LXB_UNICODE_IDNA_MAPPED, 1, 464}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5230}, + {LXB_UNICODE_IDNA_MAPPED, 1, 518}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3470}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4744}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4659}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3054}, + {LXB_UNICODE_IDNA_MAPPED, 1, 775}, + {LXB_UNICODE_IDNA_MAPPED, 1, 974}, {LXB_UNICODE_IDNA_MAPPED, 1, 4992}, - {LXB_UNICODE_IDNA_MAPPED, 2, 38}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3305}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4789}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4552}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3623}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2036}, - {LXB_UNICODE_IDNA_MAPPED, 2, 578}, - {LXB_UNICODE_IDNA_MAPPED, 1, 686}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3023}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5097}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2108}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5038}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1235}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2792}, + {LXB_UNICODE_IDNA_MAPPED, 1, 630}, + {LXB_UNICODE_IDNA_MAPPED, 2, 119}, + {LXB_UNICODE_IDNA_MAPPED, 1, 242}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3951}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4491}, + {LXB_UNICODE_IDNA_MAPPED, 1, 403}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3022}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5101}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2889}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3251}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1614}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3519}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1607}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1405}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2941}, + {LXB_UNICODE_IDNA_MAPPED, 1, 182}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5306}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3030}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1033}, + {LXB_UNICODE_IDNA_MAPPED, 1, 651}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5041}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3608}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4515}, + {LXB_UNICODE_IDNA_MAPPED, 1, 244}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2690}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2121}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3604}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5067}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4422}, + {LXB_UNICODE_IDNA_MAPPED, 1, 685}, + {LXB_UNICODE_IDNA_MAPPED, 1, 803}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1899}, + {LXB_UNICODE_IDNA_MAPPED, 2, 936}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3541}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1536}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5172}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4189}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1192}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4725}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5194}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3185}, + {LXB_UNICODE_IDNA_MAPPED, 1, 801}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5011}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5208}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1084}, + {LXB_UNICODE_IDNA_MAPPED, 1, 902}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5167}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2356}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2424}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1592}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3417}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5234}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2021}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1417}, + {LXB_UNICODE_IDNA_MAPPED, 1, 744}, + {LXB_UNICODE_IDNA_MAPPED, 1, 272}, + {LXB_UNICODE_IDNA_MAPPED, 1, 658}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3279}, + {LXB_UNICODE_IDNA_MAPPED, 1, 738}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2451}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4543}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1120}, + {LXB_UNICODE_IDNA_MAPPED, 1, 234}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2645}, + {LXB_UNICODE_IDNA_MAPPED, 1, 880}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4447}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4628}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4695}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3614}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4563}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1666}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4631}, + {LXB_UNICODE_IDNA_MAPPED, 2, 983}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1208}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1786}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5174}, + {LXB_UNICODE_IDNA_MAPPED, 2, 540}, + {LXB_UNICODE_IDNA_MAPPED, 1, 787}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4483}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4685}, + {LXB_UNICODE_IDNA_MAPPED, 1, 143}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4922}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2717}, + {LXB_UNICODE_IDNA_MAPPED, 1, 399}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4480}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3411}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4791}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4911}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3149}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3342}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1708}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2862}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5399}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1777}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3065}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4575}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1488}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4668}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3461}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5088}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3992}, + {LXB_UNICODE_IDNA_MAPPED, 1, 497}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1040}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5033}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5326}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4736}, + {LXB_UNICODE_IDNA_MAPPED, 1, 800}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5275}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2040}, + {LXB_UNICODE_IDNA_MAPPED, 1, 680}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2072}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4418}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4816}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5298}, {LXB_UNICODE_IDNA_MAPPED, 1, 5288}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1554}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5057}, - {LXB_UNICODE_IDNA_MAPPED, 1, 426}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1513}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1806}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1705}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3310}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4246}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2139}, + {LXB_UNICODE_IDNA_MAPPED, 1, 876}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5107}, + {LXB_UNICODE_IDNA_MAPPED, 1, 349}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1394}, + {LXB_UNICODE_IDNA_MAPPED, 1, 70}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2976}, + {LXB_UNICODE_IDNA_MAPPED, 1, 103}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3189}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3473}, + {LXB_UNICODE_IDNA_MAPPED, 1, 150}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5339}, {LXB_UNICODE_IDNA_MAPPED, 1, 1619}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4539}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2772}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2366}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4382}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5186}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3095}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4400}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2821}, - {LXB_UNICODE_IDNA_MAPPED, 1, 796}, - {LXB_UNICODE_IDNA_MAPPED, 5, 2298}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4849}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4603}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4805}, - {LXB_UNICODE_IDNA_MAPPED, 1, 460}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4537}, - {LXB_UNICODE_IDNA_MAPPED, 3, 4108}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1562}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5360}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5133}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4467}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3101}, - {LXB_UNICODE_IDNA_MAPPED, 2, 4863}, - {LXB_UNICODE_IDNA_MAPPED, 2, 544}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5119}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1232}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1567}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1549}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1452}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1448}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3106}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3182}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3114}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4703}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5229}, - {LXB_UNICODE_IDNA_MAPPED, 1, 719}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1413}, - {LXB_UNICODE_IDNA_MAPPED, 3, 41}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5041}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3135}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1698}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1875}, - {LXB_UNICODE_IDNA_MAPPED, 2, 2283}, - {LXB_UNICODE_IDNA_MAPPED, 3, 1093}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4903}, - {LXB_UNICODE_IDNA_MAPPED, 1, 60}, - {LXB_UNICODE_IDNA_MAPPED, 1, 748}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5276}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1160}, - {LXB_UNICODE_IDNA_MAPPED, 1, 468}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5135}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3315}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5242}, - {LXB_UNICODE_IDNA_MAPPED, 1, 697}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4890}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5264}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1958}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3217}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3256}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4618}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1587}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3215}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3877}, + {LXB_UNICODE_IDNA_MAPPED, 1, 677}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2322}, + {LXB_UNICODE_IDNA_MAPPED, 1, 450}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5352}, + {LXB_UNICODE_IDNA_MAPPED, 1, 896}, + {LXB_UNICODE_IDNA_MAPPED, 1, 504}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3168}, + {LXB_UNICODE_IDNA_MAPPED, 1, 710}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2934}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3561}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3303}, + {LXB_UNICODE_IDNA_MAPPED, 3, 599}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4985}, + {LXB_UNICODE_IDNA_MAPPED, 1, 227}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4821}, + {LXB_UNICODE_IDNA_MAPPED, 1, 724}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4680}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3127}, + {LXB_UNICODE_IDNA_MAPPED, 1, 81}, {LXB_UNICODE_IDNA_MAPPED, 1, 3322}, - {LXB_UNICODE_IDNA_MAPPED, 1, 649}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3130}, - {LXB_UNICODE_IDNA_MAPPED, 1, 172}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1709}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2982}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1669}, - {LXB_UNICODE_IDNA_MAPPED, 1, 250}, - {LXB_UNICODE_IDNA_MAPPED, 1, 164}, - {LXB_UNICODE_IDNA_MAPPED, 18, 4340}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4464}, + {LXB_UNICODE_IDNA_MAPPED, 1, 68}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3965}, + {LXB_UNICODE_IDNA_MAPPED, 1, 102}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4585}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1795}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4673}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2768}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1138}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4461}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2621}, + {LXB_UNICODE_IDNA_MAPPED, 1, 741}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1557}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3399}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3452}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4869}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5414}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1449}, + {LXB_UNICODE_IDNA_MAPPED, 1, 891}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5141}, + {LXB_UNICODE_IDNA_MAPPED, 1, 882}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5387}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2944}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3929}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5266}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1422}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4468}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1425}, {LXB_UNICODE_IDNA_MAPPED, 1, 5005}, - {LXB_UNICODE_IDNA_MAPPED, 1, 776}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4535}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1520}, - {LXB_UNICODE_IDNA_MAPPED, 1, 821}, - {LXB_UNICODE_IDNA_MAPPED, 1, 421}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1790}, - {LXB_UNICODE_IDNA_MAPPED, 2, 3892}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4978}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5399}, - {LXB_UNICODE_IDNA_MAPPED, 1, 899}, - {LXB_UNICODE_IDNA_MAPPED, 1, 838}, - {LXB_UNICODE_IDNA_MAPPED, 3, 2569}, - {LXB_UNICODE_IDNA_MAPPED, 1, 705}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3150}, - {LXB_UNICODE_IDNA_MAPPED, 1, 744}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1430}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4641}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3299}, - {LXB_UNICODE_IDNA_MAPPED, 1, 708}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2927}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4435}, - {LXB_UNICODE_IDNA_MAPPED, 1, 417}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1015}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3102}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4984}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4954}, - {LXB_UNICODE_IDNA_MAPPED, 2, 1210}, - {LXB_UNICODE_IDNA_MAPPED, 2, 564}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3043}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2947}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3257}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4583}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4687}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4551}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2082}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1387}, - {LXB_UNICODE_IDNA_MAPPED, 1, 5001}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3113}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3390}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2518}, {LXB_UNICODE_IDNA_MAPPED, 1, 1626}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3088}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4885}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1126}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3334}, + {LXB_UNICODE_IDNA_MAPPED, 1, 407}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3009}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4433}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3337}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2760}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3092}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1677}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3014}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4536}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2842}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2061}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2334}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5104}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4549}, + {LXB_UNICODE_IDNA_MAPPED, 1, 830}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4851}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1863}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3557}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5255}, + {LXB_UNICODE_IDNA_MAPPED, 1, 141}, + {LXB_UNICODE_IDNA_MAPPED, 5, 2344}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1516}, + {LXB_UNICODE_IDNA_MAPPED, 1, 480}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1716}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4252}, + {LXB_UNICODE_IDNA_MAPPED, 1, 701}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2143}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1564}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1241}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5093}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5293}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1660}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1396}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3212}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3263}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5320}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3475}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1217}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3965}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2217}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2973}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3233}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4899}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1490}, + {LXB_UNICODE_IDNA_MAPPED, 1, 240}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1634}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5374}, + {LXB_UNICODE_IDNA_MAPPED, 1, 847}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4739}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5007}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3226}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5369}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4742}, + {LXB_UNICODE_IDNA_MAPPED, 1, 95}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5344}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3496}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2076}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3715}, + {LXB_UNICODE_IDNA_MAPPED, 1, 705}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5270}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3544}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3526}, + {LXB_UNICODE_IDNA_MAPPED, 2, 544}, + {LXB_UNICODE_IDNA_MAPPED, 1, 467}, + {LXB_UNICODE_IDNA_MAPPED, 1, 142}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2854}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4102}, + {LXB_UNICODE_IDNA_MAPPED, 1, 321}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3332}, + {LXB_UNICODE_IDNA_MAPPED, 2, 989}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2848}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2907}, + {LXB_UNICODE_IDNA_MAPPED, 1, 389}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3393}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3429}, + {LXB_UNICODE_IDNA_MAPPED, 1, 639}, + {LXB_UNICODE_IDNA_MAPPED, 1, 520}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4838}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1881}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5322}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4509}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1797}, + {LXB_UNICODE_IDNA_MAPPED, 1, 134}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1446}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3176}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2625}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5295}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4444}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1530}, + {LXB_UNICODE_IDNA_MAPPED, 1, 241}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2778}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4441}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2056}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3943}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4466}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5022}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3115}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4458}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5220}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2525}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3375}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4859}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4686}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3124}, + {LXB_UNICODE_IDNA_MAPPED, 1, 643}, + {LXB_UNICODE_IDNA_MAPPED, 4, 1273}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2063}, + {LXB_UNICODE_IDNA_MAPPED, 1, 770}, + {LXB_UNICODE_IDNA_MAPPED, 1, 183}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5036}, + {LXB_UNICODE_IDNA_MAPPED, 1, 63}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5181}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5421}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1639}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1598}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4340}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5084}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2443}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2083}, + {LXB_UNICODE_IDNA_MAPPED, 1, 111}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3237}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2433}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3308}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1595}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5062}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3207}, + {LXB_UNICODE_IDNA_MAPPED, 2, 589}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2086}, + {LXB_UNICODE_IDNA_MAPPED, 2, 570}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3447}, + {LXB_UNICODE_IDNA_MAPPED, 1, 502}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2694}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1693}, + {LXB_UNICODE_IDNA_MAPPED, 2, 4802}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4908}, + {LXB_UNICODE_IDNA_MAPPED, 1, 225}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5395}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2133}, + {LXB_UNICODE_IDNA_MAPPED, 1, 482}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1408}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3598}, + {LXB_UNICODE_IDNA_MAPPED, 2, 1005}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3501}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4828}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1878}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5189}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4195}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1411}, + {LXB_UNICODE_IDNA_MAPPED, 1, 699}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3835}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2127}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4727}, + {LXB_UNICODE_IDNA_MAPPED, 1, 351}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3098}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3017}, + {LXB_UNICODE_IDNA_MAPPED, 2, 104}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5056}, + {LXB_UNICODE_IDNA_MAPPED, 1, 916}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2362}, + {LXB_UNICODE_IDNA_MAPPED, 1, 72}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1620}, + {LXB_UNICODE_IDNA_MAPPED, 2, 617}, + {LXB_UNICODE_IDNA_MAPPED, 1, 771}, + {LXB_UNICODE_IDNA_MAPPED, 1, 580}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2027}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4974}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4807}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1707}, + {LXB_UNICODE_IDNA_MAPPED, 1, 211}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4665}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3277}, + {LXB_UNICODE_IDNA_MAPPED, 4, 2457}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4620}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4573}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1493}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2733}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3244}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4581}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1789}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1016}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4693}, + {LXB_UNICODE_IDNA_MAPPED, 2, 3612}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4477}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3371}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4565}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1792}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4183}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4625}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3425}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5191}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5408}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2654}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5151}, + {LXB_UNICODE_IDNA_MAPPED, 1, 773}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4174}, + {LXB_UNICODE_IDNA_MAPPED, 1, 226}, + {LXB_UNICODE_IDNA_MAPPED, 1, 637}, + {LXB_UNICODE_IDNA_MAPPED, 2, 2660}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5126}, + {LXB_UNICODE_IDNA_MAPPED, 1, 472}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5393}, + {LXB_UNICODE_IDNA_MAPPED, 3, 1940}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4114}, + {LXB_UNICODE_IDNA_MAPPED, 1, 247}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4117}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4924}, + {LXB_UNICODE_IDNA_MAPPED, 1, 2960}, + {LXB_UNICODE_IDNA_MAPPED, 1, 5202}, {LXB_UNICODE_IDNA_MAPPED, 1, 3340}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2978}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3453}, - {LXB_UNICODE_IDNA_MAPPED, 2, 595}, - {LXB_UNICODE_IDNA_MAPPED, 1, 58}, - {LXB_UNICODE_IDNA_MAPPED, 1, 4546}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1488}, - {LXB_UNICODE_IDNA_MAPPED, 1, 501}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1818}, - {LXB_UNICODE_IDNA_MAPPED, 1, 2967}, - {LXB_UNICODE_IDNA_MAPPED, 1, 285}, - {LXB_UNICODE_IDNA_MAPPED, 1, 3311}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1807}, - {LXB_UNICODE_IDNA_MAPPED, 1, 1512} + {LXB_UNICODE_IDNA_MAPPED, 1, 2937}, + {LXB_UNICODE_IDNA_MAPPED, 3, 3883}, + {LXB_UNICODE_IDNA_MAPPED, 3, 2868}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1524}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3180}, + {LXB_UNICODE_IDNA_MAPPED, 3, 4933}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3162}, + {LXB_UNICODE_IDNA_MAPPED, 1, 1775}, + {LXB_UNICODE_IDNA_MAPPED, 1, 3063}, + {LXB_UNICODE_IDNA_MAPPED, 1, 4904} }; static const lxb_unicode_composition_entry_t lxb_unicode_composition_entries[458] = diff --git a/ext/lexbor/lexbor/unicode/unicode.c b/ext/lexbor/lexbor/unicode/unicode.c index 991fc0a38823..ced80b430a7c 100644 --- a/ext/lexbor/lexbor/unicode/unicode.c +++ b/ext/lexbor/lexbor/unicode/unicode.c @@ -451,7 +451,7 @@ lxb_unicode_normalize_body(lxb_unicode_normalizer_t *uc, const void *data, uc->starter = p; uc->ican = p; - if (p - buf >= uc->flush_cp) { + if (lxb_size(p - buf) >= uc->flush_cp) { if (!is_cp) { status = lxb_unicode_flush(uc, cb->cb, ctx); } @@ -887,7 +887,7 @@ lxb_unicode_entry(lxb_codepoint_t cp) return &lxb_unicode_entries[0]; } - if (cp < 205744) { + if (cp < 210042) { if (cp < 83527) { if (cp < 57345) { return &lxb_unicode_entries[lxb_unicode_table_map_0_57345[cp - 0]]; @@ -897,11 +897,11 @@ lxb_unicode_entry(lxb_codepoint_t cp) } } else if (cp >= 90368) { - if (cp < 101641) { - return &lxb_unicode_entries[lxb_unicode_table_map_90368_101641[cp - 90368]]; + if (cp < 101875) { + return &lxb_unicode_entries[lxb_unicode_table_map_90368_101875[cp - 90368]]; } else if (cp >= 110576) { - return &lxb_unicode_entries[lxb_unicode_table_map_110576_205744[cp - 110576]]; + return &lxb_unicode_entries[lxb_unicode_table_map_110576_210042[cp - 110576]]; } } } diff --git a/ext/lexbor/lexbor/url/base.h b/ext/lexbor/lexbor/url/base.h index c95377ab89e1..94d0e2a1901c 100644 --- a/ext/lexbor/lexbor/url/base.h +++ b/ext/lexbor/lexbor/url/base.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023-2024 Alexander Borisov + * Copyright (C) 2023-2025 Alexander Borisov * * Author: Alexander Borisov */ @@ -17,7 +17,7 @@ extern "C" { #define LXB_URL_VERSION_MAJOR 0 -#define LXB_URL_VERSION_MINOR 3 +#define LXB_URL_VERSION_MINOR 4 #define LXB_URL_VERSION_PATCH 0 #define LXB_URL_VERSION_STRING LEXBOR_STRINGIZE(LXB_URL_VERSION_MAJOR) "." \ diff --git a/ext/lexbor/lexbor/url/url.c b/ext/lexbor/lexbor/url/url.c index 0eef7a6deba4..5a1143469d1a 100644 --- a/ext/lexbor/lexbor/url/url.c +++ b/ext/lexbor/lexbor/url/url.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023-2025 Alexander Borisov + * Copyright (C) 2023-2026 Alexander Borisov * * Author: Alexander Borisov */ @@ -14,14 +14,14 @@ #include "lexbor/core/swar.h" #include "lexbor/unicode/idna.h" -#define LEXBOR_STR_RES_MAP_LOWERCASE -#define LEXBOR_STR_RES_ALPHANUMERIC_CHARACTER -#define LEXBOR_STR_RES_ALPHA_CHARACTER -#define LEXBOR_STR_RES_CHAR_TO_TWO_HEX_VALUE -#define LEXBOR_STR_RES_MAP_HEX -#define LEXBOR_STR_RES_MAP_NUM -#include "lexbor/core/str_res.h" - +#ifndef LEXBOR_DISABLE_INTERNAL_EXTERN + LXB_EXTERN const lxb_char_t lexbor_str_res_map_lowercase[256]; + LXB_EXTERN const size_t lexbor_str_res_alphanumeric_character[256]; + LXB_EXTERN const size_t lexbor_str_res_alpha_character[256]; + LXB_EXTERN const char *lexbor_str_res_char_to_two_hex_value[257]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_num[256]; + LXB_EXTERN const lxb_char_t lexbor_str_res_map_hex[256]; +#endif #define LXB_URL_BUFFER_SIZE 4096 #define LXB_URL_BUFFER_NUM_SIZE 128 diff --git a/ext/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch b/ext/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch index 0da274053ec2..32d9d42d2bf1 100644 --- a/ext/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch +++ b/ext/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch @@ -1,4 +1,4 @@ -From 4c133fe5adfe4b8ccdd8b014d884b685143b9e66 Mon Sep 17 00:00:00 2001 +From 0cd2add6c46400b808329442f81451b369863983 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sat, 26 Aug 2023 15:08:59 +0200 Subject: [PATCH 1/6] Expose line and column information for use in PHP @@ -15,10 +15,10 @@ Subject: [PATCH 1/6] Expose line and column information for use in PHP 8 files changed, 48 insertions(+), 5 deletions(-) diff --git a/source/lexbor/dom/interfaces/node.h b/source/lexbor/dom/interfaces/node.h -index b052cf5..b5d2c50 100644 +index 6c74ac5..b95373c 100644 --- a/source/lexbor/dom/interfaces/node.h +++ b/source/lexbor/dom/interfaces/node.h -@@ -83,6 +83,8 @@ struct lxb_dom_node { +@@ -86,6 +86,8 @@ struct lxb_dom_node { lxb_dom_node_type_t type; @@ -41,10 +41,10 @@ index 79accd0..0b7f4fd 100644 const lxb_char_t *text_start; const lxb_char_t *text_end; diff --git a/source/lexbor/html/tokenizer.c b/source/lexbor/html/tokenizer.c -index 741bced..0bd9aec 100644 +index 22b88ed..1d9f378 100644 --- a/source/lexbor/html/tokenizer.c +++ b/source/lexbor/html/tokenizer.c -@@ -91,6 +91,7 @@ lxb_html_tokenizer_init(lxb_html_tokenizer_t *tkz) +@@ -92,6 +92,7 @@ lxb_html_tokenizer_init(lxb_html_tokenizer_t *tkz) tkz->pos = tkz->start; tkz->end = tkz->start + LXB_HTML_TKZ_TEMP_SIZE; @@ -52,7 +52,7 @@ index 741bced..0bd9aec 100644 tkz->tree = NULL; tkz->tags = NULL; -@@ -152,6 +153,8 @@ lxb_html_tokenizer_inherit(lxb_html_tokenizer_t *tkz_to, +@@ -153,6 +154,8 @@ lxb_html_tokenizer_inherit(lxb_html_tokenizer_t *tkz_to, tkz_to->start = tkz_from->start; tkz_to->end = tkz_from->end; tkz_to->pos = tkz_to->start; @@ -61,7 +61,7 @@ index 741bced..0bd9aec 100644 return LXB_STATUS_OK; } -@@ -312,7 +315,26 @@ lxb_html_tokenizer_chunk(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, +@@ -571,7 +574,26 @@ lxb_html_tokenizer_chunk(lxb_html_tokenizer_t *tkz, const lxb_char_t *data, tkz->last = end; while (data < end) { @@ -90,10 +90,10 @@ index 741bced..0bd9aec 100644 return tkz->status; diff --git a/source/lexbor/html/tokenizer.h b/source/lexbor/html/tokenizer.h -index ba9602f..74bb55e 100644 +index 12b7c81..aa1ac37 100644 --- a/source/lexbor/html/tokenizer.h +++ b/source/lexbor/html/tokenizer.h -@@ -73,6 +73,8 @@ struct lxb_html_tokenizer { +@@ -79,6 +79,8 @@ struct lxb_html_tokenizer { const lxb_char_t *end; const lxb_char_t *begin; const lxb_char_t *last; @@ -103,7 +103,7 @@ index ba9602f..74bb55e 100644 /* Entities */ const lexbor_sbst_entry_static_t *entity; diff --git a/source/lexbor/html/tokenizer/state.h b/source/lexbor/html/tokenizer/state.h -index 17939b9..5b095b4 100644 +index 5e91444..52eaa9a 100644 --- a/source/lexbor/html/tokenizer/state.h +++ b/source/lexbor/html/tokenizer/state.h @@ -90,6 +90,8 @@ extern "C" { @@ -116,10 +116,10 @@ index 17939b9..5b095b4 100644 while (0) diff --git a/source/lexbor/html/tree.c b/source/lexbor/html/tree.c -index ece26e9..91bfd17 100644 +index 062ea56..3f4c18d 100644 --- a/source/lexbor/html/tree.c +++ b/source/lexbor/html/tree.c -@@ -427,6 +427,9 @@ lxb_html_tree_create_element_for_token(lxb_html_tree_t *tree, +@@ -431,6 +431,9 @@ lxb_html_tree_create_element_for_token(lxb_html_tree_t *tree, return NULL; } @@ -129,7 +129,7 @@ index ece26e9..91bfd17 100644 lxb_status_t status; lxb_dom_element_t *element = lxb_dom_interface_element(node); -@@ -763,6 +766,11 @@ lxb_html_tree_insert_character_for_data(lxb_html_tree_t *tree, +@@ -767,6 +770,11 @@ lxb_html_tree_insert_character_for_data(lxb_html_tree_t *tree, lxb_dom_interface_text(text)->char_data.data = *str; @@ -141,7 +141,7 @@ index ece26e9..91bfd17 100644 if (ret_node != NULL) { *ret_node = text; } -@@ -802,6 +810,9 @@ lxb_html_tree_insert_comment(lxb_html_tree_t *tree, +@@ -806,6 +814,9 @@ lxb_html_tree_insert_comment(lxb_html_tree_t *tree, return NULL; } @@ -152,10 +152,10 @@ index ece26e9..91bfd17 100644 tree->document->dom_document.text); if (tree->status != LXB_STATUS_OK) { diff --git a/source/lexbor/html/tree/error.c b/source/lexbor/html/tree/error.c -index e6e43f4..88ad8c4 100644 +index ffdc55c..ef36eab 100644 --- a/source/lexbor/html/tree/error.c +++ b/source/lexbor/html/tree/error.c -@@ -21,8 +21,9 @@ lxb_html_tree_error_add(lexbor_array_obj_t *parse_errors, +@@ -22,8 +22,9 @@ lxb_html_tree_error_add(lexbor_array_obj_t *parse_errors, } entry->id = id; @@ -168,10 +168,10 @@ index e6e43f4..88ad8c4 100644 return entry; } diff --git a/source/lexbor/html/tree/error.h b/source/lexbor/html/tree/error.h -index 2fd06cb..ed1859f 100644 +index 7a212af..b186772 100644 --- a/source/lexbor/html/tree/error.h +++ b/source/lexbor/html/tree/error.h -@@ -97,8 +97,9 @@ lxb_html_tree_error_id_t; +@@ -109,8 +109,9 @@ lxb_html_tree_error_id_t; typedef struct { lxb_html_tree_error_id_t id; @@ -184,5 +184,5 @@ index 2fd06cb..ed1859f 100644 lxb_html_tree_error_t; -- -2.49.0 +2.51.2 diff --git a/ext/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch b/ext/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch index a2df20e3bae4..1902abf96e3a 100644 --- a/ext/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch +++ b/ext/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch @@ -1,4 +1,4 @@ -From eb5e3769950cd9c0bc59066d94d6da9291f43af8 Mon Sep 17 00:00:00 2001 +From a4c29ba8d1ea1065ce6bd4a34382d53140cf1924 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Mon, 14 Aug 2023 20:18:51 +0200 Subject: [PATCH 2/6] Track implied added nodes for options use in PHP @@ -11,7 +11,7 @@ Subject: [PATCH 2/6] Track implied added nodes for options use in PHP 4 files changed, 8 insertions(+) diff --git a/source/lexbor/html/tree.h b/source/lexbor/html/tree.h -index 9564608..8ad32a4 100644 +index 4912efb..7b2c620 100644 --- a/source/lexbor/html/tree.h +++ b/source/lexbor/html/tree.h @@ -55,6 +55,9 @@ struct lxb_html_tree { @@ -63,5 +63,5 @@ index 05fe738..1e09cda 100644 break; -- -2.49.0 +2.51.2 diff --git a/ext/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch b/ext/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch index 4c3cdc67a65d..51f77483bc6e 100644 --- a/ext/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch +++ b/ext/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch @@ -1,4 +1,4 @@ -From de74c24d95342280266ebdac6f8dabc70ccfacab Mon Sep 17 00:00:00 2001 +From 46fc776449252e74795569759a19d13857a59069 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Thu, 24 Aug 2023 22:57:48 +0200 Subject: [PATCH 3/6] Patch utilities and data structure to be able to generate @@ -8,10 +8,10 @@ Changed the generation script to check if everything fits in 32-bits. And change the actual field types to 32-bits. This decreases the hash tables in size. --- - source/lexbor/core/shs.h | 4 +- - utils/lexbor/encoding/single-byte.py | 2 +- - utils/lexbor/lexbor/LXB.py | 12 +- - 3 files changed, 12 insertions(+), 6 deletions(-) + source/lexbor/core/shs.h | 4 ++-- + utils/lexbor/encoding/single-byte.py | 4 ++-- + utils/lexbor/lexbor/LXB.py | 12 +++++++++--- + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/source/lexbor/core/shs.h b/source/lexbor/core/shs.h index 7a63a07..c84dfaa 100644 @@ -30,7 +30,7 @@ index 7a63a07..c84dfaa 100644 lexbor_shs_hash_t; diff --git a/utils/lexbor/encoding/single-byte.py b/utils/lexbor/encoding/single-byte.py -index 9a85d54..ec2023c 100755 +index d7d1bb2..5420c16 100755 --- a/utils/lexbor/encoding/single-byte.py +++ b/utils/lexbor/encoding/single-byte.py @@ -128,7 +128,7 @@ class SingleByte: @@ -42,6 +42,15 @@ index 9a85d54..ec2023c 100755 return hash_key.create(rate = 1) +@@ -161,7 +161,7 @@ def toHex(s): + lst = [] + + for ch in bytes(s, 'utf-8'): +- hv = hex(ch).replace('0x', '\\\\x') ++ hv = hex(ch).replace('0x', '\\x') + lst.append("'{}'".format(hv)) + + return ', '.join(lst) diff --git a/utils/lexbor/lexbor/LXB.py b/utils/lexbor/lexbor/LXB.py index 3e75812..2370c66 100755 --- a/utils/lexbor/lexbor/LXB.py @@ -84,5 +93,5 @@ index 3e75812..2370c66 100755 result.append("};") -- -2.49.0 +2.51.2 diff --git a/ext/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch b/ext/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch index c678146f2ada..6cb6658a164b 100644 --- a/ext/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch +++ b/ext/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch @@ -1,4 +1,4 @@ -From 1837e6a296a2bac71e37e566435542f208b4fa23 Mon Sep 17 00:00:00 2001 +From ae9d7254ac129cc3be34de6fd34af27baf3bb396 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:26:47 +0100 Subject: [PATCH 4/6] Remove unused upper case tag static data @@ -9,10 +9,10 @@ Subject: [PATCH 4/6] Remove unused upper case tag static data 2 files changed, 4 insertions(+) diff --git a/source/lexbor/tag/res.h b/source/lexbor/tag/res.h -index c7190c5..4ad1f37 100644 +index 604757f..5672d4a 100644 --- a/source/lexbor/tag/res.h +++ b/source/lexbor/tag/res.h -@@ -224,6 +224,7 @@ static const lxb_tag_data_t lxb_tag_res_data_default[LXB_TAG__LAST_ENTRY] = +@@ -226,6 +226,7 @@ static const lxb_tag_data_t lxb_tag_res_data_default[LXB_TAG__LAST_ENTRY] = {{.u.short_str = "xmp", .length = 3, .next = NULL}, LXB_TAG_XMP, 1, true} }; @@ -20,13 +20,13 @@ index c7190c5..4ad1f37 100644 static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] = { {{.u.short_str = "#UNDEF", .length = 6, .next = NULL}, LXB_TAG__UNDEF, 1, true}, -@@ -423,6 +424,7 @@ static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] +@@ -427,6 +428,7 @@ static const lxb_tag_data_t lxb_tag_res_data_upper_default[LXB_TAG__LAST_ENTRY] {{.u.short_str = "WBR", .length = 3, .next = NULL}, LXB_TAG_WBR, 1, true}, {{.u.short_str = "XMP", .length = 3, .next = NULL}, LXB_TAG_XMP, 1, true} }; +#endif - static const lexbor_shs_entry_t lxb_tag_res_shs_data_default[] = + static const lexbor_shs_entry_t lxb_tag_res_shs_data_default[263] = { diff --git a/source/lexbor/tag/tag.c b/source/lexbor/tag/tag.c index 780bc47..be5bb30 100644 @@ -49,5 +49,5 @@ index 780bc47..be5bb30 100644 /* * No inline functions for ABI. -- -2.49.0 +2.51.2 diff --git a/ext/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch b/ext/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch index bf2acce1a848..9ef6e305e498 100644 --- a/ext/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch +++ b/ext/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch @@ -1,4 +1,4 @@ -From 065923a993a004b8891ad3992c99e7e63e77bad3 Mon Sep 17 00:00:00 2001 +From 19cf6183813e013dfe0eb2303c15eaf6e01b9faf Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:29:31 +0100 Subject: [PATCH 5/6] Shrink size of static binary search tree @@ -7,10 +7,9 @@ This also makes it more efficient on the data cache. --- source/lexbor/core/sbst.h | 19 ++++++++++++++----- source/lexbor/html/tokenizer/state.c | 2 +- - utils/lexbor/html/tmp/tokenizer_res.h | 2 +- - utils/lexbor/html/tokenizer_entities_bst.py | 10 +++++----- + utils/lexbor/html/tokenizer_entities_bst.py | 8 ++++---- utils/lexbor/lexbor/LXB.py | 2 +- - 5 files changed, 21 insertions(+), 12 deletions(-) + 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/source/lexbor/core/sbst.h b/source/lexbor/core/sbst.h index b0fbc54..15a1d40 100644 @@ -48,10 +47,10 @@ index b0fbc54..15a1d40 100644 lexbor_sbst_entry_static_t; diff --git a/source/lexbor/html/tokenizer/state.c b/source/lexbor/html/tokenizer/state.c -index 158aade..207b909 100644 +index db362c6..6c3cbeb 100644 --- a/source/lexbor/html/tokenizer/state.c +++ b/source/lexbor/html/tokenizer/state.c -@@ -1820,7 +1820,7 @@ lxb_html_tokenizer_state_char_ref_named(lxb_html_tokenizer_t *tkz, +@@ -1825,7 +1825,7 @@ lxb_html_tokenizer_state_char_ref_named(lxb_html_tokenizer_t *tkz, goto done; } @@ -60,21 +59,8 @@ index 158aade..207b909 100644 tkz->entity_end = (tkz->pos + (data - begin)) - tkz->start; tkz->entity_match = entry; } -diff --git a/utils/lexbor/html/tmp/tokenizer_res.h b/utils/lexbor/html/tmp/tokenizer_res.h -index b3701d5..73ab66e 100644 ---- a/utils/lexbor/html/tmp/tokenizer_res.h -+++ b/utils/lexbor/html/tmp/tokenizer_res.h -@@ -6,7 +6,7 @@ - - /* - * Caution!!! Important!!! -- * This file generated by the script -+ * This file is generated by the script - * "utils/lexbor/html/tokenizer_entities_bst.py"! - * Do not change this file! - */ diff --git a/utils/lexbor/html/tokenizer_entities_bst.py b/utils/lexbor/html/tokenizer_entities_bst.py -index 4fa0999..8bd83b2 100755 +index b34bca1..2bfea81 100755 --- a/utils/lexbor/html/tokenizer_entities_bst.py +++ b/utils/lexbor/html/tokenizer_entities_bst.py @@ -1,6 +1,6 @@ @@ -112,15 +98,8 @@ index 4fa0999..8bd83b2 100755 lst.append(hv) return ''.join(lst) -@@ -210,5 +210,5 @@ def entities_bst_print(bst): - - if __name__ == "__main__": - entities_bst("tmp/tokenizer_res.h", -- "../../../source/lexbor/html/tokenizer_res.h", -+ "../../../source/lexbor/html/tokenizer/res.h", - "data/entities.json"); diff --git a/utils/lexbor/lexbor/LXB.py b/utils/lexbor/lexbor/LXB.py -index 3e75812..b068ea3 100755 +index 2370c66..c41e645 100755 --- a/utils/lexbor/lexbor/LXB.py +++ b/utils/lexbor/lexbor/LXB.py @@ -27,7 +27,7 @@ class Temp: @@ -133,5 +112,5 @@ index 3e75812..b068ea3 100755 fh.close() -- -2.49.0 +2.51.2 diff --git a/ext/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch b/ext/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch index aa64d88ceb18..a643f9716488 100644 --- a/ext/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch +++ b/ext/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch @@ -1,19 +1,17 @@ -From fbb1e8945c4b12d43e7fddc3c34670b5792e2dca Mon Sep 17 00:00:00 2001 +From 54399ee441d922d89c32909e2028f899f6091cd6 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 7 Jan 2024 21:59:28 +0100 Subject: [PATCH 6/6] Patch out unused CSS style code --- - source/lexbor/css/rule.h | 2 ++ - source/lexbor/style/dom/interfaces/document.c | 12 ++++++++---- - source/lexbor/style/html/interfaces/document.h | 2 ++ - 3 files changed, 12 insertions(+), 4 deletions(-) + source/lexbor/css/rule.h | 2 ++ + 1 file changed, 2 insertions(+) diff --git a/source/lexbor/css/rule.h b/source/lexbor/css/rule.h -index 7cc4f0b..bd191f9 100644 +index 308dced..d192a01 100644 --- a/source/lexbor/css/rule.h +++ b/source/lexbor/css/rule.h -@@ -339,6 +339,7 @@ lxb_css_rule_ref_dec(lxb_css_rule_t *rule) +@@ -361,6 +361,7 @@ lxb_css_rule_ref_dec(lxb_css_rule_t *rule) lxb_inline void lxb_css_rule_ref_dec_destroy(lxb_css_rule_t *rule) { @@ -21,7 +19,7 @@ index 7cc4f0b..bd191f9 100644 if (rule->ref_count > 0) { rule->ref_count--; } -@@ -346,6 +347,7 @@ lxb_css_rule_ref_dec_destroy(lxb_css_rule_t *rule) +@@ -368,6 +369,7 @@ lxb_css_rule_ref_dec_destroy(lxb_css_rule_t *rule) if (rule->ref_count == 0) { (void) lxb_css_rule_destroy(rule, true); } @@ -29,96 +27,6 @@ index 7cc4f0b..bd191f9 100644 } lxb_inline void -diff --git a/source/lexbor/style/dom/interfaces/document.c b/source/lexbor/style/dom/interfaces/document.c -index 8a63e8e..f885dc3 100644 ---- a/source/lexbor/style/dom/interfaces/document.c -+++ b/source/lexbor/style/dom/interfaces/document.c -@@ -280,6 +280,7 @@ lxb_status_t - lxb_dom_document_stylesheet_apply(lxb_dom_document_t *document, - lxb_css_stylesheet_t *sst) - { -+#if 0 - lxb_status_t status = LXB_STATUS_OK; - lxb_css_rule_t *rule; - lxb_css_rule_list_t *list; -@@ -310,7 +311,7 @@ lxb_dom_document_stylesheet_apply(lxb_dom_document_t *document, - - rule = rule->next; - } -- -+#endif - return LXB_STATUS_OK; - } - -@@ -329,6 +330,7 @@ lxb_status_t - lxb_dom_document_stylesheet_remove(lxb_dom_document_t *document, - lxb_css_stylesheet_t *sst) - { -+#if 0 - size_t i, length; - lxb_status_t status = LXB_STATUS_OK; - lxb_css_rule_t *rule; -@@ -372,13 +374,14 @@ lxb_dom_document_stylesheet_remove(lxb_dom_document_t *document, - length = lexbor_array_length(document->css->stylesheets); - } - } -- -+#endif - return LXB_STATUS_OK; - } - - lxb_status_t - lxb_dom_document_element_styles_attach(lxb_dom_element_t *element) - { -+#if 0 - lxb_status_t status = LXB_STATUS_OK; - lxb_css_rule_t *rule; - lexbor_array_t *ssts; -@@ -413,7 +416,7 @@ lxb_dom_document_element_styles_attach(lxb_dom_element_t *element) - rule = rule->next; - } - } -- -+#endif - return LXB_STATUS_OK; - } - -@@ -521,6 +524,7 @@ lxb_dom_document_style_attach_cb(lxb_dom_node_t *node, - lxb_status_t - lxb_document_apply_stylesheets(lxb_dom_document_t *document) - { -+#if 0 - size_t i, length; - lxb_status_t status; - lxb_css_stylesheet_t *sst; -@@ -539,6 +543,6 @@ lxb_document_apply_stylesheets(lxb_dom_document_t *document) - return status; - } - } -- -+#endif - return LXB_STATUS_OK; - } -diff --git a/source/lexbor/style/html/interfaces/document.h b/source/lexbor/style/html/interfaces/document.h -index 0307cd9..127c4cd 100644 ---- a/source/lexbor/style/html/interfaces/document.h -+++ b/source/lexbor/style/html/interfaces/document.h -@@ -134,6 +134,7 @@ lxb_html_document_stylesheet_destroy_all(lxb_html_document_t *document, - destroy_memory); - } - -+#if 0 - lxb_inline lxb_status_t - lxb_html_document_style_attach(lxb_html_document_t *document, - lxb_css_rule_style_t *style) -@@ -158,6 +159,7 @@ lxb_html_document_style_attach_by_element(lxb_html_document_t *document, - return lxb_dom_document_style_attach_by_element(lxb_dom_interface_document(document), - element, style); - } -+#endif - - lxb_inline lxb_status_t - lxb_html_document_apply_stylesheets(lxb_html_document_t *document) -- -2.49.0 +2.51.2 diff --git a/ext/lexbor/patches/README.md b/ext/lexbor/patches/README.md index 53d58e03da08..6c7b78fd59fa 100644 --- a/ext/lexbor/patches/README.md +++ b/ext/lexbor/patches/README.md @@ -1,7 +1,10 @@ # Lexbor patches +> [!IMPORTANT] +> This process was largely automated in update-lexbor.sh. + Upon syncing the Lexbor sources, the patches in this directory need to be applied. -The current Lexbor version is 2.5.0. +The current Lexbor version is 2.7.0. ## Overview diff --git a/ext/lexbor/patches/update-lexbor.sh b/ext/lexbor/patches/update-lexbor.sh new file mode 100755 index 000000000000..55e330a87644 --- /dev/null +++ b/ext/lexbor/patches/update-lexbor.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +set -e + +PATCHES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +LEXBOR_REPO="https://github.com/lexbor/lexbor" +LEXBOR_REF="v2.7.0" +LEXBOR_BASE="$(cd "$PATCHES_DIR/.." && pwd)" +LEXBOR_DIR="$LEXBOR_BASE/lexbor" +LEXBOR_TMP_DIR="$LEXBOR_BASE/lexbor_tmp" +LEXBOR_COMPONENTS=(core css dom encoding html ns ports punycode selectors tag unicode url) + +# Clone +git clone "$LEXBOR_REPO" "$LEXBOR_TMP_DIR" +(cd "$LEXBOR_TMP_DIR" && git checkout "$LEXBOR_REF") + +# Apply patches +mapfile -t patches < <(ls "$PATCHES_DIR"/*.patch) +cd "$LEXBOR_TMP_DIR" +for patch in "${patches[@]}"; do + if ! git am -3 "$patch"; then + read -p "Patch $(basename "$patch") did not apply cleanly. Resolve, stage and press Enter to continue. " + git am --continue + fi +done + +# Refresh patches +NUM_PATCHES=${#patches[@]} +git format-patch "HEAD~$NUM_PATCHES" -o "$PATCHES_DIR" + +# Run code-generation tools +(cd "$LEXBOR_TMP_DIR/utils/lexbor/encoding" && python3 single-byte.py) +(cd "$LEXBOR_TMP_DIR/utils/lexbor/html" && python3 tokenizer_entities_bst.py) + +# (Re)move files +mv source/lexbor/encoding/multi_res.c source/lexbor/encoding/multi.c +mv source/lexbor/encoding/range_res.c source/lexbor/encoding/range.c +mv source/lexbor/encoding/single_res.c source/lexbor/encoding/single.c +rm source/lexbor/html/serialize.c +rm source/lexbor/ports/posix/lexbor/core/fs.c +rm source/lexbor/ports/posix/lexbor/core/perf.c +rm source/lexbor/ports/windows_nt/lexbor/core/fs.c +rm source/lexbor/ports/windows_nt/lexbor/core/perf.c +rm source/lexbor/selectors/selectors.c +rm source/lexbor/selectors/selectors.h +find . -name "*.cmake" -delete + +# Replace components +for dir in "${LEXBOR_COMPONENTS[@]}"; do + dst="$LEXBOR_DIR/$dir" + rm -rf "$dst" + cp -r "source/lexbor/$dir" "$dst" +done +rm -rf "$LEXBOR_TMP_DIR" diff --git a/ext/lexbor/php_lexbor.c b/ext/lexbor/php_lexbor.c index af61f90291df..85f840624402 100644 --- a/ext/lexbor/php_lexbor.c +++ b/ext/lexbor/php_lexbor.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | | Mate Kocsis | diff --git a/ext/lexbor/php_lexbor.h b/ext/lexbor/php_lexbor.h index fbdc71746dca..155998388549 100644 --- a/ext/lexbor/php_lexbor.h +++ b/ext/lexbor/php_lexbor.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | | Mate Kocsis | diff --git a/ext/libxml/image_svg.c b/ext/libxml/image_svg.c index 091f7e283168..69343fe298b0 100644 --- a/ext/libxml/image_svg.c +++ b/ext/libxml/image_svg.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/libxml/image_svg.h b/ext/libxml/image_svg.h index d023334af36b..b665c2c8d912 100644 --- a/ext/libxml/image_svg.h +++ b/ext/libxml/image_svg.h @@ -1,16 +1,14 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Niels Dossche | +----------------------------------------------------------------------+ */ diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index 5a0e1f3c7a09..1f3d7c4d8789 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Wez Furlong | diff --git a/ext/libxml/mime_sniff.c b/ext/libxml/mime_sniff.c index 14034f3db267..88c3b2d96451 100644 --- a/ext/libxml/mime_sniff.c +++ b/ext/libxml/mime_sniff.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Niels Dossche | +----------------------------------------------------------------------+ diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index eb10e7e4cb93..5896f70803f8 100644 --- a/ext/libxml/php_libxml.h +++ b/ext/libxml/php_libxml.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Wez Furlong | diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cjk.c b/ext/mbstring/libmbfl/filters/mbfilter_cjk.c index 6a9c3803c470..83bc34ae1b77 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cjk.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cjk.c @@ -279,7 +279,7 @@ static int mbfl_filt_conv_jis_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; @@ -1836,7 +1836,7 @@ static int mbfl_filt_conv_jis2004_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; @@ -2528,7 +2528,7 @@ static int mbfl_filt_conv_cp5022x_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; @@ -4115,7 +4115,7 @@ static int mbfl_filt_conv_2022kr_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; @@ -9223,7 +9223,7 @@ static int mbfl_filt_conv_hz_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.c b/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.c index ebb44cc3154f..d8a536c0eea0 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.h b/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.h index 5cf331a51c7d..775ababfde08 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.h +++ b/ext/mbstring/libmbfl/filters/mbfilter_singlebyte.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf7.c b/ext/mbstring/libmbfl/filters/mbfilter_utf7.c index 87bdc590e6d5..0ee74c032140 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf7.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf7.c @@ -260,7 +260,7 @@ int mbfl_filt_conv_utf7_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; @@ -368,7 +368,7 @@ int mbfl_filt_conv_wchar_utf7(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c b/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c index ac49e6a165b4..ba34255ebc13 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c @@ -282,7 +282,7 @@ int mbfl_filt_conv_utf7imap_wchar(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; @@ -409,7 +409,7 @@ int mbfl_filt_conv_wchar_utf7imap(int c, mbfl_convert_filter *filter) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } return 0; diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c index 4445a0dc5a1b..d0ee90266b52 100644 --- a/ext/mbstring/mb_gpc.c +++ b/ext/mbstring/mb_gpc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rui Hirokawa | | Moriyoshi Koizumi | diff --git a/ext/mbstring/mb_gpc.h b/ext/mbstring/mb_gpc.h index 63337755cdea..fdbb0c818238 100644 --- a/ext/mbstring/mb_gpc.h +++ b/ext/mbstring/mb_gpc.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rui Hirokawa | | Moriyoshi Koizumi | diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 95b624ef1d2d..8780712aee96 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Tsukada Takuya | | Rui Hirokawa | @@ -1216,17 +1214,17 @@ PHP_FUNCTION(mb_language) ZEND_PARSE_PARAMETERS_END(); if (name == NULL) { - RETVAL_STRING((char *)mbfl_no_language2name(MBSTRG(language))); + RETVAL_STRING(mbfl_no_language2name(MBSTRG(language))); } else { - zend_string *ini_name = ZSTR_INIT_LITERAL("mbstring.language", 0); + zend_string *ini_name = ZSTR_INIT_LITERAL("mbstring.language", false); if (FAILURE == zend_alter_ini_entry(ini_name, name, PHP_INI_USER, PHP_INI_STAGE_RUNTIME)) { zend_argument_value_error(1, "must be a valid language, \"%s\" given", ZSTR_VAL(name)); - zend_string_release_ex(ini_name, 0); + zend_string_release_ex(ini_name, false); RETURN_THROWS(); } // TODO Make return void RETVAL_TRUE; - zend_string_release_ex(ini_name, 0); + zend_string_release_ex(ini_name, false); } } /* }}} */ @@ -1509,7 +1507,7 @@ PHP_FUNCTION(mb_preferred_mime_name) php_error_docref(NULL, E_WARNING, "No MIME preferred name corresponding to \"%s\"", name); RETVAL_FALSE; } else { - RETVAL_STRING((char *)preferred_name); + RETVAL_STRING(preferred_name); } } /* }}} */ @@ -3517,7 +3515,7 @@ PHP_FUNCTION(mb_detect_encoding) RETURN_FALSE; } - RETVAL_STRING((char *)ret->name); + RETVAL_STRING(ret->name); } /* }}} */ @@ -3563,7 +3561,7 @@ PHP_FUNCTION(mb_encoding_aliases) array_init(return_value); if (encoding->aliases != NULL) { for (const char **alias = encoding->aliases; *alias; ++alias) { - add_next_index_string(return_value, (char *)*alias); + add_next_index_string(return_value, *alias); } } } @@ -4768,7 +4766,7 @@ PHP_FUNCTION(mb_send_mail) str_headers = smart_str_extract(&str); - zend_string *force_extra_parameters = zend_ini_str_ex("mail.force_extra_parameters", strlen("mail.force_extra_parameters"), false, NULL); + zend_string *force_extra_parameters = zend_ini_str_literal("mail.force_extra_parameters"); if (force_extra_parameters) { extra_cmd = php_escape_shell_cmd(force_extra_parameters); } else if (extra_cmd) { @@ -4804,7 +4802,7 @@ PHP_FUNCTION(mb_get_info) { zend_string *type = NULL; size_t n; - char *name; + const char *name; zval row; const mbfl_encoding **entry; const mbfl_language *lang = mbfl_no2language(MBSTRG(language)); @@ -4819,26 +4817,26 @@ PHP_FUNCTION(mb_get_info) if (!type || zend_string_equals_literal_ci(type, "all")) { array_init(return_value); if (MBSTRG(current_internal_encoding)) { - add_assoc_string(return_value, "internal_encoding", (char *)MBSTRG(current_internal_encoding)->name); + add_assoc_string(return_value, "internal_encoding", MBSTRG(current_internal_encoding)->name); } if (MBSTRG(http_input_identify)) { - add_assoc_string(return_value, "http_input", (char *)MBSTRG(http_input_identify)->name); + add_assoc_string(return_value, "http_input", MBSTRG(http_input_identify)->name); } if (MBSTRG(current_http_output_encoding)) { - add_assoc_string(return_value, "http_output", (char *)MBSTRG(current_http_output_encoding)->name); + add_assoc_string(return_value, "http_output", MBSTRG(current_http_output_encoding)->name); } add_assoc_str(return_value, "http_output_conv_mimetypes", - zend_ini_str("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes") - 1, 0) + zend_string_copy(zend_ini_str_literal("mbstring.http_output_conv_mimetypes")) ); - name = (char *)mbfl_no_encoding2name(lang->mail_charset); + name = mbfl_no_encoding2name(lang->mail_charset); add_assoc_string(return_value, "mail_charset", name); - name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding); + name = mbfl_no_encoding2name(lang->mail_header_encoding); add_assoc_string(return_value, "mail_header_encoding", name); - name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding); + name = mbfl_no_encoding2name(lang->mail_body_encoding); add_assoc_string(return_value, "mail_body_encoding", name); add_assoc_long(return_value, "illegal_chars", MBSTRG(illegalchars)); @@ -4849,7 +4847,7 @@ PHP_FUNCTION(mb_get_info) add_assoc_string(return_value, "encoding_translation", "Off"); } - name = (char *)mbfl_no_language2name(MBSTRG(language)); + name = mbfl_no_language2name(MBSTRG(language)); add_assoc_string(return_value, "language", name); // TODO Seems to always have one entry at least? @@ -4880,31 +4878,25 @@ PHP_FUNCTION(mb_get_info) } } else if (zend_string_equals_literal_ci(type, "internal_encoding")) { ZEND_ASSERT(MBSTRG(current_internal_encoding)); - RETURN_STRING((char *)MBSTRG(current_internal_encoding)->name); + RETURN_STRING(MBSTRG(current_internal_encoding)->name); } else if (zend_string_equals_literal_ci(type, "http_input")) { if (MBSTRG(http_input_identify)) { - RETURN_STRING((char *)MBSTRG(http_input_identify)->name); + RETURN_STRING(MBSTRG(http_input_identify)->name); } RETURN_NULL(); } else if (zend_string_equals_literal_ci(type, "http_output")) { ZEND_ASSERT(MBSTRG(current_http_output_encoding)); - RETURN_STRING((char *)MBSTRG(current_http_output_encoding)->name); + RETURN_STRING(MBSTRG(current_http_output_encoding)->name); } else if (zend_string_equals_literal_ci(type, "http_output_conv_mimetypes")) { - RETURN_STR( - zend_ini_str( - "mbstring.http_output_conv_mimetypes", - sizeof("mbstring.http_output_conv_mimetypes") - 1, - false - ) - ); + RETURN_STR_COPY(zend_ini_str_literal("mbstring.http_output_conv_mimetypes")); } else if (zend_string_equals_literal_ci(type, "mail_charset")) { - name = (char *)mbfl_no_encoding2name(lang->mail_charset); + name = mbfl_no_encoding2name(lang->mail_charset); RETURN_STRING(name); } else if (zend_string_equals_literal_ci(type, "mail_header_encoding")) { - name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding); + name = mbfl_no_encoding2name(lang->mail_header_encoding); RETURN_STRING(name); } else if (zend_string_equals_literal_ci(type, "mail_body_encoding")) { - name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding); + name = mbfl_no_encoding2name(lang->mail_body_encoding); RETURN_STRING(name); } else if (zend_string_equals_literal_ci(type, "illegal_chars")) { RETURN_LONG(MBSTRG(illegalchars)); @@ -4915,7 +4907,7 @@ PHP_FUNCTION(mb_get_info) RETURN_STRING("Off"); } } else if (zend_string_equals_literal_ci(type, "language")) { - name = (char *)mbfl_no_language2name(MBSTRG(language)); + name = mbfl_no_language2name(MBSTRG(language)); RETURN_STRING(name); } else if (zend_string_equals_literal_ci(type, "detect_order")) { // TODO Seems to always have one entry at least? @@ -5266,7 +5258,7 @@ static bool mb_fast_check_utf8_default(zend_string *str) } break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h index 7256605bd246..c12c61290a15 100644 --- a/ext/mbstring/mbstring.h +++ b/ext/mbstring/mbstring.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Tsukada Takuya | | Hironori Sato | diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index a830d978db75..baf9c57f41fb 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Tsukada Takuya | +----------------------------------------------------------------------+ diff --git a/ext/mbstring/php_mbregex.h b/ext/mbstring/php_mbregex.h index 18a762d5a614..41c98b6d7465 100644 --- a/ext/mbstring/php_mbregex.h +++ b/ext/mbstring/php_mbregex.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Moriyoshi Koizumi | +----------------------------------------------------------------------+ diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c index f4944312bdf5..ce255e401364 100644 --- a/ext/mbstring/php_unicode.c +++ b/ext/mbstring/php_unicode.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong (wez@thebrainroom.com) | +----------------------------------------------------------------------+ @@ -463,7 +461,7 @@ MBSTRING_API zend_string *php_unicode_convert_case(php_case_mode case_mode, cons } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } converted_end = p; diff --git a/ext/mbstring/php_unicode.h b/ext/mbstring/php_unicode.h index 1326761943dc..ac96f9daee51 100644 --- a/ext/mbstring/php_unicode.h +++ b/ext/mbstring/php_unicode.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong (wez@thebrainroom.com) | +----------------------------------------------------------------------+ diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index a077972f5167..c7d349706e45 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | @@ -325,7 +323,7 @@ static int mysqli_object_has_property(zend_object *object, zend_string *name, in } break; } - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } else { has_property = zend_std_has_property(object, name, has_set_exists, cache_slot); diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index 7ca2a20ca1b7..cc6b8c57404a 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -906,6 +906,11 @@ public function real_connect( */ public function real_escape_string(string $string): string {} + /** + * @alias mysqli_quote_string + */ + public function quote_string(string $string): string {} + /** * @tentative-return-type * @alias mysqli_reap_async_query @@ -1547,6 +1552,8 @@ function mysqli_real_escape_string(mysqli $mysql, string $string): string {} /** @alias mysqli_real_escape_string */ function mysqli_escape_string(mysqli $mysql, string $string): string {} +function mysqli_quote_string(mysqli $mysql, string $string): string {} + function mysqli_real_query(mysqli $mysql, string $query): bool {} /** @refcount 1 */ diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 9473f4a06c13..c667712f85fe 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | @@ -1198,7 +1196,7 @@ PHP_FUNCTION(mysqli_options) zend_argument_value_error(ERROR_ARG_POS(2), "must be MYSQLI_INIT_COMMAND, MYSQLI_SET_CHARSET_NAME, MYSQLI_SERVER_PUBLIC_KEY, or one of the MYSQLI_OPT_* constants"); RETURN_THROWS(); } - + if (expected_type != Z_TYPE_P(mysql_value)) { switch (expected_type) { case IS_STRING: @@ -1363,6 +1361,29 @@ PHP_FUNCTION(mysqli_real_escape_string) { RETURN_NEW_STR(newstr); } +PHP_FUNCTION(mysqli_quote_string) { + MY_MYSQL *mysql; + zval *mysql_link = NULL; + char *escapestr; + size_t escapestr_len; + zend_string *newstr; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Os", &mysql_link, mysqli_link_class_entry, &escapestr, &escapestr_len) == FAILURE) { + RETURN_THROWS(); + } + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); + + newstr = zend_string_safe_alloc(2, escapestr_len, 2, 0); + char *out = ZSTR_VAL(newstr); + *out++ = '\''; + out += mysql_real_escape_string(mysql->mysql, out, escapestr, escapestr_len); + *out++ = '\''; + *out = '\0'; + newstr = zend_string_truncate(newstr, out - ZSTR_VAL(newstr), 0); + + RETURN_NEW_STR(newstr); +} + /* {{{ Undo actions from current transaction */ PHP_FUNCTION(mysqli_rollback) { @@ -1467,6 +1488,15 @@ PHP_FUNCTION(mysqli_stmt_data_seek) MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); + if (!stmt->stmt->data || !stmt->stmt->data->result || !stmt->stmt->data->result->stored_data) { + if (hasThis()) { + zend_throw_error(NULL, "mysqli_stmt::data_seek(): No result set associated with the statement"); + } else { + zend_throw_error(NULL, "mysqli_stmt_data_seek(): No result set associated with the statement"); + } + RETURN_THROWS(); + } + mysql_stmt_data_seek(stmt->stmt, offset); } /* }}} */ diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index 4439908e55dc..0121f36f3cfd 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit mysqli.stub.php instead. - * Stub hash: c0af8c627a063fbd2c8b76c63b5e70c8ddd1e4f9 */ + * Stub hash: dc804bc50cd0a0e14dafc0e03564d5699d641db0 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) @@ -252,6 +252,8 @@ ZEND_END_ARG_INFO() #define arginfo_mysqli_escape_string arginfo_mysqli_real_escape_string +#define arginfo_mysqli_quote_string arginfo_mysqli_real_escape_string + #define arginfo_mysqli_real_query arginfo_mysqli_multi_query ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_reap_async_query, 0, 1, mysqli_result, MAY_BE_BOOL) @@ -527,6 +529,10 @@ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_mysqli_real_esca ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_mysqli_quote_string, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_mysqli_reap_async_query, 0, 0, mysqli_result, MAY_BE_BOOL) ZEND_END_ARG_INFO() @@ -767,6 +773,7 @@ ZEND_FUNCTION(mysqli_report); ZEND_FUNCTION(mysqli_query); ZEND_FUNCTION(mysqli_real_connect); ZEND_FUNCTION(mysqli_real_escape_string); +ZEND_FUNCTION(mysqli_quote_string); ZEND_FUNCTION(mysqli_real_query); ZEND_FUNCTION(mysqli_reap_async_query); ZEND_FUNCTION(mysqli_release_savepoint); @@ -883,6 +890,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(mysqli_real_connect, arginfo_mysqli_real_connect) ZEND_FE(mysqli_real_escape_string, arginfo_mysqli_real_escape_string) ZEND_RAW_FENTRY("mysqli_escape_string", zif_mysqli_real_escape_string, arginfo_mysqli_escape_string, 0, NULL, NULL) + ZEND_FE(mysqli_quote_string, arginfo_mysqli_quote_string) ZEND_FE(mysqli_real_query, arginfo_mysqli_real_query) ZEND_FE(mysqli_reap_async_query, arginfo_mysqli_reap_async_query) ZEND_FE(mysqli_release_savepoint, arginfo_mysqli_release_savepoint) @@ -957,6 +965,7 @@ static const zend_function_entry class_mysqli_methods[] = { ZEND_RAW_FENTRY("query", zif_mysqli_query, arginfo_class_mysqli_query, ZEND_ACC_PUBLIC, NULL, NULL) ZEND_RAW_FENTRY("real_connect", zif_mysqli_real_connect, arginfo_class_mysqli_real_connect, ZEND_ACC_PUBLIC, NULL, NULL) ZEND_RAW_FENTRY("real_escape_string", zif_mysqli_real_escape_string, arginfo_class_mysqli_real_escape_string, ZEND_ACC_PUBLIC, NULL, NULL) + ZEND_RAW_FENTRY("quote_string", zif_mysqli_quote_string, arginfo_class_mysqli_quote_string, ZEND_ACC_PUBLIC, NULL, NULL) ZEND_RAW_FENTRY("reap_async_query", zif_mysqli_reap_async_query, arginfo_class_mysqli_reap_async_query, ZEND_ACC_PUBLIC, NULL, NULL) ZEND_RAW_FENTRY("escape_string", zif_mysqli_real_escape_string, arginfo_class_mysqli_escape_string, ZEND_ACC_PUBLIC, NULL, NULL) ZEND_RAW_FENTRY("real_query", zif_mysqli_real_query, arginfo_class_mysqli_real_query, ZEND_ACC_PUBLIC, NULL, NULL) diff --git a/ext/mysqli/mysqli_driver.c b/ext/mysqli/mysqli_driver.c index d2c94d881b44..dadb132efc21 100644 --- a/ext/mysqli/mysqli_driver.c +++ b/ext/mysqli/mysqli_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Georg Richter | +----------------------------------------------------------------------+ diff --git a/ext/mysqli/mysqli_exception.c b/ext/mysqli/mysqli_exception.c index 7ebc29b60ba6..3f34b3e00501 100644 --- a/ext/mysqli/mysqli_exception.c +++ b/ext/mysqli/mysqli_exception.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Georg Richter | +----------------------------------------------------------------------+ diff --git a/ext/mysqli/mysqli_mysqlnd.h b/ext/mysqli/mysqli_mysqlnd.h index 5fb8f542b8fc..b15644c8e1f6 100644 --- a/ext/mysqli/mysqli_mysqlnd.h +++ b/ext/mysqli/mysqli_mysqlnd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c index 2e51dca3100f..1e46aeedd93b 100644 --- a/ext/mysqli/mysqli_nonapi.c +++ b/ext/mysqli/mysqli_nonapi.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h index 5f7c49f0b297..97d9300a2b79 100644 --- a/ext/mysqli/mysqli_priv.h +++ b/ext/mysqli/mysqli_priv.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Georg Richter | +----------------------------------------------------------------------+ diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c index 6d86a6ad4ca8..b54f6fd6ae44 100644 --- a/ext/mysqli/mysqli_prop.c +++ b/ext/mysqli/mysqli_prop.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Georg Richter | | Andrey Hristov | diff --git a/ext/mysqli/mysqli_report.c b/ext/mysqli/mysqli_report.c index 06611310b0b0..28b5f151d729 100644 --- a/ext/mysqli/mysqli_report.c +++ b/ext/mysqli/mysqli_report.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Georg Richter | +----------------------------------------------------------------------+ diff --git a/ext/mysqli/mysqli_result_iterator.c b/ext/mysqli/mysqli_result_iterator.c index 5dbeaf1e3b22..013f41d38d0b 100644 --- a/ext/mysqli/mysqli_result_iterator.c +++ b/ext/mysqli/mysqli_result_iterator.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c index 0bb730ef6cf6..a276ccf0b1ff 100644 --- a/ext/mysqli/mysqli_warning.c +++ b/ext/mysqli/mysqli_warning.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Georg Richter | +----------------------------------------------------------------------+ diff --git a/ext/mysqli/php_mysqli.h b/ext/mysqli/php_mysqli.h index 7ee999b41e04..5f995a4bbc53 100644 --- a/ext/mysqli/php_mysqli.h +++ b/ext/mysqli/php_mysqli.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index ceab4a44f395..40d3f7fcdeef 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Georg Richter | | Andrey Hristov | diff --git a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt index bada1d85a5ce..ccac6710edd1 100644 --- a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt +++ b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt @@ -43,6 +43,7 @@ require_once 'skipifconnectfailure.inc'; 'ping' => true, 'prepare' => true, 'query' => true, + 'quote_string' => true, 'real_connect' => true, 'real_escape_string' => true, 'real_query' => true, diff --git a/ext/mysqli/tests/mysqli_quote_string.phpt b/ext/mysqli/tests/mysqli_quote_string.phpt new file mode 100644 index 000000000000..b4a25aa3996f --- /dev/null +++ b/ext/mysqli/tests/mysqli_quote_string.phpt @@ -0,0 +1,86 @@ +--TEST-- +mysqli_quote_string() +--EXTENSIONS-- +mysqli +--SKIPIF-- + +--FILE-- +query("SELECT $escaped AS test"); +$value = $result->fetch_column(); +echo $value . "\n"; + +$escaped = mysqli_quote_string($link, '" OR 1=1 -- foo'); +echo $escaped . "\n"; +$result = $link->query("SELECT $escaped AS test"); +$value = $result->fetch_column(); +echo $value . "\n"; + +$escaped = mysqli_quote_string($link, "\n"); +if ($escaped !== "'\\n'") { + printf("[001] Expected '\\n', got %s\n", $escaped); +} + +$escaped = mysqli_quote_string($link, "\r"); +if ($escaped !== "'\\r'") { + printf("[002] Expected '\\r', got %s\n", $escaped); +} + +$escaped = mysqli_quote_string($link, "foo" . chr(0) . "bar"); +if ($escaped !== "'foo\\0bar'") { + printf("[003] Expected 'foo\\0bar', got %s\n", $escaped); +} + +echo "=====================\n"; + +// Test that the SQL injection is impossible with NO_BACKSLASH_ESCAPES mode +$link->query('SET @@sql_mode="NO_BACKSLASH_ESCAPES"'); + +echo $link->quote_string('\\') . "\n"; +echo $link->quote_string('"') . "\n"; +echo $link->quote_string("'") . "\n"; + +$escaped = $link->quote_string("\' \ \""); +echo $escaped . "\n"; +$result = $link->query("SELECT $escaped AS test"); +$value = $result->fetch_column(); +echo $value . "\n"; + +$escaped = $link->quote_string('" OR 1=1 -- foo'); +echo $escaped . "\n"; +$result = $link->query("SELECT $escaped AS test"); +$value = $result->fetch_column(); +echo $value . "\n"; + +echo "done!"; +?> +--EXPECT-- +'\\' +'\"' +'\'' +'\\\' \\ \"' +\' \ " +'\" OR 1=1 -- foo' +" OR 1=1 -- foo +===================== +'\' +'"' +'''' +'\'' \ "' +\' \ " +'" OR 1=1 -- foo' +" OR 1=1 -- foo +done! diff --git a/ext/mysqli/tests/mysqli_stmt_data_seek.phpt b/ext/mysqli/tests/mysqli_stmt_data_seek.phpt index a36daebc7951..e4b913229cd0 100644 --- a/ext/mysqli/tests/mysqli_stmt_data_seek.phpt +++ b/ext/mysqli/tests/mysqli_stmt_data_seek.phpt @@ -25,6 +25,11 @@ require_once 'skipifconnectfailure.inc'; if (true !== ($tmp = mysqli_stmt_execute($stmt))) printf("[006] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); + try { + mysqli_stmt_data_seek($stmt, 1); + } catch (Error $exception) { + echo $exception->getMessage() . "\n"; + } $id = null; if (!mysqli_stmt_bind_result($stmt, $id)) @@ -82,6 +87,7 @@ require_once 'skipifconnectfailure.inc'; ?> --EXPECT-- mysqli_stmt object is not fully initialized +mysqli_stmt_data_seek(): No result set associated with the statement int(3) int(1) int(1) diff --git a/ext/mysqlnd/mysql_float_to_double.h b/ext/mysqlnd/mysql_float_to_double.h index a15458b52de2..f92196e792c9 100644 --- a/ext/mysqlnd/mysql_float_to_double.h +++ b/ext/mysqlnd/mysql_float_to_double.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Keyur Govande | +----------------------------------------------------------------------+ diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index 3336d1752afd..032438063bea 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_alloc.c b/ext/mysqlnd/mysqlnd_alloc.c index 06971b3487dd..12fa5fb723ae 100644 --- a/ext/mysqlnd/mysqlnd_alloc.c +++ b/ext/mysqlnd/mysqlnd_alloc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_alloc.h b/ext/mysqlnd/mysqlnd_alloc.h index deaef3748965..203d7207740a 100644 --- a/ext/mysqlnd/mysqlnd_alloc.h +++ b/ext/mysqlnd/mysqlnd_alloc.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_auth.c b/ext/mysqlnd/mysqlnd_auth.c index 07c393830905..3504caa2dea1 100644 --- a/ext/mysqlnd/mysqlnd_auth.c +++ b/ext/mysqlnd/mysqlnd_auth.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | @@ -587,7 +585,7 @@ static struct st_mysqlnd_authentication_plugin mysqlnd_native_auth_plugin = "auth_plugin_mysql_native_password", MYSQLND_VERSION_ID, PHP_MYSQLND_VERSION, - "PHP License 3.01", + "Modified BSD License (BSD-3-Clause)", "Andrey Hristov , Ulf Wendel , Georg Richter ", { NULL, /* no statistics , will be filled later if there are some */ @@ -640,7 +638,7 @@ static struct st_mysqlnd_authentication_plugin mysqlnd_pam_authentication_plugin "auth_plugin_mysql_clear_password", MYSQLND_VERSION_ID, PHP_MYSQLND_VERSION, - "PHP License 3.01", + "Modified BSD License (BSD-3-Clause)", "Andrey Hristov , Ulf Wendel , Georg Richter ", { NULL, /* no statistics , will be filled later if there are some */ @@ -936,7 +934,7 @@ static struct st_mysqlnd_authentication_plugin mysqlnd_sha256_authentication_plu "auth_plugin_sha256_password", MYSQLND_VERSION_ID, PHP_MYSQLND_VERSION, - "PHP License 3.01", + "Modified BSD License (BSD-3-Clause)", "Andrey Hristov , Ulf Wendel ", { NULL, /* no statistics , will be filled later if there are some */ @@ -1297,7 +1295,7 @@ static struct st_mysqlnd_authentication_plugin mysqlnd_caching_sha2_auth_plugin "auth_plugin_caching_sha2_password", MYSQLND_VERSION_ID, PHP_MYSQLND_VERSION, - "PHP License 3.01", + "Modified BSD License (BSD-3-Clause)", "Johannes Schlüter ", { NULL, /* no statistics , will be filled later if there are some */ diff --git a/ext/mysqlnd/mysqlnd_auth.h b/ext/mysqlnd/mysqlnd_auth.h index 9ce14a2fc521..f4a0f3146094 100644 --- a/ext/mysqlnd/mysqlnd_auth.h +++ b/ext/mysqlnd/mysqlnd_auth.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_block_alloc.c b/ext/mysqlnd/mysqlnd_block_alloc.c index dafcbcc8bbb8..db836d3f7b92 100644 --- a/ext/mysqlnd/mysqlnd_block_alloc.c +++ b/ext/mysqlnd/mysqlnd_block_alloc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_block_alloc.h b/ext/mysqlnd/mysqlnd_block_alloc.h index 7c9aac3b8e5f..31f315235d72 100644 --- a/ext/mysqlnd/mysqlnd_block_alloc.h +++ b/ext/mysqlnd/mysqlnd_block_alloc.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_charset.c b/ext/mysqlnd/mysqlnd_charset.c index a767bab392e5..eacf74240fd1 100644 --- a/ext/mysqlnd/mysqlnd_charset.c +++ b/ext/mysqlnd/mysqlnd_charset.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | @@ -969,40 +967,6 @@ PHPAPI zend_ulong mysqlnd_cset_escape_slashes(const MYSQLND_CHARSET * const cset /* }}} */ -static struct st_mysqlnd_plugin_charsets mysqlnd_plugin_charsets_plugin = -{ - { - MYSQLND_PLUGIN_API_VERSION, - "charsets", - MYSQLND_VERSION_ID, - PHP_MYSQLND_VERSION, - "PHP License 3.01", - "Andrey Hristov , Ulf Wendel , Georg Richter ", - { - NULL, /* no statistics , will be filled later if there are some */ - NULL, /* no statistics */ - }, - { - NULL /* plugin shutdown */ - } - }, - {/* methods */ - mysqlnd_find_charset_nr, - mysqlnd_find_charset_name, - mysqlnd_cset_escape_quotes, - mysqlnd_cset_escape_slashes - } -}; - - -/* {{{ mysqlnd_charsets_plugin_register */ -void -mysqlnd_charsets_plugin_register(void) -{ - mysqlnd_plugin_register_ex((struct st_mysqlnd_plugin_header *) &mysqlnd_plugin_charsets_plugin); -} -/* }}} */ - #if MYSQLND_CHARSETS_SANITY_CHECK void mysqlnd_charsets_sanity_check(void) { diff --git a/ext/mysqlnd/mysqlnd_charset.h b/ext/mysqlnd/mysqlnd_charset.h index a2b1e2f14831..d5e621e38eb1 100644 --- a/ext/mysqlnd/mysqlnd_charset.h +++ b/ext/mysqlnd/mysqlnd_charset.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | @@ -28,18 +26,4 @@ PHPAPI zend_ulong mysqlnd_cset_escape_quotes(const MYSQLND_CHARSET * const chars PHPAPI zend_ulong mysqlnd_cset_escape_slashes(const MYSQLND_CHARSET * const cset, char * newstr, const char * escapestr, const size_t escapestr_len); -struct st_mysqlnd_plugin_charsets -{ - const struct st_mysqlnd_plugin_header plugin_header; - struct - { - const MYSQLND_CHARSET * (*const find_charset_by_nr)(unsigned int charsetnr); - const MYSQLND_CHARSET * (*const find_charset_by_name)(const char * const name); - zend_ulong (*const escape_quotes)(const MYSQLND_CHARSET * const cset, char * newstr, const char * escapestr, const size_t escapestr_len); - zend_ulong (*const escape_slashes)(const MYSQLND_CHARSET * const cset, char * newstr, const char * escapestr, const size_t escapestr_len); - } methods; -}; - -void mysqlnd_charsets_plugin_register(void); - #endif /* MYSQLND_CHARSET_H */ diff --git a/ext/mysqlnd/mysqlnd_commands.c b/ext/mysqlnd/mysqlnd_commands.c index a3aad43bbd4b..1bb38be089e6 100644 --- a/ext/mysqlnd/mysqlnd_commands.c +++ b/ext/mysqlnd/mysqlnd_commands.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_commands.h b/ext/mysqlnd/mysqlnd_commands.h index 4203b56ffc15..610de56325ae 100644 --- a/ext/mysqlnd/mysqlnd_commands.h +++ b/ext/mysqlnd/mysqlnd_commands.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_connection.c b/ext/mysqlnd/mysqlnd_connection.c index 4a9732a02895..e3ca87bd7131 100644 --- a/ext/mysqlnd/mysqlnd_connection.c +++ b/ext/mysqlnd/mysqlnd_connection.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_connection.h b/ext/mysqlnd/mysqlnd_connection.h index 39d7712b132c..ef71fbd4250c 100644 --- a/ext/mysqlnd/mysqlnd_connection.h +++ b/ext/mysqlnd/mysqlnd_connection.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_debug.c b/ext/mysqlnd/mysqlnd_debug.c index ff80c620bee1..80765f36131c 100644 --- a/ext/mysqlnd/mysqlnd_debug.c +++ b/ext/mysqlnd/mysqlnd_debug.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | @@ -742,7 +740,7 @@ static struct st_mysqlnd_plugin_trace_log mysqlnd_plugin_trace_log_plugin = "debug_trace", MYSQLND_VERSION_ID, PHP_MYSQLND_VERSION, - "PHP License 3.01", + "Modified BSD License (BSD-3-Clause)", "Andrey Hristov , Ulf Wendel , Georg Richter ", { NULL, /* no statistics , will be filled later if there are some */ diff --git a/ext/mysqlnd/mysqlnd_debug.h b/ext/mysqlnd/mysqlnd_debug.h index 24eb67ca1a74..3710551bffd4 100644 --- a/ext/mysqlnd/mysqlnd_debug.h +++ b/ext/mysqlnd/mysqlnd_debug.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_driver.c b/ext/mysqlnd/mysqlnd_driver.c index 2c1d997177aa..deef03b9a3c1 100644 --- a/ext/mysqlnd/mysqlnd_driver.c +++ b/ext/mysqlnd/mysqlnd_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | @@ -38,7 +36,7 @@ static struct st_mysqlnd_plugin_core mysqlnd_plugin_core = "mysqlnd", MYSQLND_VERSION_ID, PHP_MYSQLND_VERSION, - "PHP License 3.01", + "Modified BSD License (BSD-3-Clause)", "Andrey Hristov , Ulf Wendel , Georg Richter ", { NULL, /* will be filled later */ diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index 851174032c40..abb5def974c8 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_ext_plugin.c b/ext/mysqlnd/mysqlnd_ext_plugin.c index 2ca01d113e3b..5ba377e53433 100644 --- a/ext/mysqlnd/mysqlnd_ext_plugin.c +++ b/ext/mysqlnd/mysqlnd_ext_plugin.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Johannes Schlüter | diff --git a/ext/mysqlnd/mysqlnd_ext_plugin.h b/ext/mysqlnd/mysqlnd_ext_plugin.h index 8780ff463045..84cf6c004be4 100644 --- a/ext/mysqlnd/mysqlnd_ext_plugin.h +++ b/ext/mysqlnd/mysqlnd_ext_plugin.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Johannes Schlüter | diff --git a/ext/mysqlnd/mysqlnd_libmysql_compat.h b/ext/mysqlnd/mysqlnd_libmysql_compat.h index 646b09d80f4c..0172b554caa0 100644 --- a/ext/mysqlnd/mysqlnd_libmysql_compat.h +++ b/ext/mysqlnd/mysqlnd_libmysql_compat.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_loaddata.c b/ext/mysqlnd/mysqlnd_loaddata.c index a1e04de27008..caa5205a08e1 100644 --- a/ext/mysqlnd/mysqlnd_loaddata.c +++ b/ext/mysqlnd/mysqlnd_loaddata.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_plugin.c b/ext/mysqlnd/mysqlnd_plugin.c index 4bd9894b8c4b..4209676daf10 100644 --- a/ext/mysqlnd/mysqlnd_plugin.c +++ b/ext/mysqlnd/mysqlnd_plugin.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | @@ -47,7 +45,7 @@ static struct st_mysqlnd_typeii_plugin_example mysqlnd_example_plugin = "example", 10001L, "1.00.01", - "PHP License", + "Modified BSD License (BSD-3-Clause)", "Andrey Hristov ", { NULL, /* will be filled later */ diff --git a/ext/mysqlnd/mysqlnd_plugin.h b/ext/mysqlnd/mysqlnd_plugin.h index 82b2142fc9fc..04dfcb79cc40 100644 --- a/ext/mysqlnd/mysqlnd_plugin.h +++ b/ext/mysqlnd/mysqlnd_plugin.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_priv.h b/ext/mysqlnd/mysqlnd_priv.h index 1dbd1093dcac..daad00f0d3e6 100644 --- a/ext/mysqlnd/mysqlnd_priv.h +++ b/ext/mysqlnd/mysqlnd_priv.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c index 570fba24d663..70a81befdd71 100644 --- a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c +++ b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_protocol_frame_codec.h b/ext/mysqlnd/mysqlnd_protocol_frame_codec.h index 63aedddb12ea..1ed6f233365b 100644 --- a/ext/mysqlnd/mysqlnd_protocol_frame_codec.h +++ b/ext/mysqlnd/mysqlnd_protocol_frame_codec.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 76a2eb640d1d..b9b112161570 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_ps.h b/ext/mysqlnd/mysqlnd_ps.h index 107e7b6748b9..32af2d423e52 100644 --- a/ext/mysqlnd/mysqlnd_ps.h +++ b/ext/mysqlnd/mysqlnd_ps.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_ps_codec.c b/ext/mysqlnd/mysqlnd_ps_codec.c index c60e3d327a8d..934e3637d6aa 100644 --- a/ext/mysqlnd/mysqlnd_ps_codec.c +++ b/ext/mysqlnd/mysqlnd_ps_codec.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_read_buffer.c b/ext/mysqlnd/mysqlnd_read_buffer.c index 90963c99fa81..e662733e0a36 100644 --- a/ext/mysqlnd/mysqlnd_read_buffer.c +++ b/ext/mysqlnd/mysqlnd_read_buffer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_read_buffer.h b/ext/mysqlnd/mysqlnd_read_buffer.h index 7014f4369690..b3d4c9638303 100644 --- a/ext/mysqlnd/mysqlnd_read_buffer.h +++ b/ext/mysqlnd/mysqlnd_read_buffer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index ae8dc77b4cd9..1d43946f41d3 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_result.h b/ext/mysqlnd/mysqlnd_result.h index fe414f0cd65c..db90b4d963cc 100644 --- a/ext/mysqlnd/mysqlnd_result.h +++ b/ext/mysqlnd/mysqlnd_result.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_result_meta.c b/ext/mysqlnd/mysqlnd_result_meta.c index 92896ccb408e..6a772973c395 100644 --- a/ext/mysqlnd/mysqlnd_result_meta.c +++ b/ext/mysqlnd/mysqlnd_result_meta.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_result_meta.h b/ext/mysqlnd/mysqlnd_result_meta.h index e9726abae02a..d3c84776958a 100644 --- a/ext/mysqlnd/mysqlnd_result_meta.h +++ b/ext/mysqlnd/mysqlnd_result_meta.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Johannes Schlüter | diff --git a/ext/mysqlnd/mysqlnd_reverse_api.c b/ext/mysqlnd/mysqlnd_reverse_api.c index 982aac065eb0..539c8adaaa60 100644 --- a/ext/mysqlnd/mysqlnd_reverse_api.c +++ b/ext/mysqlnd/mysqlnd_reverse_api.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Johannes Schlüter | diff --git a/ext/mysqlnd/mysqlnd_reverse_api.h b/ext/mysqlnd/mysqlnd_reverse_api.h index ee56666d5eaf..843fa728aacc 100644 --- a/ext/mysqlnd/mysqlnd_reverse_api.h +++ b/ext/mysqlnd/mysqlnd_reverse_api.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index 0d94303ea366..33a47843c9c8 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h index 02cd64450cb6..a576f67ffdb1 100644 --- a/ext/mysqlnd/mysqlnd_statistics.h +++ b/ext/mysqlnd/mysqlnd_statistics.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index 02c31358da48..80d0abfcae6f 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_vio.c b/ext/mysqlnd/mysqlnd_vio.c index 3a3f7b207214..b6ea490e67b6 100644 --- a/ext/mysqlnd/mysqlnd_vio.c +++ b/ext/mysqlnd/mysqlnd_vio.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_vio.h b/ext/mysqlnd/mysqlnd_vio.h index a96fdb182b17..28f033bd749d 100644 --- a/ext/mysqlnd/mysqlnd_vio.h +++ b/ext/mysqlnd/mysqlnd_vio.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 36fd53233737..633a4cca1623 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.h b/ext/mysqlnd/mysqlnd_wireprotocol.h index f24eb70f4a79..e5d38bc6737e 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.h +++ b/ext/mysqlnd/mysqlnd_wireprotocol.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/php_mysqlnd.c b/ext/mysqlnd/php_mysqlnd.c index c21697828a9a..f8b2d72ebab9 100644 --- a/ext/mysqlnd/php_mysqlnd.c +++ b/ext/mysqlnd/php_mysqlnd.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/mysqlnd/php_mysqlnd.h b/ext/mysqlnd/php_mysqlnd.h index e7a981a5de3e..4da59ed965e8 100644 --- a/ext/mysqlnd/php_mysqlnd.h +++ b/ext/mysqlnd/php_mysqlnd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andrey Hristov | | Ulf Wendel | diff --git a/ext/odbc/odbc_utils.c b/ext/odbc/odbc_utils.c index bc6674b9b5e5..742bf54bb292 100644 --- a/ext/odbc/odbc_utils.c +++ b/ext/odbc/odbc_utils.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Calvin Buckley | +----------------------------------------------------------------------+ diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 90ccb8af1ed1..95c872c293f1 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Andreas Karajannis | @@ -1342,12 +1340,11 @@ static void php_odbc_fetch(INTERNAL_FUNCTION_PARAMETERS, bool return_array, php_ result = Z_ODBC_RESULT_P(pv_res); CHECK_ODBC_RESULT(result); - /* TODO deprecate $row argument values less than 1 after PHP 8.4 - * for functions other than odbc_fetch_row (see GH-13910) - */ - if (!result_type && !pv_row_is_null && pv_row < 1) { - php_error_docref(NULL, E_WARNING, "Argument #3 ($row) must be greater than or equal to 1"); - RETURN_FALSE; + if (!pv_row_is_null && pv_row < 1) { + /* row arg no differs between callers */ + zend_argument_value_error(pv_res_arr == return_value ? 2 : 3, + "must be greater than or equal to 1"); + RETURN_THROWS(); } if (result->numcols == 0) { diff --git a/ext/odbc/php_odbc.h b/ext/odbc/php_odbc.h index 6f6264a482d7..d2815b90d108 100644 --- a/ext/odbc/php_odbc.h +++ b/ext/odbc/php_odbc.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Andreas Karajannis | diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h index 058684c2ed03..1c53e35bf43a 100644 --- a/ext/odbc/php_odbc_includes.h +++ b/ext/odbc/php_odbc_includes.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Andreas Karajannis | diff --git a/ext/odbc/tests/odbc_fetch_array_001.phpt b/ext/odbc/tests/odbc_fetch_array_001.phpt index bf13ed25e4d6..e7d4ccf328b6 100644 --- a/ext/odbc/tests/odbc_fetch_array_001.phpt +++ b/ext/odbc/tests/odbc_fetch_array_001.phpt @@ -17,7 +17,7 @@ odbc_exec($conn, 'INSERT INTO fetch_array VALUES (1), (2)'); $res = odbc_exec($conn, 'SELECT * FROM fetch_array'); var_dump(odbc_fetch_array($res)); -var_dump(odbc_fetch_array($res, 0)); +var_dump(odbc_fetch_array($res, null)); var_dump(odbc_fetch_array($res, 2)); var_dump(odbc_fetch_array($res, 4)); diff --git a/ext/odbc/tests/odbc_fetch_into_001.phpt b/ext/odbc/tests/odbc_fetch_into_001.phpt index 19f7f79268c5..e420475f02cc 100644 --- a/ext/odbc/tests/odbc_fetch_into_001.phpt +++ b/ext/odbc/tests/odbc_fetch_into_001.phpt @@ -20,7 +20,7 @@ $arr = []; var_dump(odbc_fetch_into($res, $arr)); var_dump($arr); $arr = []; -var_dump(odbc_fetch_into($res, $arr, 0)); +var_dump(odbc_fetch_into($res, $arr, null)); var_dump($arr); $arr = []; var_dump(odbc_fetch_into($res, $arr, 2)); diff --git a/ext/odbc/tests/odbc_fetch_object_001.phpt b/ext/odbc/tests/odbc_fetch_object_001.phpt index 62a8fc3b2c7e..eb553409639f 100644 --- a/ext/odbc/tests/odbc_fetch_object_001.phpt +++ b/ext/odbc/tests/odbc_fetch_object_001.phpt @@ -17,7 +17,7 @@ odbc_exec($conn, 'INSERT INTO fetch_object VALUES (1), (2)'); $res = odbc_exec($conn, 'SELECT * FROM fetch_object'); var_dump(odbc_fetch_object($res)); -var_dump(odbc_fetch_object($res, 0)); +var_dump(odbc_fetch_object($res, null)); var_dump(odbc_fetch_object($res, 2)); var_dump(odbc_fetch_object($res, 4)); diff --git a/ext/odbc/tests/odbc_fetch_row_001.phpt b/ext/odbc/tests/odbc_fetch_row_001.phpt index 576bb15414ce..fbadc8272590 100644 --- a/ext/odbc/tests/odbc_fetch_row_001.phpt +++ b/ext/odbc/tests/odbc_fetch_row_001.phpt @@ -17,7 +17,11 @@ odbc_exec($conn, 'INSERT INTO fetch_row VALUES (1), (2)'); $res = odbc_exec($conn, 'SELECT * FROM fetch_row'); -var_dump(odbc_fetch_row($res, 0)); +try { + var_dump(odbc_fetch_row($res, 0)); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} var_dump(odbc_fetch_row($res, null)); var_dump(odbc_result($res, 'test')); @@ -39,9 +43,8 @@ require 'config.inc'; $conn = odbc_connect($dsn, $user, $pass); odbc_exec($conn, 'DROP TABLE fetch_row'); ?> ---EXPECTF-- -Warning: odbc_fetch_row(): Argument #3 ($row) must be greater than or equal to 1 in %s on line %d -bool(false) +--EXPECT-- +odbc_fetch_row(): Argument #2 ($row) must be greater than or equal to 1 bool(true) string(1) "1" bool(true) diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 7aa0e67c24a5..1bce00f0edde 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -26,7 +24,9 @@ #include "zend_compile.h" #include "ZendAccelerator.h" #include "zend_modules.h" +#include "zend_operators.h" #include "zend_persist.h" +#include "zend_portability.h" #include "zend_shared_alloc.h" #include "zend_accelerator_module.h" #include "zend_accelerator_blacklist.h" @@ -50,6 +50,7 @@ #include "zend_system_id.h" #include "ext/pcre/php_pcre.h" #include "ext/standard/basic_functions.h" +#include "zend_vm_opcodes.h" #ifdef ZEND_WIN32 # include "ext/hash/php_hash.h" @@ -2008,6 +2009,219 @@ static bool check_persistent_script_access(const zend_persistent_script *persist } } +static const char hexchars[] = "0123456789abcdef"; + +static char *zend_accel_uintptr_hex(char *dest, uintptr_t n) +{ + char *start = dest; + dest += sizeof(uintptr_t)*2; + + while (n > 0) { + *--dest = hexchars[n % strlen(hexchars)]; + n /= strlen(hexchars); + } + while (dest > start) { + *--dest = '0'; + } + + return dest + sizeof(uintptr_t)*2; +} + +/* Prevents collisions with real scripts, as we don't cache paths prefixed with + * a scheme, except file:// and phar://. */ +#define PFA_KEY_PREFIX "pfa://" + +static zend_string *zend_accel_pfa_key(const zend_op *declaring_opline, + const zend_function *called_function) +{ + const size_t key_len = strlen(PFA_KEY_PREFIX) + (sizeof(uintptr_t)*2) + strlen(":") + (sizeof(uintptr_t)*2); + zend_string *key = zend_string_alloc(key_len, 0); + char *dest = ZSTR_VAL(key); + + dest = zend_mempcpy(ZSTR_VAL(key), PFA_KEY_PREFIX, strlen(PFA_KEY_PREFIX)); + dest = zend_accel_uintptr_hex(dest, (uintptr_t)declaring_opline); + *dest++ = ':'; + + const void *ptr; + if ((called_function->common.fn_flags & ZEND_ACC_CLOSURE) + && called_function->type == ZEND_USER_FUNCTION) { + /* Can not use 'called_function' as part of the key, as it's an inner + * pointer to a Closure, which may be freed. Use its opcodes instead. + * zend_accel_compile_pfa() ensures to extend the lifetime of opcodes + * in this case. */ + ptr = called_function->op_array.opcodes; + } else { + ptr = called_function; + } + dest = zend_accel_uintptr_hex(dest, (uintptr_t)ptr); + + ZEND_ASSERT(dest == ZSTR_VAL(key) + key_len); + + ZSTR_VAL(key)[key_len] = 0; + ZSTR_LEN(key) = key_len; + + return key; +} + +const zend_op_array *zend_accel_pfa_cache_get(const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, const zend_function *called_function) +{ + zend_string *key = zend_accel_pfa_key(declaring_opline, called_function); + zend_op_array *op_array = NULL; + + /* A PFA is SHM-cacheable if the declaring_op_array and called_function are + * cached. */ + if (ZCG(accelerator_enabled) + && !file_cache_only + && !declaring_op_array->refcount + && (called_function->type != ZEND_USER_FUNCTION || !called_function->op_array.refcount)) { + zend_persistent_script *persistent_script = zend_accel_hash_find(&ZCSG(hash), key); + if (persistent_script) { + op_array = persistent_script->script.main_op_array.dynamic_func_defs[0]; + if (persistent_script->num_warnings) { + zend_emit_recorded_errors_ex(persistent_script->num_warnings, + persistent_script->warnings); + } + } + } else { + op_array = zend_hash_find_ptr(&EG(partial_function_application_cache), key); + } + + zend_string_release(key); + + return op_array; +} + +zend_op_array *zend_accel_compile_pfa(zend_ast *ast, + const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, + const zend_function *called_function, + zend_string *pfa_func_name) +{ + zend_begin_record_errors(); + zend_op_array *op_array; + + uint32_t orig_compiler_options = CG(compiler_options); + + zend_try { + CG(compiler_options) |= ZEND_COMPILE_HANDLE_OP_ARRAY; + CG(compiler_options) |= ZEND_COMPILE_DELAYED_BINDING; + CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION; + CG(compiler_options) |= ZEND_COMPILE_IGNORE_OTHER_FILES; + CG(compiler_options) |= ZEND_COMPILE_IGNORE_OBSERVER; +#ifdef ZEND_WIN32 + /* On Windows, don't compile with internal classes. Shm may be attached from different + * processes with internal classes living in different addresses. */ + CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES; +#endif + + op_array = zend_compile_ast(ast, ZEND_USER_FUNCTION, declaring_op_array->filename); + + ZEND_ASSERT(op_array->num_dynamic_func_defs == 1); + + CG(compiler_options) = orig_compiler_options; + } zend_catch { + op_array = NULL; + CG(compiler_options) = orig_compiler_options; + EG(record_errors) = false; + zend_free_recorded_errors(); + zend_bailout(); + } zend_end_try(); + + if (!op_array) { + zend_emit_recorded_errors(); + zend_free_recorded_errors(); + return NULL; + } + + ZEND_ASSERT(op_array->num_dynamic_func_defs == 1); + + zend_string_release(op_array->dynamic_func_defs[0]->function_name); + op_array->dynamic_func_defs[0]->function_name = pfa_func_name; + + zend_string *key = zend_accel_pfa_key(declaring_opline, called_function); + + /* Cache op_array only if the declaring op_array and the called function + * are cached */ + if (!ZCG(accelerator_enabled) + || file_cache_only + || declaring_op_array->refcount + || (called_function->type == ZEND_USER_FUNCTION && called_function->op_array.refcount) + || (ZCSG(restart_in_progress) && accel_restart_is_active()) + || (!ZCG(counted) && accel_activate_add() == FAILURE)) { + zend_op_array *script_op_array = op_array; + zend_op_array *op_array = script_op_array->dynamic_func_defs[0]; + GC_ADDREF(op_array->function_name); + (*op_array->refcount)++; + destroy_op_array(script_op_array); + efree(script_op_array); + + if ((called_function->common.fn_flags & ZEND_ACC_CLOSURE) + && called_function->type == ZEND_USER_FUNCTION + && called_function->op_array.refcount) { + /* Extend the lifetime of the called opcodes if + * the called function is a closure. + * See comment in zend_accel_pfa_key(). */ + zend_op_array *copy = zend_arena_alloc(&CG(arena), sizeof(zend_function)); + memcpy(copy, called_function, sizeof(zend_op_array)); + zend_string_addref(copy->function_name); + (*copy->refcount)++; + /* Reference the copy in op_array->dynamic_func_defs so that it's + * destroyed when op_array is destroyed. */ + ZEND_ASSERT(!op_array->dynamic_func_defs && !op_array->num_dynamic_func_defs); + op_array->dynamic_func_defs = emalloc(sizeof(zend_op_array*)); + op_array->dynamic_func_defs[0] = copy; + op_array->num_dynamic_func_defs = 1; + } + + zend_hash_add_new_ptr(&EG(partial_function_application_cache), key, op_array); + zend_string_release(key); + + zend_emit_recorded_errors(); + zend_free_recorded_errors(); + + return op_array; + } + + zend_persistent_script *new_persistent_script = create_persistent_script(); + new_persistent_script->script.main_op_array = *op_array; + efree_size(op_array, sizeof(zend_op_array)); + new_persistent_script->script.filename = key; + + if (ZCG(accel_directives).record_warnings) { + new_persistent_script->num_warnings = EG(errors).size; + new_persistent_script->warnings = EG(errors).errors; + } + + HANDLE_BLOCK_INTERRUPTIONS(); + SHM_UNPROTECT(); + + bool from_shared_memory; + /* See GH-17246: we disable GC so that user code cannot be executed during the optimizer run. */ + bool orig_gc_state = gc_enable(false); + char *orig_file_cache = ZCG(accel_directives).file_cache; + /* Disable file_cache temporarily, as we can't guarantee consistency. */ + ZCG(accel_directives).file_cache = false; + new_persistent_script = cache_script_in_shared_memory(new_persistent_script, NULL, &from_shared_memory); + ZCG(accel_directives).file_cache = orig_file_cache; + gc_enable(orig_gc_state); + + SHM_PROTECT(); + HANDLE_UNBLOCK_INTERRUPTIONS(); + + /* We may have switched to an existing persistent script that was persisted in + * the meantime. Make sure to use its warnings if available. */ + if (ZCG(accel_directives).record_warnings) { + EG(record_errors) = false; + zend_emit_recorded_errors_ex(new_persistent_script->num_warnings, new_persistent_script->warnings); + } else { + zend_emit_recorded_errors(); + } + zend_free_recorded_errors(); + + return new_persistent_script->script.main_op_array.dynamic_func_defs[0]; +} + /* zend_compile() replacement */ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) { @@ -5163,9 +5377,9 @@ static void accel_activate(void) { static zend_extension opcache_extension_entry = { ACCELERATOR_PRODUCT_NAME, /* name */ PHP_VERSION, /* version */ - "Zend Technologies", /* author */ - "http://www.zend.com/", /* URL */ - "Copyright (c)", /* copyright */ + "Zend by Perforce", /* author */ + "https://www.zend.com/", /* URL */ + "Copyright ©", /* copyright */ accel_startup, /* startup */ NULL, /* shutdown */ accel_activate, /* per-script activation */ diff --git a/ext/opcache/ZendAccelerator.h b/ext/opcache/ZendAccelerator.h index 524a6f5e1213..ef7eea433c09 100644 --- a/ext/opcache/ZendAccelerator.h +++ b/ext/opcache/ZendAccelerator.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -336,6 +334,16 @@ zend_string* ZEND_FASTCALL accel_new_interned_string(zend_string *str); uint32_t zend_accel_get_class_name_map_ptr(zend_string *type_name); +const zend_op_array *zend_accel_pfa_cache_get(const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, + const zend_function *called_function); + +zend_op_array *zend_accel_compile_pfa(zend_ast *ast, + const zend_op_array *declaring_op_array, + const zend_op *declaring_opline, + const zend_function *called_function, + zend_string *pfa_func_name); + END_EXTERN_C() /* memory write protection */ diff --git a/ext/opcache/jit/ir/ir.c b/ext/opcache/jit/ir/ir.c index f6058c5abe52..a02332e0d39c 100644 --- a/ext/opcache/jit/ir/ir.c +++ b/ext/opcache/jit/ir/ir.c @@ -1443,24 +1443,6 @@ bool ir_use_list_add(ir_ctx *ctx, ir_ref to, ir_ref ref) } } -static int ir_ref_cmp(const void *p1, const void *p2) -{ - return *(ir_ref*)p1 - *(ir_ref*)p2; -} - -void ir_use_list_sort(ir_ctx *ctx, ir_ref ref) -{ - ir_use_list *use_list; - uint32_t n; - - IR_ASSERT(ref > 0); - use_list = &ctx->use_lists[ref]; - n = use_list->count; - if (n > 1) { - qsort(ctx->use_edges + use_list->refs, n, sizeof(ir_ref), ir_ref_cmp); - } -} - void ir_replace(ir_ctx *ctx, ir_ref ref, ir_ref new_ref) { int i, j, n, *p, use; diff --git a/ext/opcache/jit/ir/ir_aarch64.dasc b/ext/opcache/jit/ir/ir_aarch64.dasc index 5a6718b77c1c..bdf6b027b9fe 100644 --- a/ext/opcache/jit/ir/ir_aarch64.dasc +++ b/ext/opcache/jit/ir/ir_aarch64.dasc @@ -720,7 +720,7 @@ get_arg_hints: break; case IR_PARAM: constraints->def_reg = ir_get_param_reg(ctx, ref); - flags = 0; + flags = (constraints->def_reg != IR_REG_NONE) ? IR_USE_SHOULD_BE_IN_REG : 0; break; case IR_PI: case IR_PHI: diff --git a/ext/opcache/jit/ir/ir_builder.h b/ext/opcache/jit/ir/ir_builder.h index 03add7590655..084216a06343 100644 --- a/ext/opcache/jit/ir/ir_builder.h +++ b/ext/opcache/jit/ir/ir_builder.h @@ -654,7 +654,7 @@ void _ir_TAILCALL_3(ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_re void _ir_TAILCALL_4(ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4); void _ir_TAILCALL_5(ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4, ir_ref arg5); void _ir_TAILCALL_6(ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4, ir_ref arg5, ir_ref arg6); -ir_ref _ir_TAILCALL_N(ir_ctx *ctx, ir_type type, ir_ref func, uint32_t count, ir_ref *args); +void _ir_TAILCALL_N(ir_ctx *ctx, ir_type type, ir_ref func, uint32_t count, ir_ref *args); ir_ref _ir_ALLOCA(ir_ctx *ctx, ir_ref size); void _ir_AFREE(ir_ctx *ctx, ir_ref size); ir_ref _ir_VLOAD(ir_ctx *ctx, ir_type type, ir_ref var); diff --git a/ext/opcache/jit/ir/ir_gcm.c b/ext/opcache/jit/ir/ir_gcm.c index 7edb012f6172..1b45eb834ce6 100644 --- a/ext/opcache/jit/ir/ir_gcm.c +++ b/ext/opcache/jit/ir/ir_gcm.c @@ -408,8 +408,6 @@ static bool ir_split_partially_dead_node(ir_ctx *ctx, ir_ref ref, uint32_t b) } /* Reconstruct IR: Update DEF->USE lists, CFG mapping and etc */ - ctx->use_lists = ir_mem_realloc(ctx->use_lists, ctx->insns_count * sizeof(ir_use_list)); - ctx->cfg_map = ir_mem_realloc(ctx->cfg_map, ctx->insns_count * sizeof(uint32_t)); n = ctx->use_lists[ref].refs; for (i = 0; i < clones_count; i++) { clone = clones[i].ref; @@ -428,6 +426,7 @@ static bool ir_split_partially_dead_node(ir_ctx *ctx, ir_ref ref, uint32_t b) uint32_t u = clones[i].use; while (u != (uint32_t)-1) { + uint32_t src = uses[u].block; use = uses[u].ref; ctx->use_edges[n++] = use; u = uses[u].next; @@ -437,9 +436,11 @@ static bool ir_split_partially_dead_node(ir_ctx *ctx, ir_ref ref, uint32_t b) ir_ref k, l = insn->inputs_count; if (insn->op == IR_PHI) { - for (k = 1; k <= l; k++) { - if (ir_insn_op(insn, k) == ref) { - j = ctx->cfg_map[ir_insn_op(&ctx->ir_base[insn->op1], k - 1)]; + ir_insn *merge = &ctx->ir_base[insn->op1]; + for (k = 2; k <= l; k++) { + j = ctx->cfg_map[ir_insn_op(merge, k - 1)]; + if (j == src) { + IR_ASSERT(ir_insn_op(insn, k) == ref); if (j != clones[i].block) { uint32_t dom_depth = ctx->cfg_blocks[clones[i].block].dom_depth; while (ctx->cfg_blocks[j].dom_depth > dom_depth) { diff --git a/ext/opcache/jit/ir/ir_private.h b/ext/opcache/jit/ir/ir_private.h index 96b81a0fcd72..9e3a3a171b46 100644 --- a/ext/opcache/jit/ir/ir_private.h +++ b/ext/opcache/jit/ir/ir_private.h @@ -1047,7 +1047,6 @@ void ir_use_list_remove_one(ir_ctx *ctx, ir_ref def, ir_ref use); void ir_use_list_replace_all(ir_ctx *ctx, ir_ref def, ir_ref use, ir_ref new_use); void ir_use_list_replace_one(ir_ctx *ctx, ir_ref def, ir_ref use, ir_ref new_use); bool ir_use_list_add(ir_ctx *ctx, ir_ref def, ir_ref use); -void ir_use_list_sort(ir_ctx *ctx, ir_ref def); IR_ALWAYS_INLINE ir_ref ir_next_control(const ir_ctx *ctx, ir_ref ref) { @@ -1100,6 +1099,7 @@ void ir_iter_add_uses(ir_ctx *ctx, ir_ref ref, ir_bitqueue *worklist); void ir_iter_replace(ir_ctx *ctx, ir_ref ref, ir_ref new_ref, ir_bitqueue *worklist); void ir_iter_update_op(ir_ctx *ctx, ir_ref ref, uint32_t idx, ir_ref new_val, ir_bitqueue *worklist); void ir_iter_opt(ir_ctx *ctx, ir_bitqueue *worklist); +void ir_iter_cleanup(ir_ctx *ctx); /*** IR Basic Blocks info ***/ #define IR_IS_BB_START(op) \ diff --git a/ext/opcache/jit/ir/ir_ra.c b/ext/opcache/jit/ir/ir_ra.c index 4a893410d499..aff9aa7bab3f 100644 --- a/ext/opcache/jit/ir/ir_ra.c +++ b/ext/opcache/jit/ir/ir_ra.c @@ -3190,6 +3190,7 @@ static ir_reg ir_allocate_blocked_reg(ir_ctx *ctx, ir_live_interval *ival, ir_li return IR_REG_NONE; } if (split_pos >= blockPos[reg]) { +try_next_available_register: IR_REGSET_EXCL(available, reg); if (IR_REGSET_IS_EMPTY(available)) { fprintf(stderr, "LSRA Internal Error: Unsolvable conflict. Allocation is not possible\n"); @@ -3222,31 +3223,33 @@ static ir_reg ir_allocate_blocked_reg(ir_ctx *ctx, ir_live_interval *ival, ir_li IR_LOG_LSRA_CONFLICT(" ---- Conflict with active", other, overlap); split_pos = ir_last_use_pos_before(other, ival->range.start, IR_USE_MUST_BE_IN_REG | IR_USE_SHOULD_BE_IN_REG); - if (split_pos == 0) { - split_pos = ival->range.start; - } - split_pos = ir_find_optimal_split_position(ctx, other, split_pos, ival->range.start, 1); - if (split_pos > other->range.start) { - child = ir_split_interval_at(ctx, other, split_pos); - if (prev) { - prev->list_next = other->list_next; + if (split_pos) { + split_pos = ir_find_optimal_split_position(ctx, other, split_pos, ival->range.start, 1); + if (split_pos > other->range.start) { + child = ir_split_interval_at(ctx, other, split_pos); + if (prev) { + prev->list_next = other->list_next; + } else { + *active = other->list_next; + } + IR_LOG_LSRA(" ---- Finish", other, ""); } else { - *active = other->list_next; + goto try_next_available_register; } - IR_LOG_LSRA(" ---- Finish", other, ""); } else { child = other; - other->reg = IR_REG_NONE; - if (prev) { - prev->list_next = other->list_next; - } else { - *active = other->list_next; - } - IR_LOG_LSRA(" ---- Spill and Finish", other, " (it must not be in reg)"); } split_pos = ir_first_use_pos_after(child, ival->range.start, IR_USE_MUST_BE_IN_REG | IR_USE_SHOULD_BE_IN_REG) - 1; // TODO: ??? if (split_pos > child->range.start && split_pos < child->end) { + if (child == other) { + other->reg = IR_REG_NONE; + if (prev) { + prev->list_next = other->list_next; + } else { + *active = other->list_next; + } + } ir_live_pos opt_split_pos = ir_find_optimal_split_position(ctx, child, ival->range.start, split_pos, 1); if (opt_split_pos > child->range.start) { split_pos = opt_split_pos; @@ -3259,6 +3262,8 @@ static ir_reg ir_allocate_blocked_reg(ir_ctx *ctx, ir_live_interval *ival, ir_li // TODO: this may cause endless loop ir_add_to_unhandled(unhandled, child); IR_LOG_LSRA(" ---- Queue", child, ""); + } else { + goto try_next_available_register; } } break; diff --git a/ext/opcache/jit/ir/ir_sccp.c b/ext/opcache/jit/ir/ir_sccp.c index 6478ec697562..921790fd92bd 100644 --- a/ext/opcache/jit/ir/ir_sccp.c +++ b/ext/opcache/jit/ir/ir_sccp.c @@ -603,7 +603,7 @@ static IR_NEVER_INLINE void ir_sccp_analyze(const ir_ctx *ctx, ir_sccp_val *_val bool may_benefit = 0; bool has_top = 0; - if (_values[i].op != IR_TOP) { + if (_values[i].op != IR_TOP || insn->op == IR_COPY) { may_benefit = 1; } @@ -987,6 +987,7 @@ static void ir_sccp_remove_if(ir_ctx *ctx, const ir_sccp_val *_values, ir_ref re insn->optx = IR_OPTX(IR_END, IR_VOID, 1); next_insn = &ctx->ir_base[dst]; next_insn->op = IR_BEGIN; + next_insn->op2 = IR_UNUSED; } } @@ -2726,7 +2727,16 @@ static bool ir_optimize_phi(ir_ctx *ctx, ir_ref merge_ref, ir_insn *merge, ir_re } return 1; - } else if (cond->op != IR_OVERFLOW && insn->op2 <= cond_ref && insn->op3 <= cond_ref) { + } else if (insn->op2 <= cond_ref && insn->op3 <= cond_ref + && cond->op != IR_OVERFLOW + // TODO: temporary disable IF-conversion for RLOAD. + // We don't track anti-dependencies in GCM and Local Scheduling. + // As result COND may be scheduled below the following RSTORE. + // See: https://github.com/dstogov/ir/issues/132 + && cond->op != IR_RLOAD + && !((cond->op >= IR_EQ && cond->op <= IR_UNORDERED) + && ((!IR_IS_CONST_REF(cond->op1) && ctx->ir_base[cond->op1].op == IR_RLOAD) + || (!IR_IS_CONST_REF(cond->op2) && ctx->ir_base[cond->op2].op == IR_RLOAD)))) { /* COND * * prev prev @@ -2968,9 +2978,11 @@ static bool ir_try_split_if(ir_ctx *ctx, ir_ref ref, ir_insn *insn, ir_bitqueue if_false->optx = IR_OPTX(IR_BEGIN, IR_VOID, 1); if_false->op1 = end1_ref; + if_false->op2 = IR_UNUSED; if_true->optx = IR_OPTX(IR_BEGIN, IR_VOID, 1); if_true->op1 = end2_ref; + if_true->op2 = IR_UNUSED; ir_bitqueue_add(worklist, if_false_ref); ir_bitqueue_add(worklist, if_true_ref); @@ -3008,6 +3020,7 @@ static bool ir_try_split_if(ir_ctx *ctx, ir_ref ref, ir_insn *insn, ir_bitqueue if_true->optx = IR_BEGIN; if_true->op1 = IR_UNUSED; + if_true->op2 = IR_UNUSED; ctx->flags2 &= ~IR_CFG_REACHABLE; @@ -3157,9 +3170,11 @@ static bool ir_try_split_if_cmp(ir_ctx *ctx, ir_ref ref, ir_insn *insn, ir_bitqu if_false->optx = IR_OPTX(IR_BEGIN, IR_VOID, 1); if_false->op1 = end1_ref; + if_false->op2 = IR_UNUSED; if_true->optx = IR_OPTX(IR_BEGIN, IR_VOID, 1); if_true->op1 = end2_ref; + if_true->op2 = IR_UNUSED; ir_bitqueue_add(worklist, if_false_ref); ir_bitqueue_add(worklist, if_true_ref); @@ -3201,6 +3216,7 @@ static bool ir_try_split_if_cmp(ir_ctx *ctx, ir_ref ref, ir_insn *insn, ir_bitqu if_true->optx = IR_BEGIN; if_true->op1 = IR_UNUSED; + if_true->op2 = IR_UNUSED; ctx->flags2 &= ~IR_CFG_REACHABLE; @@ -3487,7 +3503,9 @@ static void ir_iter_optimize_if(ir_ctx *ctx, ir_ref ref, ir_insn *insn, ir_bitqu if_true = &ctx->ir_base[if_true_ref]; if_false = &ctx->ir_base[if_false_ref]; if_true->op = IR_BEGIN; + if_true->op2 = IR_UNUSED; if_false->op = IR_BEGIN; + if_false->op2 = IR_UNUSED; if (ir_ref_is_true(ctx, condition)) { if_false->op1 = IR_UNUSED; ir_use_list_remove_one(ctx, ref, if_false_ref); @@ -3750,6 +3768,47 @@ void ir_iter_opt(ir_ctx *ctx, ir_bitqueue *worklist) } } +void ir_iter_cleanup(ir_ctx *ctx) +{ + ir_bitqueue iter_worklist; + ir_bitqueue cfg_worklist; + ir_ref i, n; + ir_insn *insn; + + ir_bitqueue_init(&cfg_worklist, ctx->insns_count); + ir_bitqueue_init(&iter_worklist, ctx->insns_count); + + /* Remove unused nodes */ + for (i = IR_UNUSED + 1, insn = ctx->ir_base + i; i < ctx->insns_count;) { + if (IR_IS_FOLDABLE_OP(insn->op)) { + if (insn->op != IR_NOP && ctx->use_lists[i].count == 0) { + ir_iter_remove_insn(ctx, i, &iter_worklist); + } + } else if (insn->op == IR_IF || insn->op == IR_MERGE) { + ir_bitqueue_add(&cfg_worklist, i); + } + n = insn->inputs_count; + n = ir_insn_inputs_to_len(n); + i += n; + insn += n; + } + + while ((i = ir_bitqueue_pop(&iter_worklist)) >= 0) { + insn = &ctx->ir_base[i]; + if (IR_IS_FOLDABLE_OP(insn->op)) { + if (ctx->use_lists[i].count == 0) { + ir_iter_remove_insn(ctx, i, &iter_worklist); + } + } + } + + /* Cleanup Control Flow */ + ir_iter_opt(ctx, &cfg_worklist); + + ir_bitqueue_free(&iter_worklist); + ir_bitqueue_free(&cfg_worklist); +} + int ir_sccp(ir_ctx *ctx) { ir_bitqueue sccp_worklist, iter_worklist; diff --git a/ext/opcache/jit/ir/ir_x86.dasc b/ext/opcache/jit/ir/ir_x86.dasc index 049c341cc8fe..9cd41c37ffef 100644 --- a/ext/opcache/jit/ir/ir_x86.dasc +++ b/ext/opcache/jit/ir/ir_x86.dasc @@ -1666,7 +1666,7 @@ get_arg_hints: break; case IR_PARAM: constraints->def_reg = ir_get_param_reg(ctx, ref); - flags = 0; + flags = (constraints->def_reg != IR_REG_NONE) ? IR_USE_SHOULD_BE_IN_REG : 0; break; case IR_PI: case IR_PHI: diff --git a/ext/opcache/jit/tls/zend_jit_tls.h b/ext/opcache/jit/tls/zend_jit_tls.h index 5f9042926725..7faa76fa6a31 100644 --- a/ext/opcache/jit/tls/zend_jit_tls.h +++ b/ext/opcache/jit/tls/zend_jit_tls.h @@ -1,19 +1,17 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Arnaud Le Blanc | - * +----------------------------------------------------------------------+ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Arnaud Le Blanc | + +----------------------------------------------------------------------+ */ #ifndef ZEND_JIT_TLS_H diff --git a/ext/opcache/jit/tls/zend_jit_tls_aarch64.c b/ext/opcache/jit/tls/zend_jit_tls_aarch64.c index 24f0f88454b6..3258a3123ebb 100644 --- a/ext/opcache/jit/tls/zend_jit_tls_aarch64.c +++ b/ext/opcache/jit/tls/zend_jit_tls_aarch64.c @@ -1,19 +1,17 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Arnaud Le Blanc | - * +----------------------------------------------------------------------+ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Arnaud Le Blanc | + +----------------------------------------------------------------------+ */ #include "Zend/zend_portability.h" diff --git a/ext/opcache/jit/tls/zend_jit_tls_darwin.c b/ext/opcache/jit/tls/zend_jit_tls_darwin.c index ee8a572e04a0..8857ef5e738c 100644 --- a/ext/opcache/jit/tls/zend_jit_tls_darwin.c +++ b/ext/opcache/jit/tls/zend_jit_tls_darwin.c @@ -1,19 +1,17 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Dmitry Stogov | - * +----------------------------------------------------------------------+ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Dmitry Stogov | + +----------------------------------------------------------------------+ */ #include "Zend/zend_portability.h" diff --git a/ext/opcache/jit/tls/zend_jit_tls_win.c b/ext/opcache/jit/tls/zend_jit_tls_win.c index 23f0c1e79baa..5646f3dcba0b 100644 --- a/ext/opcache/jit/tls/zend_jit_tls_win.c +++ b/ext/opcache/jit/tls/zend_jit_tls_win.c @@ -1,19 +1,17 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Dmitry Stogov | - * +----------------------------------------------------------------------+ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Dmitry Stogov | + +----------------------------------------------------------------------+ */ #include "Zend/zend_portability.h" diff --git a/ext/opcache/jit/tls/zend_jit_tls_x86.c b/ext/opcache/jit/tls/zend_jit_tls_x86.c index 4e06bbd1eacd..362dffb47785 100644 --- a/ext/opcache/jit/tls/zend_jit_tls_x86.c +++ b/ext/opcache/jit/tls/zend_jit_tls_x86.c @@ -1,19 +1,17 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Arnaud Le Blanc | - * +----------------------------------------------------------------------+ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Arnaud Le Blanc | + +----------------------------------------------------------------------+ */ #include "zend_portability.h" diff --git a/ext/opcache/jit/tls/zend_jit_tls_x86_64.c b/ext/opcache/jit/tls/zend_jit_tls_x86_64.c index 11ffe495fcbb..1b2730c4be92 100644 --- a/ext/opcache/jit/tls/zend_jit_tls_x86_64.c +++ b/ext/opcache/jit/tls/zend_jit_tls_x86_64.c @@ -1,19 +1,17 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Arnaud Le Blanc | - * +----------------------------------------------------------------------+ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Arnaud Le Blanc | + +----------------------------------------------------------------------+ */ #include "zend_portability.h" diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index 1d33b03b4529..21e0213302dc 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -303,6 +301,7 @@ static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, cons case ZEND_DO_FCALL_BY_NAME: case ZEND_DO_FCALL: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: return 0; case ZEND_SEND_VAL: case ZEND_SEND_VAR: @@ -388,6 +387,7 @@ static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, cons case ZEND_DO_FCALL_BY_NAME: case ZEND_DO_FCALL: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: end = opline; if (end - op_array->opcodes >= ssa->cfg.blocks[b].start + ssa->cfg.blocks[b].len) { /* INIT_FCALL and DO_FCALL in different BasicBlocks */ @@ -867,6 +867,7 @@ static bool zend_jit_dec_call_level(uint8_t opcode) case ZEND_DO_UCALL: case ZEND_DO_FCALL_BY_NAME: case ZEND_CALLABLE_CONVERT: + case ZEND_CALLABLE_CONVERT_PARTIAL: return true; default: return false; @@ -1411,7 +1412,7 @@ static bool zend_jit_supported_binary_op(uint8_t op, uint32_t op1_info, uint32_t return (op1_info & MAY_BE_LONG) && (op2_info & MAY_BE_LONG); case ZEND_CONCAT: return (op1_info & MAY_BE_STRING) && (op2_info & MAY_BE_STRING); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -2891,7 +2892,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op if (i == end && (opline->result_type & (IS_SMART_BRANCH_JMPZ|IS_SMART_BRANCH_JMPNZ)) != 0) { /* smart branch split across basic blocks */ - if (!zend_jit_set_cond(&ctx, opline + 2, opline->result.var)) { + if (!zend_jit_set_cond(&ctx, opline, opline + 2, opline->result.var)) { goto jit_failure; } } diff --git a/ext/opcache/jit/zend_jit.h b/ext/opcache/jit/zend_jit.h index 9b8e054d2292..2671ddd23e2d 100644 --- a/ext/opcache/jit/zend_jit.h +++ b/ext/opcache/jit/zend_jit.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/ext/opcache/jit/zend_jit_helpers.c b/ext/opcache/jit/zend_jit_helpers.c index 59bb9401d9a9..64a48068f378 100644 --- a/ext/opcache/jit/zend_jit_helpers.c +++ b/ext/opcache/jit/zend_jit_helpers.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -2285,7 +2283,7 @@ static zend_never_inline bool zend_handle_fetch_obj_flags( } } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return 1; } diff --git a/ext/opcache/jit/zend_jit_internal.h b/ext/opcache/jit/zend_jit_internal.h index 22bab1ddd7ff..be27bcaf5341 100644 --- a/ext/opcache/jit/zend_jit_internal.h +++ b/ext/opcache/jit/zend_jit_internal.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | diff --git a/ext/opcache/jit/zend_jit_ir.c b/ext/opcache/jit/zend_jit_ir.c index 9d4d741963bb..583ae38d93fb 100644 --- a/ext/opcache/jit/zend_jit_ir.c +++ b/ext/opcache/jit/zend_jit_ir.c @@ -1,21 +1,20 @@ /* - * +----------------------------------------------------------------------+ - * | Zend JIT | - * +----------------------------------------------------------------------+ - * | Copyright (c) The PHP Group | - * +----------------------------------------------------------------------+ - * | This source file is subject to version 3.01 of the PHP license, | - * | that is bundled with this package in the file LICENSE, and is | - * | available through the world-wide-web at the following url: | - * | https://www.php.net/license/3_01.txt | - * | If you did not receive a copy of the PHP license and are unable to | - * | obtain it through the world-wide-web, please send a note to | - * | license@php.net so we can mail you a copy immediately. | - * +----------------------------------------------------------------------+ - * | Authors: Dmitry Stogov | - * +----------------------------------------------------------------------+ - */ + +----------------------------------------------------------------------+ + | Zend JIT | + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Dmitry Stogov | + +----------------------------------------------------------------------+ +*/ +#include "Zend/zend_cpuinfo.h" #include "Zend/zend_types.h" #include "Zend/zend_type_info.h" #include "jit/ir/ir.h" @@ -3396,7 +3395,7 @@ static void zend_jit_setup(bool reattached) if (zend_cpu_supports_avx()) { allowed_opt_flags |= ZEND_JIT_CPU_AVX; } -# if defined(PHP_HAVE_BUILTIN_CPU_SUPPORTS) && defined(__GNUC__) && (ZEND_GCC_VERSION >= 11000) +# ifdef HAVE_ZEND_CPU_SUPPORTS_CLDEMOTE if (zend_cpu_supports_cldemote()) { default_mflags |= IR_X86_CLDEMOTE; } @@ -3967,11 +3966,12 @@ static int zend_jit_cond_jmp(zend_jit_ctx *jit, const zend_op *next_opline, int return 1; } -static int zend_jit_set_cond(zend_jit_ctx *jit, const zend_op *next_opline, uint32_t var) +static int zend_jit_set_cond(zend_jit_ctx *jit, const zend_op *opline, const zend_op *next_opline, uint32_t var) { ir_ref ref; - ref = ir_ADD_U32(ir_ZEXT_U32(jit_CMP_IP(jit, IR_EQ, next_opline)), ir_CONST_U32(IS_FALSE)); + ir_op op = (opline->result_type & IS_SMART_BRANCH_JMPZ) ? IR_EQ : IR_NE; + ref = ir_ADD_U32(ir_ZEXT_U32(jit_CMP_IP(jit, op, next_opline)), ir_CONST_U32(IS_FALSE)); // EX_VAR(var) = ... ir_STORE(ir_ADD_OFFSET(jit_FP(jit), var + offsetof(zval, u1.type_info)), ref); @@ -10092,7 +10092,7 @@ static int zend_jit_do_fcall(zend_jit_ctx *jit, const zend_op *opline, const zen } bool may_have_extra_named_params = - opline->extended_value == ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS && + (opline->extended_value & ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS) && (!func || func->common.fn_flags & ZEND_ACC_VARIADIC); if (!jit->reuse_ip) { @@ -16081,7 +16081,7 @@ static int zend_jit_fetch_static_prop(zend_jit_ctx *jit, const zend_op *opline, case ZEND_FETCH_STATIC_PROP_UNSET: fetch_type = BP_VAR_UNSET; break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } // JIT: result = CACHED_PTR(cache_slot + sizeof(void *)); diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index 0aa294fdbff4..4b3cb663686d 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -5218,7 +5216,7 @@ static zend_vm_opcode_handler_t zend_jit_trace(zend_jit_trace_rec *trace_buffer, && ssa->vars[ssa_op->op2_def].use_chain < 0 && !ssa->vars[ssa_op->op2_def].phi_use_chain) { if (!zend_jit_store_type(&ctx, var_num, type)) { - return 0; + goto jit_failure; } SET_STACK_TYPE(stack, var_num, type, 1); } @@ -5271,7 +5269,7 @@ static zend_vm_opcode_handler_t zend_jit_trace(zend_jit_trace_rec *trace_buffer, && ssa->vars[ssa_op->op1_def].use_chain < 0 && !ssa->vars[ssa_op->op1_def].phi_use_chain) { if (!zend_jit_store_type(&ctx, var_num, type)) { - return 0; + goto jit_failure; } SET_STACK_TYPE(stack, var_num, type, 1); } @@ -5368,7 +5366,7 @@ static zend_vm_opcode_handler_t zend_jit_trace(zend_jit_trace_rec *trace_buffer, && ssa->vars[ssa_op->op1_def].use_chain < 0 && !ssa->vars[ssa_op->op1_def].phi_use_chain) { if (!zend_jit_store_type(&ctx, var_num, type)) { - return 0; + goto jit_failure; } SET_STACK_TYPE(stack, var_num, type, 1); } @@ -6627,7 +6625,7 @@ static zend_vm_opcode_handler_t zend_jit_trace(zend_jit_trace_rec *trace_buffer, var_num = EX_VAR_TO_NUM(var_num); if (!zend_jit_store_type(&ctx, var_num, type)) { - return 0; + goto jit_failure; } SET_STACK_TYPE(stack, var_num, type, 1); } @@ -7266,7 +7264,7 @@ static zend_vm_opcode_handler_t zend_jit_trace(zend_jit_trace_rec *trace_buffer, && type != STACK_MEM_TYPE(stack, i) && zend_jit_trace_must_store_type(op_array, op_array_ssa, opline - op_array->opcodes, i, type)) { if (!zend_jit_store_type(jit, i, type)) { - return 0; + goto jit_failure; } SET_STACK_TYPE(stack, i, type, 1); } @@ -7387,11 +7385,11 @@ static zend_vm_opcode_handler_t zend_jit_trace(zend_jit_trace_rec *trace_buffer, zend_string_release(name); } +jit_cleanup:; } zend_catch { do_bailout = 1; } zend_end_try(); -jit_cleanup: /* Clean up used op_arrays */ while (num_op_arrays > 0) { op_array = op_arrays[--num_op_arrays]; diff --git a/ext/opcache/jit/zend_jit_vm_helpers.c b/ext/opcache/jit/zend_jit_vm_helpers.c index bed5ab59992e..8796703ea015 100644 --- a/ext/opcache/jit/zend_jit_vm_helpers.c +++ b/ext/opcache/jit/zend_jit_vm_helpers.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend JIT | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Xinchen Hui | @@ -1059,7 +1057,8 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex, TRACE_RECORD(ZEND_JIT_TRACE_DO_ICALL, 0, func); } } else if (opline->opcode == ZEND_INCLUDE_OR_EVAL - || opline->opcode == ZEND_CALLABLE_CONVERT) { + || opline->opcode == ZEND_CALLABLE_CONVERT + || opline->opcode == ZEND_CALLABLE_CONVERT_PARTIAL) { /* TODO: Support tracing JIT for ZEND_CALLABLE_CONVERT. */ stop = ZEND_JIT_TRACE_STOP_INTERPRETER; break; diff --git a/ext/opcache/shared_alloc_mmap.c b/ext/opcache/shared_alloc_mmap.c index cf5dbb29ebfd..a805912d0d75 100644 --- a/ext/opcache/shared_alloc_mmap.c +++ b/ext/opcache/shared_alloc_mmap.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/shared_alloc_posix.c b/ext/opcache/shared_alloc_posix.c index 3f1e097fe97c..36ed7950044f 100644 --- a/ext/opcache/shared_alloc_posix.c +++ b/ext/opcache/shared_alloc_posix.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/shared_alloc_shm.c b/ext/opcache/shared_alloc_shm.c index b9f8ca4524a0..e98ac615f860 100644 --- a/ext/opcache/shared_alloc_shm.c +++ b/ext/opcache/shared_alloc_shm.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/shared_alloc_win32.c b/ext/opcache/shared_alloc_win32.c index c51c459ed553..84bd32e9cbad 100644 --- a/ext/opcache/shared_alloc_win32.c +++ b/ext/opcache/shared_alloc_win32.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/tests/jit/gh21593.phpt b/ext/opcache/tests/jit/gh21593.phpt new file mode 100644 index 000000000000..d37500195737 --- /dev/null +++ b/ext/opcache/tests/jit/gh21593.phpt @@ -0,0 +1,49 @@ +--TEST-- +GH-21593: Function JIT JMPNZ smart branch +--CREDITS-- +paulmhh +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit=function +--FILE-- +a)) { + echo "1\n"; + } +} + +function test2($a) { + if (!isset($a?->a)) { + echo "2\n"; + } +} + +function test3($a) { + if (empty($a?->a)) { + echo "3\n"; + } +} + +function test4($a) { + if (!empty($a?->a)) { + echo "4\n"; + } +} + +$a = new stdClass; +$a->a = 'a'; + +test1($a); +test2($a); +test3($a); +test4($a); + +?> +--EXPECT-- +1 +4 diff --git a/ext/opcache/zend_accelerator_api.c b/ext/opcache/zend_accelerator_api.c index 27267e8791ab..907b6b96e705 100644 --- a/ext/opcache/zend_accelerator_api.c +++ b/ext/opcache/zend_accelerator_api.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/opcache/zend_accelerator_api.h b/ext/opcache/zend_accelerator_api.h index 4ea42f29d174..002a69eee9f3 100644 --- a/ext/opcache/zend_accelerator_api.h +++ b/ext/opcache/zend_accelerator_api.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/opcache/zend_accelerator_blacklist.c b/ext/opcache/zend_accelerator_blacklist.c index 631f8b34608f..56a4ceb4dc4d 100644 --- a/ext/opcache/zend_accelerator_blacklist.c +++ b/ext/opcache/zend_accelerator_blacklist.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_blacklist.h b/ext/opcache/zend_accelerator_blacklist.h index da6e04e31b7c..4a337dd9814b 100644 --- a/ext/opcache/zend_accelerator_blacklist.h +++ b/ext/opcache/zend_accelerator_blacklist.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_debug.c b/ext/opcache/zend_accelerator_debug.c index b2a3105dc627..418ef805d633 100644 --- a/ext/opcache/zend_accelerator_debug.c +++ b/ext/opcache/zend_accelerator_debug.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_debug.h b/ext/opcache/zend_accelerator_debug.h index 4a19da57b5e6..d71a48893871 100644 --- a/ext/opcache/zend_accelerator_debug.h +++ b/ext/opcache/zend_accelerator_debug.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_hash.c b/ext/opcache/zend_accelerator_hash.c index 5198c0b3b78c..e35528f7f414 100644 --- a/ext/opcache/zend_accelerator_hash.c +++ b/ext/opcache/zend_accelerator_hash.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_hash.h b/ext/opcache/zend_accelerator_hash.h index 2f9197385386..6091361a68c8 100644 --- a/ext/opcache/zend_accelerator_hash.h +++ b/ext/opcache/zend_accelerator_hash.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_module.c b/ext/opcache/zend_accelerator_module.c index 1eaa183f9df5..465b15cd9576 100644 --- a/ext/opcache/zend_accelerator_module.c +++ b/ext/opcache/zend_accelerator_module.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_module.h b/ext/opcache/zend_accelerator_module.h index 6eff0624bbbf..cd46e07d1d27 100644 --- a/ext/opcache/zend_accelerator_module.h +++ b/ext/opcache/zend_accelerator_module.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c index 1f4c8094ac89..90496e456593 100644 --- a/ext/opcache/zend_accelerator_util_funcs.c +++ b/ext/opcache/zend_accelerator_util_funcs.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_accelerator_util_funcs.h b/ext/opcache/zend_accelerator_util_funcs.h index fa248edeef55..a95b2095ebbd 100644 --- a/ext/opcache/zend_accelerator_util_funcs.h +++ b/ext/opcache/zend_accelerator_util_funcs.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index 3114e5b92712..af59b9b2c34a 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ @@ -659,6 +657,7 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra SERIALIZE_STR(p->name); } zend_file_cache_serialize_type(&p->type, script, info, buf); + SERIALIZE_STR(p->doc_comment); p++; } } @@ -1562,6 +1561,7 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr UNSERIALIZE_STR(p->name); } zend_file_cache_unserialize_type(&p->type, (op_array->fn_flags & ZEND_ACC_CLOSURE) ? NULL : op_array->scope, script, buf); + UNSERIALIZE_STR(p->doc_comment); p++; } } diff --git a/ext/opcache/zend_file_cache.h b/ext/opcache/zend_file_cache.h index 452f6b2c4c24..37868285b0da 100644 --- a/ext/opcache/zend_file_cache.h +++ b/ext/opcache/zend_file_cache.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 9bc2496837ce..973e441edc80 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -652,6 +650,9 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc zend_accel_store_interned_string(arg_info[i].name); } zend_persist_type(&arg_info[i].type); + if (arg_info[i].doc_comment) { + zend_accel_store_interned_string(arg_info[i].doc_comment); + } } if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { arg_info++; diff --git a/ext/opcache/zend_persist.h b/ext/opcache/zend_persist.h index c8220217630e..453ae0811c17 100644 --- a/ext/opcache/zend_persist.h +++ b/ext/opcache/zend_persist.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c index 0b0ff51d0d4d..9ff37079193b 100644 --- a/ext/opcache/zend_persist_calc.c +++ b/ext/opcache/zend_persist_calc.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -306,6 +304,9 @@ static void zend_persist_op_array_calc_ex(zend_op_array *op_array) ADD_INTERNED_STRING(arg_info[i].name); } zend_persist_type_calc(&arg_info[i].type); + if (arg_info[i].doc_comment) { + ADD_INTERNED_STRING(arg_info[i].doc_comment); + } } } diff --git a/ext/opcache/zend_shared_alloc.c b/ext/opcache/zend_shared_alloc.c index 80ef36b8749d..b264f98a02b7 100644 --- a/ext/opcache/zend_shared_alloc.c +++ b/ext/opcache/zend_shared_alloc.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/opcache/zend_shared_alloc.h b/ext/opcache/zend_shared_alloc.h index 108349b13f81..cf0bb10d8932 100644 --- a/ext/opcache/zend_shared_alloc.h +++ b/ext/opcache/zend_shared_alloc.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -166,7 +164,11 @@ typedef union _align_test { zend_long lng; } align_test; -#if ZEND_GCC_VERSION >= 2000 +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L +# define PLATFORM_ALIGNMENT (alignof(align_test) < 8 ? 8 : alignof(align_test)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +# define PLATFORM_ALIGNMENT (_Alignof(align_test) < 8 ? 8 : _Alignof(align_test)) +#elif ZEND_GCC_VERSION >= 2000 || defined(__clang__) # define PLATFORM_ALIGNMENT (__alignof__(align_test) < 8 ? 8 : __alignof__(align_test)) #else # define PLATFORM_ALIGNMENT (sizeof(align_test)) diff --git a/ext/openssl/config.w32 b/ext/openssl/config.w32 index 6fd0e928422c..4b7f4b8b8565 100644 --- a/ext/openssl/config.w32 +++ b/ext/openssl/config.w32 @@ -16,9 +16,7 @@ if (PHP_OPENSSL != "no") { AC_DEFINE("LOAD_OPENSSL_LEGACY_PROVIDER", 1, "Define to 1 to load the OpenSSL legacy algorithm provider in addition to the default provider."); } if (PHP_OPENSSL_ARGON2 != "no") { - if (PHP_ZTS != "no") { - WARNING("OpenSSL argon2 hashing not supported in ZTS mode for now"); - } else if (!GREP_HEADER("openssl/thread.h", "OSSL_set_max_threads", PHP_PHP_BUILD + "\\include")) { + if (!GREP_HEADER("openssl/thread.h", "OSSL_set_max_threads", PHP_PHP_BUILD + "\\include")) { WARNING("OpenSSL argon2 hashing requires OpenSSL >= 3.2"); } else { AC_DEFINE("HAVE_OPENSSL_ARGON2", 1, "Define to 1 to enable OpenSSL argon2 password hashing."); diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index bc00b6b189b9..381a369d5718 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Venaas | | Wez Furlong | @@ -218,9 +216,9 @@ void php_openssl_store_errors(void) errors = OPENSSL_G(errors); do { - errors->top = (errors->top + 1) % ERR_NUM_ERRORS; + errors->top = (errors->top + 1) % PHP_OPENSSL_ERR_BUFFER_SIZE; if (errors->top == errors->bottom) { - errors->bottom = (errors->bottom + 1) % ERR_NUM_ERRORS; + errors->bottom = (errors->bottom + 1) % PHP_OPENSSL_ERR_BUFFER_SIZE; } errors->buffer[errors->top] = error_code; } while ((error_code = ERR_get_error())); @@ -562,14 +560,11 @@ PHP_FUNCTION(openssl_x509_export_to_file) bio_out = BIO_new_file(file_path, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY)); if (bio_out) { - if (!notext && !X509_print(bio_out, cert)) { - php_openssl_store_errors(); - } - if (!PEM_write_bio_X509(bio_out, cert)) { + if ((notext || X509_print(bio_out, cert)) && PEM_write_bio_X509(bio_out, cert)) { + RETVAL_TRUE; + } else { php_openssl_store_errors(); } - - RETVAL_TRUE; } else { php_openssl_store_errors(); php_error_docref(NULL, E_WARNING, "Error opening file %s", file_path); @@ -864,8 +859,7 @@ PHP_FUNCTION(openssl_x509_export) } if (!notext && !X509_print(bio_out, cert)) { php_openssl_store_errors(); - } - if (PEM_write_bio_X509(bio_out, cert)) { + } else if (PEM_write_bio_X509(bio_out, cert)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); @@ -1102,7 +1096,7 @@ PHP_FUNCTION(openssl_x509_parse) for (i = 0; i < X509_PURPOSE_get_count(); i++) { int id, purpset; char * pname; - X509_PURPOSE * purp; + const X509_PURPOSE * purp; zval subsub; array_init(&subsub); @@ -1156,7 +1150,7 @@ PHP_FUNCTION(openssl_x509_parse) goto err_subitem; } } - else if (X509V3_EXT_print(bio_out, extension, 0, 0)) { + else if (X509V3_EXT_print(bio_out, extension, 0, 0) > 0) { BIO_get_mem_ptr(bio_out, &bio_buf); add_assoc_stringl(&subitem, extname, bio_buf->data, bio_buf->length); } else { @@ -1177,6 +1171,7 @@ PHP_FUNCTION(openssl_x509_parse) err_subitem: zval_ptr_dtor(&subitem); + zval_ptr_dtor(&critext); err: zend_array_destroy(Z_ARR_P(return_value)); if (cert_str) { @@ -1452,7 +1447,7 @@ PHP_FUNCTION(openssl_pkcs12_export) if (p12 != NULL) { bio_out = BIO_new(BIO_s_mem()); - if (i2d_PKCS12_bio(bio_out, p12)) { + if (bio_out && i2d_PKCS12_bio(bio_out, p12)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); @@ -1517,7 +1512,7 @@ PHP_FUNCTION(openssl_pkcs12_read) if (cert) { bio_out = BIO_new(BIO_s_mem()); - if (PEM_write_bio_X509(bio_out, cert)) { + if (bio_out && PEM_write_bio_X509(bio_out, cert)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); ZVAL_STRINGL(&zcert, bio_buf->data, bio_buf->length); @@ -1530,6 +1525,10 @@ PHP_FUNCTION(openssl_pkcs12_read) if (pkey) { bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + goto cleanup; + } + if (PEM_write_bio_PrivateKey(bio_out, pkey, NULL, NULL, 0, 0, NULL)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); @@ -1544,13 +1543,16 @@ PHP_FUNCTION(openssl_pkcs12_read) cert_num = sk_X509_num(ca); if (ca && cert_num) { array_init(&zextracerts); + bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + goto cleanup; + } for (i = 0; i < cert_num; i++) { zval zextracert; X509* aCA = sk_X509_pop(ca); if (!aCA) break; - bio_out = BIO_new(BIO_s_mem()); if (PEM_write_bio_X509(bio_out, aCA)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); @@ -1558,9 +1560,10 @@ PHP_FUNCTION(openssl_pkcs12_read) add_index_zval(&zextracerts, i, &zextracert); } + (void)BIO_reset(bio_out); X509_free(aCA); - BIO_free(bio_out); } + BIO_free(bio_out); sk_X509_free(ca); add_assoc_zval(zout, "extracerts", &zextracerts); @@ -1619,9 +1622,9 @@ PHP_FUNCTION(openssl_csr_export_to_file) bio_out = BIO_new_file(file_path, PHP_OPENSSL_BIO_MODE_W(PKCS7_BINARY)); if (bio_out != NULL) { if (!notext && !X509_REQ_print(bio_out, csr)) { + /* TODO: warn? */ php_openssl_store_errors(); - } - if (!PEM_write_bio_X509_REQ(bio_out, csr)) { + } else if (!PEM_write_bio_X509_REQ(bio_out, csr)) { php_error_docref(NULL, E_WARNING, "Error writing PEM to file %s", file_path); php_openssl_store_errors(); } else { @@ -1670,9 +1673,7 @@ PHP_FUNCTION(openssl_csr_export) bio_out = BIO_new(BIO_s_mem()); if (!notext && !X509_REQ_print(bio_out, csr)) { php_openssl_store_errors(); - } - - if (PEM_write_bio_X509_REQ(bio_out, csr)) { + } else if (PEM_write_bio_X509_REQ(bio_out, csr)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); @@ -1812,10 +1813,17 @@ PHP_FUNCTION(openssl_csr_sign) goto cleanup; } } else { - PHP_OPENSSL_ASN1_INTEGER_set(X509_get_serialNumber(new_cert), serial); + if (!PHP_OPENSSL_ASN1_INTEGER_set(X509_get_serialNumber(new_cert), serial)) { + php_openssl_store_errors(); + php_error_docref(NULL, E_WARNING, "Error setting serial number"); + goto cleanup; + } } - X509_set_subject_name(new_cert, X509_REQ_get_subject_name(csr)); + if (!X509_set_subject_name(new_cert, X509_REQ_get_subject_name(csr))) { + php_openssl_store_errors(); + goto cleanup; + } if (cert == NULL) { cert = new_cert; @@ -1824,8 +1832,11 @@ PHP_FUNCTION(openssl_csr_sign) php_openssl_store_errors(); goto cleanup; } - X509_gmtime_adj(X509_getm_notBefore(new_cert), 0); - X509_gmtime_adj(X509_getm_notAfter(new_cert), 60*60*24*num_days); + if (!X509_gmtime_adj(X509_getm_notBefore(new_cert), 0) + || !X509_gmtime_adj(X509_getm_notAfter(new_cert), 60*60*24*num_days)) { + php_openssl_store_errors(); + goto cleanup; + } i = X509_set_pubkey(new_cert, key); if (!i) { php_openssl_store_errors(); @@ -2215,6 +2226,10 @@ PHP_FUNCTION(openssl_pkey_export) if (PHP_SSL_REQ_PARSE(&req, args) == SUCCESS) { bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + php_openssl_store_errors(); + goto cleanup; + } if (passphrase && req.priv_key_encrypt) { if (req.priv_key_encrypt_cipher) { @@ -2243,6 +2258,7 @@ PHP_FUNCTION(openssl_pkey_export) php_openssl_store_errors(); } } +cleanup: EVP_PKEY_free(key); BIO_free(bio_out); PHP_SSL_REQ_DISPOSE(&req); @@ -2318,7 +2334,7 @@ PHP_FUNCTION(openssl_pkey_get_details) EVP_PKEY *pkey = Z_OPENSSL_PKEY_P(key)->pkey; BIO *out = BIO_new(BIO_s_mem()); - if (!PEM_write_bio_PUBKEY(out, pkey)) { + if (!out || !PEM_write_bio_PUBKEY(out, pkey)) { BIO_free(out); php_openssl_store_errors(); RETURN_FALSE; @@ -2459,12 +2475,14 @@ PHP_FUNCTION(openssl_pbkdf2) if (PKCS5_PBKDF2_HMAC(password, (int)password_len, (unsigned char *)salt, (int)salt_len, (int)iterations, digest, (int)key_length, (unsigned char*)ZSTR_VAL(out_buffer)) == 1) { ZSTR_VAL(out_buffer)[key_length] = 0; - RETURN_NEW_STR(out_buffer); + RETVAL_NEW_STR(out_buffer); } else { php_openssl_store_errors(); zend_string_release_ex(out_buffer, 0); - RETURN_FALSE; + RETVAL_FALSE; } + + php_openssl_release_evp_md(digest); } /* }}} */ @@ -2811,33 +2829,41 @@ PHP_FUNCTION(openssl_pkcs7_read) } if (certs != NULL) { + bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + goto clean_exit; + } for (i = 0; i < sk_X509_num(certs); i++) { X509* ca = sk_X509_value(certs, i); - bio_out = BIO_new(BIO_s_mem()); - if (bio_out && PEM_write_bio_X509(bio_out, ca)) { + if (PEM_write_bio_X509(bio_out, ca)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); ZVAL_STRINGL(&zcert, bio_buf->data, bio_buf->length); add_index_zval(zout, i, &zcert); } - BIO_free(bio_out); + (void)BIO_reset(bio_out); } + BIO_free(bio_out); } if (crls != NULL) { + bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + goto clean_exit; + } for (i = 0; i < sk_X509_CRL_num(crls); i++) { X509_CRL* crl = sk_X509_CRL_value(crls, i); - bio_out = BIO_new(BIO_s_mem()); - if (bio_out && PEM_write_bio_X509_CRL(bio_out, crl)) { + if (PEM_write_bio_X509_CRL(bio_out, crl)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); ZVAL_STRINGL(&zcert, bio_buf->data, bio_buf->length); add_index_zval(zout, i, &zcert); } - BIO_free(bio_out); + (void)BIO_reset(bio_out); } + BIO_free(bio_out); } RETVAL_TRUE; @@ -3478,33 +3504,43 @@ PHP_FUNCTION(openssl_cms_read) } if (certs != NULL) { + bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + goto clean_exit; + } + for (i = 0; i < sk_X509_num(certs); i++) { X509* ca = sk_X509_value(certs, i); - bio_out = BIO_new(BIO_s_mem()); - if (bio_out && PEM_write_bio_X509(bio_out, ca)) { + if (PEM_write_bio_X509(bio_out, ca)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); ZVAL_STRINGL(&zcert, bio_buf->data, bio_buf->length); add_index_zval(zout, i, &zcert); } - BIO_free(bio_out); + (void)BIO_reset(bio_out); } + BIO_free(bio_out); } if (crls != NULL) { + bio_out = BIO_new(BIO_s_mem()); + if (!bio_out) { + goto clean_exit; + } + for (i = 0; i < sk_X509_CRL_num(crls); i++) { X509_CRL* crl = sk_X509_CRL_value(crls, i); - bio_out = BIO_new(BIO_s_mem()); - if (bio_out && PEM_write_bio_X509_CRL(bio_out, crl)) { + if (PEM_write_bio_X509_CRL(bio_out, crl)) { BUF_MEM *bio_buf; BIO_get_mem_ptr(bio_out, &bio_buf); ZVAL_STRINGL(&zcert, bio_buf->data, bio_buf->length); add_index_zval(zout, i, &zcert); } - BIO_free(bio_out); + (void)BIO_reset(bio_out); } + BIO_free(bio_out); } RETVAL_TRUE; @@ -4042,7 +4078,7 @@ PHP_FUNCTION(openssl_error_string) RETURN_FALSE; } - OPENSSL_G(errors)->bottom = (OPENSSL_G(errors)->bottom + 1) % ERR_NUM_ERRORS; + OPENSSL_G(errors)->bottom = (OPENSSL_G(errors)->bottom + 1) % PHP_OPENSSL_ERR_BUFFER_SIZE; val = OPENSSL_G(errors)->buffer[OPENSSL_G(errors)->bottom]; if (val) { @@ -4381,18 +4417,20 @@ PHP_FUNCTION(openssl_open) cipher = php_openssl_get_evp_cipher_by_name(method); if (!cipher) { php_error_docref(NULL, E_WARNING, "Unknown cipher algorithm"); - RETURN_FALSE; + RETVAL_FALSE; + goto out_pkey; } cipher_iv_len = EVP_CIPHER_iv_length(cipher); if (cipher_iv_len > 0) { if (!iv) { zend_argument_value_error(6, "cannot be null for the chosen cipher algorithm"); - RETURN_THROWS(); + goto out_pkey; } if ((size_t)cipher_iv_len != iv_len) { php_error_docref(NULL, E_WARNING, "IV length is invalid"); - RETURN_FALSE; + RETVAL_FALSE; + goto out_pkey; } iv_buf = (unsigned char *)iv; } else { @@ -4414,8 +4452,9 @@ PHP_FUNCTION(openssl_open) } efree(buf); - EVP_PKEY_free(pkey); EVP_CIPHER_CTX_free(ctx); +out_pkey: + EVP_PKEY_free(pkey); } /* }}} */ @@ -4495,7 +4534,8 @@ PHP_FUNCTION(openssl_digest) sigbuf = zend_string_alloc(siglen, 0); md_ctx = EVP_MD_CTX_create(); - if (EVP_DigestInit(md_ctx, mdtype) && + if (md_ctx && + EVP_DigestInit(md_ctx, mdtype) && EVP_DigestUpdate(md_ctx, (unsigned char *)data, data_len) && EVP_DigestFinal (md_ctx, (unsigned char *)ZSTR_VAL(sigbuf), &siglen)) { if (raw_output) { diff --git a/ext/openssl/openssl_backend_common.c b/ext/openssl/openssl_backend_common.c index 533d2f2c61f1..6eae715d4321 100644 --- a/ext/openssl/openssl_backend_common.c +++ b/ext/openssl/openssl_backend_common.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jakub Zelenka | +----------------------------------------------------------------------+ @@ -746,6 +744,7 @@ int php_openssl_check_cert(X509_STORE *ctx, X509 *x, STACK_OF(X509) *untrustedch return 0; } if (!X509_STORE_CTX_init(csc, ctx, x, untrustedchain)) { + X509_STORE_CTX_free(csc); php_openssl_store_errors(); php_error_docref(NULL, E_WARNING, "Certificate store initialization failed"); return 0; @@ -1087,13 +1086,15 @@ zend_result php_openssl_csr_make(struct php_x509_request * req, X509_REQ * csr, } } } + + if (!X509_REQ_set_pubkey(csr, req->priv_key)) { + php_openssl_store_errors(); + } } else { php_openssl_store_errors(); + return FAILURE; } - if (!X509_REQ_set_pubkey(csr, req->priv_key)) { - php_openssl_store_errors(); - } return SUCCESS; } @@ -1517,7 +1518,7 @@ EVP_PKEY *php_openssl_generate_private_key(struct php_x509_request * req) case EVP_PKEY_ED448: break; #endif - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if (EVP_PKEY_paramgen(ctx, ¶ms) <= 0) { diff --git a/ext/openssl/openssl_backend_v1.c b/ext/openssl/openssl_backend_v1.c index 0f254fb58575..0c1ac6b955f6 100644 --- a/ext/openssl/openssl_backend_v1.c +++ b/ext/openssl/openssl_backend_v1.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jakub Zelenka | +----------------------------------------------------------------------+ @@ -140,7 +138,14 @@ static bool php_openssl_pkey_init_dsa_data(DSA *dsa, zval *data, bool *is_privat OPENSSL_PKEY_SET_BN(data, p); OPENSSL_PKEY_SET_BN(data, q); OPENSSL_PKEY_SET_BN(data, g); - if (!p || !q || !g || !DSA_set0_pqg(dsa, p, q, g)) { + if (!p || !q || !g) { + BN_free(p); + BN_free(q); + BN_free(g); + return false; + } + + if (!DSA_set0_pqg(dsa, p, q, g)) { return false; } @@ -201,7 +206,12 @@ static bool php_openssl_pkey_init_dh_data(DH *dh, zval *data, bool *is_private) OPENSSL_PKEY_SET_BN(data, p); OPENSSL_PKEY_SET_BN(data, q); OPENSSL_PKEY_SET_BN(data, g); - if (!p || !g || !DH_set0_pqg(dh, p, q, g)) { + if (!p || !q) { + BN_free(p); + return false; + } + + if (!DH_set0_pqg(dh, p, q, g)) { return false; } @@ -214,6 +224,10 @@ static bool php_openssl_pkey_init_dh_data(DH *dh, zval *data, bool *is_private) if (priv_key) { pub_key = php_openssl_dh_pub_from_priv(priv_key, g, p); if (pub_key == NULL) { + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(priv_key); return false; } return DH_set0_key(dh, pub_key, priv_key); @@ -261,6 +275,9 @@ static bool php_openssl_pkey_init_ec_data(EC_KEY *eckey, zval *data, bool *is_pr EC_POINT *point_q = NULL; EC_GROUP *group = NULL; BN_CTX *bctx = BN_CTX_new(); + if (!bctx) { + goto clean_exit; + } *is_private = false; diff --git a/ext/openssl/openssl_backend_v3.c b/ext/openssl/openssl_backend_v3.c index 6e3e883080f3..339ff53f7b62 100644 --- a/ext/openssl/openssl_backend_v3.c +++ b/ext/openssl/openssl_backend_v3.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jakub Zelenka | +----------------------------------------------------------------------+ @@ -454,6 +452,9 @@ EVP_PKEY *php_openssl_pkey_init_ec(zval *data, bool *is_private) { } EVP_PKEY_CTX_free(ctx); ctx = EVP_PKEY_CTX_new(param_key, NULL); + if (!ctx) { + goto cleanup; + } } if (EVP_PKEY_check(ctx) || EVP_PKEY_public_check_quick(ctx)) { diff --git a/ext/openssl/openssl_pwhash.c b/ext/openssl/openssl_pwhash.c index dc125e3b516d..0b439a731d1c 100644 --- a/ext/openssl/openssl_pwhash.c +++ b/ext/openssl/openssl_pwhash.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Remi Collet | +----------------------------------------------------------------------+ @@ -51,6 +49,7 @@ ZEND_EXTERN_MODULE_GLOBALS(openssl) static inline zend_result get_options(zend_array *options, uint32_t *memlimit, uint32_t *iterlimit, uint32_t *threads) { zval *opt; + zend_long sthreads; *iterlimit = PHP_OPENSSL_PWHASH_ITERLIMIT; *memlimit = PHP_OPENSSL_PWHASH_MEMLIMIT; @@ -76,8 +75,7 @@ static inline zend_result get_options(zend_array *options, uint32_t *memlimit, u } *iterlimit = siterlimit; } - if ((opt = zend_hash_str_find(options, "threads", strlen("threads"))) && (zval_get_long(opt) != 1)) { - zend_long sthreads = zval_get_long(opt); + if ((opt = zend_hash_str_find(options, "threads", strlen("threads"))) && ((sthreads = zval_get_long(opt)) != 1)) { if ((sthreads < PHP_OPENSSL_THREADS_MIN) || (sthreads > PHP_OPENSSL_THREADS_MAX)) { zend_value_error("Invalid number of threads"); return FAILURE; diff --git a/ext/openssl/php_openssl.h b/ext/openssl/php_openssl.h index 92ccd9a546f9..9801f5458a76 100644 --- a/ext/openssl/php_openssl.h +++ b/ext/openssl/php_openssl.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Venaas | | Wez Furlong . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jakub Zelenka | +----------------------------------------------------------------------+ diff --git a/ext/openssl/tests/bug74796.phpt b/ext/openssl/tests/bug74796.phpt index b3f594d5e60f..8ec5590c064f 100644 --- a/ext/openssl/tests/bug74796.phpt +++ b/ext/openssl/tests/bug74796.phpt @@ -12,13 +12,24 @@ if (substr(PHP_OS, 0, 3) == 'WIN') { --FILE-- saveCaCert($caFile); +$certificateGenerator->saveNewCertAsFileWithKey('cs.php.net', $csFile); +$certificateGenerator->saveNewCertAsFileWithKey('uk.php.net', $ukFile); +$certificateGenerator->saveNewCertAsFileWithKey('us.php.net', $usFile); + $serverCode = <<<'CODE' $serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN; $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ - "cs.php.net" => __DIR__ . "/sni_server_cs.pem", - "uk.php.net" => __DIR__ . "/sni_server_uk.pem", - "us.php.net" => __DIR__ . "/sni_server_us.pem" + "cs.php.net" => '%s', + "uk.php.net" => '%s', + "us.php.net" => '%s', ] ]]); @@ -33,6 +44,7 @@ $serverCode = <<<'CODE' phpt_wait(); CODE; +$serverCode = sprintf($serverCode, $csFile, $ukFile, $usFile); $proxyCode = <<<'CODE' function parse_sni_from_client_hello($data) { @@ -134,7 +146,7 @@ CODE; $clientCode = <<<'CODE' $clientCtx = stream_context_create([ 'ssl' => [ - 'cafile' => __DIR__ . '/sni_server_ca.pem', + 'cafile' => '%s', 'verify_peer' => true, 'verify_peer_name' => true, ], @@ -155,16 +167,21 @@ $clientCode = <<<'CODE' phpt_notify('server'); CODE; +$clientCode = sprintf($clientCode, $caFile); include 'ServerClientTestCase.inc'; ServerClientTestCase::getInstance()->run($clientCode, [ - 'server' => $serverCode, - 'proxy' => $proxyCode, + 'server' => $serverCode, + 'proxy' => $proxyCode, ]); ?> --CLEAN-- --EXPECT-- string(19) "Hello from server 0" diff --git a/ext/openssl/tests/bug80770.phpt b/ext/openssl/tests/bug80770.phpt index 9100aaa5aa18..21860dc78eb7 100644 --- a/ext/openssl/tests/bug80770.phpt +++ b/ext/openssl/tests/bug80770.phpt @@ -11,14 +11,25 @@ if (OPENSSL_VERSION_NUMBER < 0x10101000) die("skip OpenSSL v1.1.1 required"); saveCaCert($caCertFile); +$certificateGenerator->saveNewCertAsFileWithKey('cs.php.net', $csFile); +$certificateGenerator->saveNewCertAsFileWithKey('uk.php.net', $ukFile); +$certificateGenerator->saveNewCertAsFileWithKey('us.php.net', $usFile); +$certificateGenerator->saveNewCertAsFileWithKey('Bug80770 Test Client', $clientCertFile); $serverCode = <<<'CODE' $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ - "cs.php.net" => __DIR__ . "/sni_server_cs.pem", - "uk.php.net" => __DIR__ . "/sni_server_uk.pem", - "us.php.net" => __DIR__ . "/sni_server_us.pem" + "cs.php.net" => '%s', + "uk.php.net" => '%s', + "us.php.net" => '%s', ], 'verify_peer' => true, 'cafile' => '%s', @@ -28,7 +39,6 @@ $serverCode = <<<'CODE' ]]); $server = stream_socket_server('tcp://127.0.0.1:0', $errno, $errstr, $flags, $ctx); phpt_notify_server_start($server); - $client = stream_socket_accept($server, 30); if ($client) { $success = stream_socket_enable_crypto($client, true, STREAM_CRYPTO_METHOD_TLS_SERVER); @@ -43,7 +53,7 @@ $serverCode = <<<'CODE' phpt_notify(message: "ACCEPT_FAILED"); } CODE; -$serverCode = sprintf($serverCode, $caCertFile); +$serverCode = sprintf($serverCode, $csFile, $ukFile, $usFile, $caCertFile); $clientCode = <<<'CODE' $flags = STREAM_CLIENT_CONNECT; @@ -58,19 +68,11 @@ $clientCode = <<<'CODE' if ($client) { stream_socket_enable_crypto($client, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); } - $result = phpt_wait(); echo trim($result); CODE; $clientCode = sprintf($clientCode, $clientCertFile); -include 'CertificateGenerator.inc'; - -// Generate CA and client certificate signed by that CA -$certificateGenerator = new CertificateGenerator(); -$certificateGenerator->saveCaCert($caCertFile); -$certificateGenerator->saveNewCertAsFileWithKey('Bug80770 Test Client', $clientCertFile); - include 'ServerClientTestCase.inc'; ServerClientTestCase::getInstance()->run($clientCode, $serverCode); ?> @@ -78,6 +80,9 @@ ServerClientTestCase::getInstance()->run($clientCode, $serverCode); --EXPECTF-- CLIENT_CERT_CAPTURED diff --git a/ext/openssl/tests/gh21031.phpt b/ext/openssl/tests/gh21031.phpt new file mode 100644 index 000000000000..25bdb385a791 --- /dev/null +++ b/ext/openssl/tests/gh21031.phpt @@ -0,0 +1,55 @@ +--TEST-- +GH-21031 (Fix NULL deref when enabling TLS fails and the peer name needs to be reset) +--EXTENSIONS-- +openssl +--SKIPIF-- + +--FILE-- + [ + 'SNI_server_certs' => [ + "cs.php.net" => __DIR__ . "/sni_server_cs_expired.pem", + ] + ]]); + + $server = stream_socket_server('tls://127.0.0.1:0', $errno, $errstr, $serverFlags, $ctx); + phpt_notify_server_start($server); + + $conn = stream_socket_accept($server, 10); + if ($conn) { + fclose($conn); + } + + phpt_wait(); +CODE; + +$clientCode = <<<'CODE' + $clientCtx = stream_context_create([ + 'ssl' => [ + 'cafile' => __DIR__ . '/sni_server_ca.pem', + 'verify_peer' => true, + 'verify_peer_name' => true, + ], + "http" => [ + "proxy" => "tcp://{{ ADDR }}" + ], + ]); + + var_dump(@file_get_contents("https://cs.php.net/", false, $clientCtx)); + + phpt_notify(); +CODE; + +include 'ServerClientTestCase.inc'; +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); +?> +--EXPECT-- +bool(false) diff --git a/ext/openssl/tests/gh9310.phpt b/ext/openssl/tests/gh9310.phpt index 07a7d442cec8..874ed4c781d3 100644 --- a/ext/openssl/tests/gh9310.phpt +++ b/ext/openssl/tests/gh9310.phpt @@ -23,7 +23,21 @@ $certificateGenerator->saveNewCertAndKey('gh9310', $certFile, $pkFile); copy($certFile, $baseDirCertFile); copy($pkFile, $baseDirPkFile); -copy(__DIR__ . '/sni_server_uk_cert.pem', $baseDir . '/sni_server_uk_cert.pem'); + +$sniCaFile = __DIR__ . '/gh9310_sni_ca.pem.tmp'; +$sniCsFile = __DIR__ . '/gh9310_sni_cs.pem.tmp'; +$sniUkCertFile = __DIR__ . '/gh9310_sni_uk_cert.pem.tmp'; +$sniUkKeyFile = __DIR__ . '/gh9310_sni_uk_key.pem.tmp'; +$sniUsCertFile = __DIR__ . '/gh9310_sni_us_cert.pem.tmp'; +$sniUsKeyFile = __DIR__ . '/gh9310_sni_us_key.pem.tmp'; +$baseDirSniUkCertFile = $baseDir . '/sni_uk_cert.pem'; + +$certificateGenerator->saveCaCert($sniCaFile); +$certificateGenerator->saveNewCertAsFileWithKey('cs.php.net', $sniCsFile); +$certificateGenerator->saveNewCertAndKey('uk.php.net', $sniUkCertFile, $sniUkKeyFile); +$certificateGenerator->saveNewCertAndKey('us.php.net', $sniUsCertFile, $sniUsKeyFile); + +copy($sniUkCertFile, $baseDirSniUkCertFile); $serverCodeTemplate = <<<'CODE' @@ -60,7 +74,7 @@ $sniServerCodeV1 = <<<'CODE' $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ - "cs.php.net" => __DIR__ . "/sni_server_cs.pem", + "cs.php.net" => '%s', ] ]]); @@ -69,6 +83,7 @@ $sniServerCodeV1 = <<<'CODE' stream_socket_accept($server); CODE; +$sniServerCodeV1 = sprintf($sniServerCodeV1, $sniCsFile); $sniServerCodeV2 = <<<'CODE' ini_set('log_errors', 'On'); @@ -77,8 +92,8 @@ $sniServerCodeV2 = <<<'CODE' $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ "uk.php.net" => [ - 'local_cert' => __DIR__ . '/gh9310/sni_server_uk_cert.pem', - 'local_pk' => __DIR__ . '/sni_server_uk_key.pem', + 'local_cert' => '%s', + 'local_pk' => '%s', ] ] ]]); @@ -88,6 +103,7 @@ $sniServerCodeV2 = <<<'CODE' stream_socket_accept($server); CODE; +$sniServerCodeV2 = sprintf($sniServerCodeV2, $baseDirSniUkCertFile, $sniUkKeyFile); $sniServerCodeV3 = <<<'CODE' ini_set('log_errors', 'On'); @@ -96,8 +112,8 @@ $sniServerCodeV3 = <<<'CODE' $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ "us.php.net" => [ - 'local_cert' => __DIR__ . '/sni_server_us_cert.pem', - 'local_pk' => __DIR__ . '/sni_server_us_key.pem', + 'local_cert' => '%s', + 'local_pk' => '%s', ] ] ]]); @@ -107,14 +123,15 @@ $sniServerCodeV3 = <<<'CODE' stream_socket_accept($server); CODE; +$sniServerCodeV3 = sprintf($sniServerCodeV3, $sniUsCertFile, $sniUsKeyFile); $sniClientCodeTemplate = <<<'CODE' $flags = STREAM_CLIENT_CONNECT; $ctxArr = [ - 'cafile' => __DIR__ . '/sni_server_ca.pem', + 'cafile' => '%s', + 'peer_name' => '%s', ]; - $ctxArr['peer_name'] = '%s'; $ctx = stream_context_create(['ssl' => $ctxArr]); @stream_socket_client("tls://{{ ADDR }}", $errno, $errstr, 1, $flags, $ctx); CODE; @@ -131,13 +148,13 @@ ServerClientTestCase::getInstance()->run($clientCode, $serverCode); $serverCode = sprintf($serverCodeTemplate, $baseDirCertFile, $pkFile); ServerClientTestCase::getInstance()->run($clientCode, $serverCode); -$sniClientCode = sprintf($sniClientCodeTemplate, 'cs.php.net'); +$sniClientCode = sprintf($sniClientCodeTemplate, $sniCaFile, 'cs.php.net'); ServerClientTestCase::getInstance()->run($sniClientCode, $sniServerCodeV1); -$sniClientCode = sprintf($sniClientCodeTemplate, 'uk.php.net'); +$sniClientCode = sprintf($sniClientCodeTemplate, $sniCaFile, 'uk.php.net'); ServerClientTestCase::getInstance()->run($sniClientCode, $sniServerCodeV2); -$sniClientCode = sprintf($sniClientCodeTemplate, 'us.php.net'); +$sniClientCode = sprintf($sniClientCodeTemplate, $sniCaFile, 'us.php.net'); ServerClientTestCase::getInstance()->run($sniClientCode, $sniServerCodeV3); ?> @@ -149,7 +166,13 @@ $baseDir = __DIR__ . '/gh9310'; @unlink(__DIR__ . '/gh9310.key'); @unlink($baseDir . '/cert.crt'); @unlink($baseDir . '/private.key'); -@unlink($baseDir . '/sni_server_uk_cert.pem'); +@unlink($baseDir . '/sni_uk_cert.pem'); +@unlink(__DIR__ . '/gh9310_sni_ca.pem.tmp'); +@unlink(__DIR__ . '/gh9310_sni_cs.pem.tmp'); +@unlink(__DIR__ . '/gh9310_sni_uk_cert.pem.tmp'); +@unlink(__DIR__ . '/gh9310_sni_uk_key.pem.tmp'); +@unlink(__DIR__ . '/gh9310_sni_us_cert.pem.tmp'); +@unlink(__DIR__ . '/gh9310_sni_us_key.pem.tmp'); @rmdir($baseDir); ?> --EXPECTF-- @@ -169,15 +192,15 @@ PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(% PHP Warning: stream_socket_accept(): Unable to get real path of private key file `%sgh9310.key' in %s PHP Warning: stream_socket_accept(): Failed to enable crypto in %s PHP Warning: stream_socket_accept(): Accept failed: %s -PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(%ssni_server_cs.pem) is not within the allowed path(s): (%sgh9310) in %s -PHP Warning: stream_socket_accept(): Failed setting local cert chain file `%ssni_server_cs.pem'; file not found in %s +PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(%sgh9310_sni_cs.pem.tmp) is not within the allowed path(s): (%sgh9310) in %s +PHP Warning: stream_socket_accept(): Failed setting local cert chain file `%sgh9310_sni_cs.pem.tmp'; file not found in %s PHP Warning: stream_socket_accept(): Failed to enable crypto in %s PHP Warning: stream_socket_accept(): Accept failed: %s -PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(%ssni_server_uk_key.pem) is not within the allowed path(s): (%sgh9310) in %s -PHP Warning: stream_socket_accept(): Failed setting local private key file `%ssni_server_uk_key.pem'; could not open file in %s +PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(%sgh9310_sni_uk_key.pem.tmp) is not within the allowed path(s): (%sgh9310) in %s +PHP Warning: stream_socket_accept(): Failed setting local private key file `%sgh9310_sni_uk_key.pem.tmp'; could not open file in %s PHP Warning: stream_socket_accept(): Failed to enable crypto in %s PHP Warning: stream_socket_accept(): Accept failed: %s -PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(%ssni_server_us_cert.pem) is not within the allowed path(s): (%sgh9310) in %s -PHP Warning: stream_socket_accept(): Failed setting local cert chain file `%ssni_server_us_cert.pem'; could not open file in %s +PHP Warning: stream_socket_accept(): open_basedir restriction in effect. File(%sgh9310_sni_us_cert.pem.tmp) is not within the allowed path(s): (%sgh9310) in %s +PHP Warning: stream_socket_accept(): Failed setting local cert chain file `%sgh9310_sni_us_cert.pem.tmp'; could not open file in %s PHP Warning: stream_socket_accept(): Failed to enable crypto in %s PHP Warning: stream_socket_accept(): Accept failed: %s diff --git a/ext/openssl/tests/openssl_password.phpt b/ext/openssl/tests/openssl_password.phpt index 0dbc1ae42a3f..ca0d20f9bcc3 100644 --- a/ext/openssl/tests/openssl_password.phpt +++ b/ext/openssl/tests/openssl_password.phpt @@ -5,7 +5,10 @@ openssl --SKIPIF-- --FILE-- diff --git a/ext/openssl/tests/openssl_pbkdf2_basic.phpt b/ext/openssl/tests/openssl_pbkdf2_basic.phpt index fd253ac78bb2..ba79f9415ba8 100644 --- a/ext/openssl/tests/openssl_pbkdf2_basic.phpt +++ b/ext/openssl/tests/openssl_pbkdf2_basic.phpt @@ -19,6 +19,8 @@ var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 16777216))); var_dump(bin2hex(openssl_pbkdf2('passwordPASSWORDpassword', 'saltSALTsaltSALTsaltSALTsaltSALTsalt', 25, 4096))); var_dump(bin2hex(openssl_pbkdf2("pass\0word", "sa\0lt", 16, 4096))); +var_dump(bin2hex(openssl_pbkdf2("password", "salt", 16, 4096, "sha-256"))); + ?> --EXPECT-- string(40) "0c60c80f961f0e71f3a9b524af6012062fe037a6" @@ -26,3 +28,4 @@ string(40) "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957" string(40) "4b007901b765489abead49d926f721d065a429c1" string(50) "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038" string(32) "56fa6aa75548099dcc37d7f03425e0c3" +string(32) "c5e478d59288c841aa530db6845c4c8d" diff --git a/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt b/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt index 7c06881c9be7..99c1150b0e85 100644 --- a/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt +++ b/ext/openssl/tests/openssl_x509_checkpurpose_basic.phpt @@ -14,7 +14,7 @@ $cert = "file://" . __DIR__ . "/cert.crt"; $bert = "file://" . __DIR__ . "/bug41033.pem"; $sert = "file://" . __DIR__ . "/san-cert.pem"; $cpca = __DIR__ . "/san-cert.pem"; -$utfl = __DIR__ . "/sni_server_uk.pem"; +$utfl = __DIR__ . "/sni_server.pem"; $rcrt = openssl_x509_read($cert); /* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose); */ diff --git a/ext/openssl/tests/openssl_x509_export_to_file_leak.phpt b/ext/openssl/tests/openssl_x509_export_to_file_leak.phpt index 5775c2597c3e..59a942d6a67e 100644 --- a/ext/openssl/tests/openssl_x509_export_to_file_leak.phpt +++ b/ext/openssl/tests/openssl_x509_export_to_file_leak.phpt @@ -5,7 +5,7 @@ openssl --FILE-- diff --git a/ext/openssl/tests/sni_server_uk.pem b/ext/openssl/tests/sni_server.pem similarity index 100% rename from ext/openssl/tests/sni_server_uk.pem rename to ext/openssl/tests/sni_server.pem diff --git a/ext/openssl/tests/sni_server.phpt b/ext/openssl/tests/sni_server.phpt index 7f9a4e82872b..db0b0190dab3 100644 --- a/ext/openssl/tests/sni_server.phpt +++ b/ext/openssl/tests/sni_server.phpt @@ -8,13 +8,25 @@ if (!function_exists("proc_open")) die("skip no proc_open"); ?> --FILE-- saveCaCert($caFile); +$certificateGenerator->saveNewCertAsFileWithKey('cs.php.net', $csFile); +$certificateGenerator->saveNewCertAsFileWithKey('uk.php.net', $ukFile); +$certificateGenerator->saveNewCertAsFileWithKey('us.php.net', $usFile); + $serverCode = <<<'CODE' $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ - "cs.php.net" => __DIR__ . "/sni_server_cs.pem", - "uk.php.net" => __DIR__ . "/sni_server_uk.pem", - "us.php.net" => __DIR__ . "/sni_server_us.pem" + "cs.php.net" => '%s', + "uk.php.net" => '%s', + "us.php.net" => '%s', ] ]]); @@ -25,11 +37,12 @@ $serverCode = <<<'CODE' @stream_socket_accept($server, 3); } CODE; +$serverCode = sprintf($serverCode, $csFile, $ukFile, $usFile); $clientCode = <<<'CODE' $flags = STREAM_CLIENT_CONNECT; $ctxArr = [ - 'cafile' => __DIR__ . '/sni_server_ca.pem', + 'cafile' => '%s', 'capture_peer_cert' => true ]; @@ -51,10 +64,18 @@ $clientCode = <<<'CODE' $cert = stream_context_get_options($ctx)['ssl']['peer_certificate']; var_dump(openssl_x509_parse($cert)['subject']['CN']); CODE; +$clientCode = sprintf($clientCode, $caFile); include 'ServerClientTestCase.inc'; ServerClientTestCase::getInstance()->run($clientCode, $serverCode); ?> +--CLEAN-- + --EXPECTF-- string(%d) "cs.php.net" string(%d) "uk.php.net" diff --git a/ext/openssl/tests/sni_server_cs_cert.pem b/ext/openssl/tests/sni_server_cs_cert.pem deleted file mode 100644 index b77c7b83e2ad..000000000000 --- a/ext/openssl/tests/sni_server_cs_cert.pem +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFIjCCAwqgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwVTELMAkGA1UEBhMCR0Ix -EDAOBgNVBAgMB0VuZ2xhbmQxEDAOBgNVBAoMB1BIUC5uZXQxEDAOBgNVBAsMB29w -ZW5zc2wxEDAOBgNVBAMMB3BocC5uZXQwHhcNMTgwMTE0MTgzNjEyWhcNMjYwNDAy -MTgzNjEyWjBGMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UE -CgwHUEhQLm5ldDETMBEGA1UEAwwKY3MucGhwLm5ldDCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAL8uTYc5LcxHbB02xger6mADZrOa59c1xZkyaxpVgsKC -LDZk32ob2ZKwtXAl02e32zwfF0G6QLc9mUlOznMAVvQfKJGFD6Pc4v6bcHK4LELD -dIa3A/DAUVHHHr8IpnuXy74PBPUSf+vMvctwZ0XFVmDtrACvY7k34nTYxE1NwW9O -aF7/A0g/+qJ10LuLlw4LEN3EV3pXfVAdMWs5kF8soiKl3P3KUwJ2hFWM59vGo+zZ -VG8zauddVFzF2OOMfRHF1qT1We4XjXCTc2OQwjc5rVyq7fcojKVkHD1xM7BElcQD -Kom/bkxTpb1V9eyyD8QRuuej40w/SdYepAWzAlMc7O8CAwEAAaOCAQkwggEFMAkG -A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVu -U1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFHPfd8dK -Lz1R0Ck4WV1B9AWXd5DSMGwGA1UdIwRlMGOAFOPK44Eacedv7HbR2Igcbew+4kUa -oUekRTBDMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UECgwH -UEhQLm5ldDEQMA4GA1UEAwwHcGhwLm5ldIICEAAwDgYDVR0PAQH/BAQDAgWgMBMG -A1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4ICAQB6WSIHEyDXLZxH -hZjqSNQOA7Wc9Z2FCAiD29xYkGTL8WuPVGGP1mu4B92ytj+PMWwqSReDa7eTGLE7 -O7ozw9l+c+gNmHFNikSsGjlV2E8CToQOFMny+jAQYMSXf8UbTp9xDfgG02t/71hv -SLWqdeHMLcR0xi0nBQH0vDOkwUbuWYqFa3jejHieGhykHM6CkIk6lqnyOEO+ooIF -ZsLprrg1ss/mXCPI6niP0hze55ERKdxI7Rk8sZ4pVkf2SUWqZrUS0aJ+Ymmwi6Xd -2V7izq5N30PkJS8MtqII4FAjRBIkwPh0sy8PmW/DzkYU+lYQnDfYLKDFKcj8xJK/ -o8oZUBsQltrSj0KlM9QuqxCTCBCy1nXZ9WHOhq+jdLiTc1Oi60uEHcUMrLK8aYc4 -HqIvZS6C2iwMI0d1OP3VxmAbMQ9yqRi+FbLYavJ3H40jrU9SYqdxa0BrTaz8MJNE -6AEwgQDPChczSghvHME+Fs4mtGCY3TesbNZKVahQRjaFIhMZIZ4RP4CRc0bJOBG+ -8Me4+KHNsD2ki5b03wAN6C1P2QrMzI+gH9fXLZYp761ciDAsX6YIzrhHHYLxYpJH -BkQKKs8dCQWE5IzgVrdlvC3Z1/l9om66wHqqx7nKnPfYs/Sfnwe9MpCD6xJrXiTm -WS7NM6fbQpO9APNr7o0ZOjbbWFzlNw== ------END CERTIFICATE----- diff --git a/ext/openssl/tests/sni_server_cs.pem b/ext/openssl/tests/sni_server_cs_expired.pem similarity index 100% rename from ext/openssl/tests/sni_server_cs.pem rename to ext/openssl/tests/sni_server_cs_expired.pem diff --git a/ext/openssl/tests/sni_server_cs_key.pem b/ext/openssl/tests/sni_server_cs_key.pem deleted file mode 100644 index bf1e9f25193b..000000000000 --- a/ext/openssl/tests/sni_server_cs_key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAvy5NhzktzEdsHTbGB6vqYANms5rn1zXFmTJrGlWCwoIsNmTf -ahvZkrC1cCXTZ7fbPB8XQbpAtz2ZSU7OcwBW9B8okYUPo9zi/ptwcrgsQsN0hrcD -8MBRUccevwime5fLvg8E9RJ/68y9y3BnRcVWYO2sAK9juTfidNjETU3Bb05oXv8D -SD/6onXQu4uXDgsQ3cRXeld9UB0xazmQXyyiIqXc/cpTAnaEVYzn28aj7NlUbzNq -511UXMXY44x9EcXWpPVZ7heNcJNzY5DCNzmtXKrt9yiMpWQcPXEzsESVxAMqib9u -TFOlvVX17LIPxBG656PjTD9J1h6kBbMCUxzs7wIDAQABAoIBAQC85lBeY0X4ST3v -I7bJz7kWQ2YP4uhfAdeLhoDDFWjNLffniwYhfwEc6xNri0R2f/jUT9gX7qORKwEx -qPdeNCC2t67LElGg1FlJv2Z9Q7MgCKYzkdQH5s6y4e9kTHTLO/JpiceZKz1QTQ3f -XOH9032E6nIAf0wmr6xHTgOwajrN8VI5BuPEMVmEwIw3AtYeqVuPCNKyGR4HUVkC -2bAydnGngbRJRnNzmKcWJancxpHDGBSFqPyuXMFC7Jgo3ZmyCbGp99vuXVk/sW9x -5aj94M9nRE0guk05ivH2/JZao2uLYkIgjFWlhNxKdWgWRk8DEuN4djC8mKS9YH1q -crYRToMhAoGBAOspUTtKP54mpZmyhxuDqj02JaJRzNTskPHsiF1UhtXuw7uT+ryV -ekUFLNXoFmn9mbx1WVaUvGH4qjilvQOxz7u++lz0ApqJEfyM3jc/cC40Y5zcuGSu -Etbg+SyDoytlgMCIydJyrS7NNALSo5p5oG6XY2f8yd/DCAmo8LzypaHRAoGBANAf -R1SlBMc/bOsi6GrJxcBVSCFMiKYiO5woL5aUKa9yM+UQuQ/6xbQ7Q+sOlt0FH3xo -AJ2L60qTdjyXVtjOdtXs5ZC4l+C6AfnCx6yLr+fNc4SOYXEfqS4LZylgwKd9KyVB -asspIW9Idbgebmi6vPyt9LDkIp0h1VuFGjkvQJK/AoGBAI4pbS0dprXyARyYW6sb -fpgAmuG099IkrT9DUfCx/81myTclr2fAKal+BmvOIXaz0/OlMXvw8K19iVIzh7+r -B70lJ+93p/dKM/BsLI5TsHqOO0YB/QsIXOVAHgJ2FfdPJnW+e9vYba+kZ/Po6PSi -4ITaykJ8BIJcQgis89QWEGFxAoGBAJhQO+jzuDKF9ZWEf6ofrw0anOZZ16wWY5/e -PS2rk3JmVxpuibHrKqPDt+ogTELHDAsFJmYmz3VNxHuFmrajK49Wh4/JuMVr/CQo -6+8YcA1qa/94IFIlBLDBAafjujsZvOjQHnM+z8xcsGKmStF00Pjv6qNG4xoyd646 -FD4DmfOLAoGAWXehpopZKXE9gRAni881ucK6WqxPPBoofbozi09D0MmfarIVaSkv -jNVVHBfLWd7IEXTjiipPBeUqq6Jc3pscN1Vp4rrl8jTmVTdazEv0LuzpdUFqmNo2 -M+xw17uz9D9Q32/aW1Lar0PdIaL/wGEDEyzEBFwrGppcENLilPz8gzU= ------END RSA PRIVATE KEY----- diff --git a/ext/openssl/tests/sni_server_key_cert.phpt b/ext/openssl/tests/sni_server_key_cert.phpt index 49ed6aa5328c..878f97c1e359 100644 --- a/ext/openssl/tests/sni_server_key_cert.phpt +++ b/ext/openssl/tests/sni_server_key_cert.phpt @@ -8,21 +8,36 @@ if (!function_exists("proc_open")) die("skip no proc_open"); ?> --FILE-- saveCaCert($caFile); +$certificateGenerator->saveNewCertAndKey('cs.php.net', $csCertFile, $csKeyFile); +$certificateGenerator->saveNewCertAndKey('uk.php.net', $ukCertFile, $ukKeyFile); +$certificateGenerator->saveNewCertAndKey('us.php.net', $usCertFile, $usKeyFile); + $serverCode = <<<'CODE' $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; $ctx = stream_context_create(['ssl' => [ 'SNI_server_certs' => [ "cs.php.net" => [ - 'local_cert' => __DIR__ . "/sni_server_cs_cert.pem", - 'local_pk' => __DIR__ . "/sni_server_cs_key.pem" + 'local_cert' => '%s', + 'local_pk' => '%s', ], "uk.php.net" => [ - 'local_cert' => __DIR__ . "/sni_server_uk_cert.pem", - 'local_pk' => __DIR__ . "/sni_server_uk_key.pem" + 'local_cert' => '%s', + 'local_pk' => '%s', ], "us.php.net" => [ - 'local_cert' => __DIR__ . "/sni_server_us_cert.pem", - 'local_pk' => __DIR__ . "/sni_server_us_key.pem" + 'local_cert' => '%s', + 'local_pk' => '%s', ], ] ]]); @@ -34,11 +49,16 @@ $serverCode = <<<'CODE' @stream_socket_accept($server, 3); } CODE; +$serverCode = sprintf($serverCode, + $csCertFile, $csKeyFile, + $ukCertFile, $ukKeyFile, + $usCertFile, $usKeyFile +); $clientCode = <<<'CODE' $flags = STREAM_CLIENT_CONNECT; $ctxArr = [ - 'cafile' => __DIR__ . '/sni_server_ca.pem', + 'cafile' => '%s', 'capture_peer_cert' => true ]; @@ -60,10 +80,21 @@ $clientCode = <<<'CODE' $cert = stream_context_get_options($ctx)['ssl']['peer_certificate']; var_dump(openssl_x509_parse($cert)['subject']['CN']); CODE; +$clientCode = sprintf($clientCode, $caFile); include 'ServerClientTestCase.inc'; ServerClientTestCase::getInstance()->run($clientCode, $serverCode); ?> +--CLEAN-- + --EXPECTF-- string(%d) "cs.php.net" string(%d) "uk.php.net" diff --git a/ext/openssl/tests/sni_server_uk_cert.pem b/ext/openssl/tests/sni_server_uk_cert.pem deleted file mode 100644 index 57663855e590..000000000000 --- a/ext/openssl/tests/sni_server_uk_cert.pem +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFIjCCAwqgAwIBAgICEAMwDQYJKoZIhvcNAQELBQAwVTELMAkGA1UEBhMCR0Ix -EDAOBgNVBAgMB0VuZ2xhbmQxEDAOBgNVBAoMB1BIUC5uZXQxEDAOBgNVBAsMB29w -ZW5zc2wxEDAOBgNVBAMMB3BocC5uZXQwHhcNMTgwMTE0MTgzNjMyWhcNMjYwNDAy -MTgzNjMyWjBGMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UE -CgwHUEhQLm5ldDETMBEGA1UEAwwKdWsucGhwLm5ldDCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAKzKRXj0jVBzRwolFn7Ej0MR2kE6Q36IBCEiDLhquSYR -Lh1spR0XudSVmRot/Wvz2PawApX4P6qj57scBQ6KL4ULKvSndCZ7F1tdQjEqogYp -n/L8oBhP1dgyDonsewG/PucxC+3Aqzcl3w5Pg7qE+zad42khP7t9TjFAMxc+PxC+ -2as5ZCDJBwfxksCyCQfFWx7eB7p39vGy63k3Izv+UKTZEhbSdT721kb91oXkecpE -EFhihfVYMGMEtC7u2JLSxdkRhWYSMqVCvI2syYsLAUUNH2kgqQF00j2Iddhg3oMA -IiqhpC/n2slHVhp56WE1TsrGC/JgqIvQK9AT4LRxFb8CAwEAAaOCAQkwggEFMAkG -A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVu -U1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFJK58uJe -Lv8WDOR8TTLUcSxO1zCyMGwGA1UdIwRlMGOAFOPK44Eacedv7HbR2Igcbew+4kUa -oUekRTBDMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UECgwH -UEhQLm5ldDEQMA4GA1UEAwwHcGhwLm5ldIICEAAwDgYDVR0PAQH/BAQDAgWgMBMG -A1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4ICAQDHayU795hFnQNj -fuYV21sEmkSjgtp6X4rV9JfoCp8U2gieL4mizoCPx9Q8HYaAf98hPYTofGUaCSd+ -Xlzd8lhLt9GCU+BsCxGtJocrjOQDhyhkioN8iirQRTtJpRVC6a4RCBGpenOD7Z7C -Z32uGXohzFuigP/J8/SXBdHrlpNSa03iEkkisPR46mbGj06lFVOFHJDNKA3CnQwM -3VfqvZt0ksZi/gAOol8dtrAd3k5JBfJ2BtqsPbycEGAhsGrTK/MeqiFcO8QZiXpN -qf0wZzOMFZJ4HqTiHs4TMMQaDK8c4qfR0l1OE224ijcB5NlqMjGAZabMfHgNZcl7 -fYPX+POsOMaqubv98uoC0PCK8NCTyfB4V/el72EEoVfwKYOxm3eYXBEE2ZNyIci6 -YKYhNa9e2k+cFueYMztV06HTGgkcHcSJATP+3ISTRx3tj1BPmc4O4WAMEMx1E0gg -PaVrBVAylGzt8kaMaOQMBImpsALSfutq6+KtQiu0OTGS3yVUGamV4AyRjuwF1/ZA -kZbjmNEGsf9d2rzS89ckds24QUx0zrfJ56p7lRvyVK/pML7iadv8dUH3fKDDDerD -oocLjOjNxFGN9Woz+kfidA8Siu0zsfQ6CLPlaQrVAVQH4iMuCZraqMc3TqAiUKRj -iHKp6FFrRZmY8W8HEKHv98uGofn+3g== ------END CERTIFICATE----- diff --git a/ext/openssl/tests/sni_server_uk_key.pem b/ext/openssl/tests/sni_server_uk_key.pem deleted file mode 100644 index 3baa6efd776e..000000000000 --- a/ext/openssl/tests/sni_server_uk_key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEArMpFePSNUHNHCiUWfsSPQxHaQTpDfogEISIMuGq5JhEuHWyl -HRe51JWZGi39a/PY9rAClfg/qqPnuxwFDoovhQsq9Kd0JnsXW11CMSqiBimf8vyg -GE/V2DIOiex7Ab8+5zEL7cCrNyXfDk+DuoT7Np3jaSE/u31OMUAzFz4/EL7Zqzlk -IMkHB/GSwLIJB8VbHt4Hunf28bLreTcjO/5QpNkSFtJ1PvbWRv3WheR5ykQQWGKF -9VgwYwS0Lu7YktLF2RGFZhIypUK8jazJiwsBRQ0faSCpAXTSPYh12GDegwAiKqGk -L+fayUdWGnnpYTVOysYL8mCoi9Ar0BPgtHEVvwIDAQABAoIBAGpg7XyWMxpAno/k -XYEWSo0kRJa75CnWW5R6fhJbwjlpglajONQ8czAqGeRARDFeI0lc+3qRJ8FKv7Q2 -f/Z/pNnoEj4liiDWz350X/gdIztgDRVv6rCNFj7QMps/eEuPDo8PZySs5bxCGJ2a -3qLKlE7/za4/xhkMAEPaHppEvFb15dpomqP2Fjqei9afp8tD+xJv9BGtkFIy9acw -94AWQi974kgW7ZzfEf8RqHM0ExKiESCc26knbcBu0tQ892YHggMccUMk/UrVgR5d -vuGOBurlYGLBstSDSKCCe6la4N/FX3FiC3WhVNescnuTZPXcX3zebh7roGjgrTdd -6UJYBIECgYEA09XYihdwW66G9Y09OatzlzBh1Rvzjv2Vl5NmWHHb6vh38H4PcOof -S1pT0JvRzpt8uEs4i+Eda5PyQyp4iGtD+DQ07Dxh2jiixsE3PRFRG2wg2QCgDHnS -6vgV1VOqA/A4on4nhxLZXxhX4YvHaJYlm1bZ+amG+j5XiI/NtHJm9k8CgYEA0NB9 -bAoaZnc06+T8rMaO45boX5SvYsCZbtY3VRl75SrbMal0IKfnXHELVHuei12LmlMs -LuFgG8jGO3+ncxUqMytoGvrmk/cM9tCNbDKVHtFbqz0qt9lkDAwLsBougKnVsNDW -Aae/tz/wYXJct86unfLh0xtvkx5Iz1we4cS1fZECgYA8YR+vfK7R8xUUuIVTAsOX -vHqmO6lYgH87DRCG9S0x9FB7g/LyxEjXOY/aTg+nTDpobUhY1nmESE8tRdXFTI27 -GWZcT3m0sZ/z9u6/wUfVAST7tWnpJHAx+TR/8bDsHnSGHF836O98Y3vpFeZosSNW -+5J1zxRiD5LzocmIPXOLkQKBgEgHApxXx898YwbTj8zRGMysay89DFpV8RboUWHL -To83/y/cMbBp+kZKwAu+MGwGMndjJSRunUY4NRik6c+qh0nrORfFX+++Efy4529g -60scEDC7Apc0J2x4Yze1cED1VD6PaqJbiKffKD2UwyKr6lOVSgwVtKDcm2Tbc9OQ -lMHhAoGBAIPwYVxzWM6I6pr8x2TucpBZZReLytz7uzybMNvbKCrwlETbNNXubnfp -nPuPKzpeRI0y26pIIAbijzFW0MXq+kIu3H7we8TaImsJ1AaQCTYeoLWBVcr6RISk -3d4i7iT35aWCuhPVve0FNIv/u3jrqX2H2C2MXMiLOsw1GFxPvpi4 ------END RSA PRIVATE KEY----- diff --git a/ext/openssl/tests/sni_server_us.pem b/ext/openssl/tests/sni_server_us.pem deleted file mode 100644 index 170a8a96e75d..000000000000 --- a/ext/openssl/tests/sni_server_us.pem +++ /dev/null @@ -1,57 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEA1QkC3tiNYDY+ZxMmPbagYUbMpzuXo9mVBvYh86bYZaeB7bts -QCBK+6VD4D2LjR3RszpzmOzhJXjm8j0t+GeRS3OMIM75/BKAnixXicRSIb8zdIPz -JP992vvMq8p46/XftAfBhAMOaCqcD85zpyX4PhfC9733nOyN4yqx58O4UhVTKih6 -W9/ldp3uwSYAW+HyoINnHls/bFO8vv60K5VIhkxK30LHnC5PvByGfuHOgrscEThs -jW0ESqO0+9l88KhGdmLgzvbBlGxNziCMfn0LcFH6p2ITc3foD4LSzGEFtJ92OZi3 -buCOfbFsN7vWHTsEi89fRcCnWGtMwLUx0TCluQIDAQABAoIBAQCnsUQ1Lrl6trhA -Yu6DPbLZX+XQ7jPbonaQ2Ea5iOhmfIjmHdaEU+cyV1EqvseO+Z4MO0KraiuAV79T -h50cIEpa3kW7vbFCHz5nQ/hUVdlg/yT93rASu5rSOctOnz64Xv8Ms948kDtS+9eF -Cbo4JMdX+VRbt4mmWP8HhqAsFACPexEoWxJcIxwFcI24GTGzySjemNjQzbmcVhzM -a4k6n8DolCL1cRS54C5Aaf5g4+IFDgyydcgZXp1lnX3MnqivSNkejnPnY55NcmrH -X3ZWPlAi9GHOJE33uy8bGWnip7Tn4iTt6tJvjz/yP82TGACDg1B8XsKrqsuQLsoU -cNBVGcQBAoGBAPteCgNmuNOpo4SRA1UVRw1WgnE8YtnNA6vYyVcTLSpqabq33UaD -03L9CQsbHtj88U+E8OH24Iqj3U9x7QJfH8DVmWuBrlwez80JsKGnLdViHydjKcAz -H2Cbv+SiWeaWXkFCkN4Jf7k3q0Ew4SG2LOq5PVUy/NB4bilbJD2ExKpZAoGBANj2 -Hpwo35IQ4XfSSsGaCdn+8ajMcNUMMGZ6YkZqmVO4kogqobyrPL/2KE9ol/hlacw6 -U/6Digox5/wqruYfqyM8lqGOq2/0Xf7c4XfiOTS9Na4JN3OGzlyqPvcn2zdqhYFY -iHPu2RqpA+LhCHW9Zs8C1Bp/KAEPdRP6OabqVaphAoGACLrHVj7nBFLL3vq6RuYq -RYhPl2cld7LrAbjRpTiBRQvVCCsCgERrv36SJdSXSanfJ4fSZcaRHb97HBs0w/RR -wfypC1bBm2lmhhRkEfkgWlzCADgtZwNff5dpHqOUw7FNLK8HIO7rhJ8uT2FHMEiH -Xs94FdFjfknwaXdE1u4ZdmECgYEAgxfbkQHFbO2UPqErGGXp0/WOsS6ucpyF1jXW -kbOxZ3vb1jjkNyrEbzzeSHTrdmRYk9UekWeLjfNvt9dWjKfP8V+XqJCbF+9wqCFw -fs6LQEmfWMQq5DwtDqKznwVPGOHdPzVuZZaJSemb9oeAZBwINccAv+3bDyD23hZQ -pYFsN6ECgYEA33QYDNG/spki4D8rlxyxZ+1MdB/efnrGBhO8FsJpG5+AtmYhWgD9 -sl29+3aiRkmDznoy36z+hoeZePILEAKMcbHyXOymixOHPuaZJ95hbvq6sqd6WMAe -w5tHnxlfEuu11zatolk6WiAmTmG3sZpN5Tqloq0Ye4dvlhVKNV3Bn3E= ------END RSA PRIVATE KEY----- ------BEGIN CERTIFICATE----- -MIIFIjCCAwqgAwIBAgICEAQwDQYJKoZIhvcNAQELBQAwVTELMAkGA1UEBhMCR0Ix -EDAOBgNVBAgMB0VuZ2xhbmQxEDAOBgNVBAoMB1BIUC5uZXQxEDAOBgNVBAsMB29w -ZW5zc2wxEDAOBgNVBAMMB3BocC5uZXQwHhcNMTgwMTE0MTgzNjQ0WhcNMjYwNDAy -MTgzNjQ0WjBGMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UE -CgwHUEhQLm5ldDETMBEGA1UEAwwKdXMucGhwLm5ldDCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANUJAt7YjWA2PmcTJj22oGFGzKc7l6PZlQb2IfOm2GWn -ge27bEAgSvulQ+A9i40d0bM6c5js4SV45vI9LfhnkUtzjCDO+fwSgJ4sV4nEUiG/ -M3SD8yT/fdr7zKvKeOv137QHwYQDDmgqnA/Oc6cl+D4Xwve995zsjeMqsefDuFIV -Uyooelvf5Xad7sEmAFvh8qCDZx5bP2xTvL7+tCuVSIZMSt9Cx5wuT7wchn7hzoK7 -HBE4bI1tBEqjtPvZfPCoRnZi4M72wZRsTc4gjH59C3BR+qdiE3N36A+C0sxhBbSf -djmYt27gjn2xbDe71h07BIvPX0XAp1hrTMC1MdEwpbkCAwEAAaOCAQkwggEFMAkG -A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVu -U1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFOXnUeNs -grKQb+EvG36DXjjDDmsFMGwGA1UdIwRlMGOAFOPK44Eacedv7HbR2Igcbew+4kUa -oUekRTBDMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UECgwH -UEhQLm5ldDEQMA4GA1UEAwwHcGhwLm5ldIICEAAwDgYDVR0PAQH/BAQDAgWgMBMG -A1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4ICAQBDLwuLbx75ACSU -5cF2L/D17JEnhlna62MgKNdpNLJSpaofK2Lk2BqsmnQf5JdkrXWMUN/DsmXZc9pq -25XmprfABUP9Cx18KPVqLQ43Z9o+R9xI1Ospt5mrpxGp6l2BHSs/4G69nuPFpcIJ -iabnLYdUk2Z+64lPe4EMBrZH+pj4xn3JA59BACJYNYn0nLaw45DIAyzyLJ0vVSwc -0JtjsztXQov4UqdWXxLRFfe2nEGoK8ZkTJ8ELcCYu6sNSBjw9Ech78uXN1BQOBTK -lhAgN3FKqOp3hqf0umqf35gDvmWwLB/eptUYZ96gBYT0tbPA0P+YsW+iZmamxXma -Odgg8iRcPxKl9bVPt57NLaDy/RQhOxTGXQs1Q2jp7UhzqoZDClwVSDxd6DEppAFA -OZAY+Rsrm7VoCwVQ/1KbcJHmJ/79tArvaWJk3KHLGMpdZq4KwrC3hM8/QxYtyX/6 -cfnXvShBYCdfTGgNlj3t/mNAgp1ZB3s9ClGqRBR/P0Db+ryv5DuxYM6nzEB3Od0y -kT5tHbXDQY+1HCExjOMi7Al0cmC2r3+oxDA4UjGv+npgcfeoxQhXmm/SQRiPdKlb -vT0D594sLoB23jqA9bMehpxEyI7eGjfFUmXwMeu0tJhipvpJI3ogJoM+SCFTyLkc -12cPiz/sR/ALhvhUJXTeUH8wxPjzbA== ------END CERTIFICATE----- diff --git a/ext/openssl/tests/sni_server_us_cert.pem b/ext/openssl/tests/sni_server_us_cert.pem deleted file mode 100644 index 4452e3c6cfbf..000000000000 --- a/ext/openssl/tests/sni_server_us_cert.pem +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFIjCCAwqgAwIBAgICEAQwDQYJKoZIhvcNAQELBQAwVTELMAkGA1UEBhMCR0Ix -EDAOBgNVBAgMB0VuZ2xhbmQxEDAOBgNVBAoMB1BIUC5uZXQxEDAOBgNVBAsMB29w -ZW5zc2wxEDAOBgNVBAMMB3BocC5uZXQwHhcNMTgwMTE0MTgzNjQ0WhcNMjYwNDAy -MTgzNjQ0WjBGMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UE -CgwHUEhQLm5ldDETMBEGA1UEAwwKdXMucGhwLm5ldDCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANUJAt7YjWA2PmcTJj22oGFGzKc7l6PZlQb2IfOm2GWn -ge27bEAgSvulQ+A9i40d0bM6c5js4SV45vI9LfhnkUtzjCDO+fwSgJ4sV4nEUiG/ -M3SD8yT/fdr7zKvKeOv137QHwYQDDmgqnA/Oc6cl+D4Xwve995zsjeMqsefDuFIV -Uyooelvf5Xad7sEmAFvh8qCDZx5bP2xTvL7+tCuVSIZMSt9Cx5wuT7wchn7hzoK7 -HBE4bI1tBEqjtPvZfPCoRnZi4M72wZRsTc4gjH59C3BR+qdiE3N36A+C0sxhBbSf -djmYt27gjn2xbDe71h07BIvPX0XAp1hrTMC1MdEwpbkCAwEAAaOCAQkwggEFMAkG -A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVu -U1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFOXnUeNs -grKQb+EvG36DXjjDDmsFMGwGA1UdIwRlMGOAFOPK44Eacedv7HbR2Igcbew+4kUa -oUekRTBDMQswCQYDVQQGEwJHQjEQMA4GA1UECAwHRW5nbGFuZDEQMA4GA1UECgwH -UEhQLm5ldDEQMA4GA1UEAwwHcGhwLm5ldIICEAAwDgYDVR0PAQH/BAQDAgWgMBMG -A1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4ICAQBDLwuLbx75ACSU -5cF2L/D17JEnhlna62MgKNdpNLJSpaofK2Lk2BqsmnQf5JdkrXWMUN/DsmXZc9pq -25XmprfABUP9Cx18KPVqLQ43Z9o+R9xI1Ospt5mrpxGp6l2BHSs/4G69nuPFpcIJ -iabnLYdUk2Z+64lPe4EMBrZH+pj4xn3JA59BACJYNYn0nLaw45DIAyzyLJ0vVSwc -0JtjsztXQov4UqdWXxLRFfe2nEGoK8ZkTJ8ELcCYu6sNSBjw9Ech78uXN1BQOBTK -lhAgN3FKqOp3hqf0umqf35gDvmWwLB/eptUYZ96gBYT0tbPA0P+YsW+iZmamxXma -Odgg8iRcPxKl9bVPt57NLaDy/RQhOxTGXQs1Q2jp7UhzqoZDClwVSDxd6DEppAFA -OZAY+Rsrm7VoCwVQ/1KbcJHmJ/79tArvaWJk3KHLGMpdZq4KwrC3hM8/QxYtyX/6 -cfnXvShBYCdfTGgNlj3t/mNAgp1ZB3s9ClGqRBR/P0Db+ryv5DuxYM6nzEB3Od0y -kT5tHbXDQY+1HCExjOMi7Al0cmC2r3+oxDA4UjGv+npgcfeoxQhXmm/SQRiPdKlb -vT0D594sLoB23jqA9bMehpxEyI7eGjfFUmXwMeu0tJhipvpJI3ogJoM+SCFTyLkc -12cPiz/sR/ALhvhUJXTeUH8wxPjzbA== ------END CERTIFICATE----- diff --git a/ext/openssl/tests/sni_server_us_key.pem b/ext/openssl/tests/sni_server_us_key.pem deleted file mode 100644 index 8b0d73d7d63e..000000000000 --- a/ext/openssl/tests/sni_server_us_key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEA1QkC3tiNYDY+ZxMmPbagYUbMpzuXo9mVBvYh86bYZaeB7bts -QCBK+6VD4D2LjR3RszpzmOzhJXjm8j0t+GeRS3OMIM75/BKAnixXicRSIb8zdIPz -JP992vvMq8p46/XftAfBhAMOaCqcD85zpyX4PhfC9733nOyN4yqx58O4UhVTKih6 -W9/ldp3uwSYAW+HyoINnHls/bFO8vv60K5VIhkxK30LHnC5PvByGfuHOgrscEThs -jW0ESqO0+9l88KhGdmLgzvbBlGxNziCMfn0LcFH6p2ITc3foD4LSzGEFtJ92OZi3 -buCOfbFsN7vWHTsEi89fRcCnWGtMwLUx0TCluQIDAQABAoIBAQCnsUQ1Lrl6trhA -Yu6DPbLZX+XQ7jPbonaQ2Ea5iOhmfIjmHdaEU+cyV1EqvseO+Z4MO0KraiuAV79T -h50cIEpa3kW7vbFCHz5nQ/hUVdlg/yT93rASu5rSOctOnz64Xv8Ms948kDtS+9eF -Cbo4JMdX+VRbt4mmWP8HhqAsFACPexEoWxJcIxwFcI24GTGzySjemNjQzbmcVhzM -a4k6n8DolCL1cRS54C5Aaf5g4+IFDgyydcgZXp1lnX3MnqivSNkejnPnY55NcmrH -X3ZWPlAi9GHOJE33uy8bGWnip7Tn4iTt6tJvjz/yP82TGACDg1B8XsKrqsuQLsoU -cNBVGcQBAoGBAPteCgNmuNOpo4SRA1UVRw1WgnE8YtnNA6vYyVcTLSpqabq33UaD -03L9CQsbHtj88U+E8OH24Iqj3U9x7QJfH8DVmWuBrlwez80JsKGnLdViHydjKcAz -H2Cbv+SiWeaWXkFCkN4Jf7k3q0Ew4SG2LOq5PVUy/NB4bilbJD2ExKpZAoGBANj2 -Hpwo35IQ4XfSSsGaCdn+8ajMcNUMMGZ6YkZqmVO4kogqobyrPL/2KE9ol/hlacw6 -U/6Digox5/wqruYfqyM8lqGOq2/0Xf7c4XfiOTS9Na4JN3OGzlyqPvcn2zdqhYFY -iHPu2RqpA+LhCHW9Zs8C1Bp/KAEPdRP6OabqVaphAoGACLrHVj7nBFLL3vq6RuYq -RYhPl2cld7LrAbjRpTiBRQvVCCsCgERrv36SJdSXSanfJ4fSZcaRHb97HBs0w/RR -wfypC1bBm2lmhhRkEfkgWlzCADgtZwNff5dpHqOUw7FNLK8HIO7rhJ8uT2FHMEiH -Xs94FdFjfknwaXdE1u4ZdmECgYEAgxfbkQHFbO2UPqErGGXp0/WOsS6ucpyF1jXW -kbOxZ3vb1jjkNyrEbzzeSHTrdmRYk9UekWeLjfNvt9dWjKfP8V+XqJCbF+9wqCFw -fs6LQEmfWMQq5DwtDqKznwVPGOHdPzVuZZaJSemb9oeAZBwINccAv+3bDyD23hZQ -pYFsN6ECgYEA33QYDNG/spki4D8rlxyxZ+1MdB/efnrGBhO8FsJpG5+AtmYhWgD9 -sl29+3aiRkmDznoy36z+hoeZePILEAKMcbHyXOymixOHPuaZJ95hbvq6sqd6WMAe -w5tHnxlfEuu11zatolk6WiAmTmG3sZpN5Tqloq0Ye4dvlhVKNV3Bn3E= ------END RSA PRIVATE KEY----- diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index 8f9395e46022..eea758da4713 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | | Daniel Lowrey | @@ -128,10 +126,6 @@ #define GET_VER_OPT_LONG(_name, _num) \ if (GET_VER_OPT(_name)) _num = zval_get_long(val) -/* Used for peer verification in windows */ -#define PHP_X509_NAME_ENTRY_TO_UTF8(ne, i, out) \ - ASN1_STRING_to_UTF8(&out, X509_NAME_ENTRY_get_data(X509_NAME_get_entry(ne, i))) - #ifdef HAVE_IPV6 /* Used for IPv6 Address peer verification */ #define EXPAND_IPV6_ADDRESS(_str, _bytes) \ @@ -415,7 +409,7 @@ static bool php_openssl_x509_fingerprint_match(X509 *peer, zval *val) static bool php_openssl_matches_wildcard_name(const char *subjectname, const char *certname) /* {{{ */ { - char *wildcard = NULL; + const char *wildcard = NULL; ptrdiff_t prefix_len; size_t suffix_len, subject_len; @@ -474,7 +468,10 @@ static bool php_openssl_matches_san_list(X509 *peer, const char *subject_name) / GENERAL_NAME *san = sk_GENERAL_NAME_value(alt_names, i); if (san->type == GEN_DNS) { - ASN1_STRING_to_UTF8(&cert_name, san->d.dNSName); + if (ASN1_STRING_to_UTF8(&cert_name, san->d.dNSName) < 0) { + /* TODO: warn ? */ + continue; + } if ((size_t)ASN1_STRING_length(san->d.dNSName) != strlen((const char*)cert_name)) { OPENSSL_free(cert_name); /* prevent null-byte poisoning*/ @@ -857,8 +854,9 @@ static long php_openssl_load_stream_cafile(X509_STORE *cert_store, const char *c buffer_active = 0; if (cert && X509_STORE_add_cert(cert_store, cert)) { ++certs_added; - X509_free(cert); } + /* TODO: notify user when adding certificate failed? */ + X509_free(cert); goto cert_start; } @@ -1303,6 +1301,10 @@ static SSL_CTX *php_openssl_create_sni_server_ctx(char *cert_path, char *key_pat /* The hello method is not inherited by SSL structs when assigning a new context * inside the SNI callback, so the just use SSLv23 */ SSL_CTX *ctx = SSL_CTX_new(SSLv23_server_method()); + if (!ctx) { + php_error_docref(NULL, E_WARNING, "Failed to create the SSL context"); + return NULL; + } if (SSL_CTX_use_certificate_chain_file(ctx, cert_path) != 1) { php_error_docref(NULL, E_WARNING, @@ -1508,7 +1510,7 @@ static unsigned char *php_openssl_alpn_protos_parse(unsigned short *outlen, cons return NULL; } - out = emalloc(strlen(in) + 1); + out = emalloc(len + 1); for (i = 0; i <= len; ++i) { if (i == len || in[i] == ',') { @@ -1687,7 +1689,8 @@ static zend_result php_openssl_setup_crypto(php_stream *stream, sslsock->ssl_handle = SSL_new(sslsock->ctx); - if (sslsock->ssl_handle == NULL) { + if (sslsock->ssl_handle == NULL + || !SSL_set_ex_data(sslsock->ssl_handle, php_openssl_get_ssl_stream_data_index(), stream)) { php_error_docref(NULL, E_WARNING, "SSL handle creation failure"); SSL_CTX_free(sslsock->ctx); sslsock->ctx = NULL; @@ -1698,8 +1701,6 @@ static zend_result php_openssl_setup_crypto(php_stream *stream, } #endif return FAILURE; - } else { - SSL_set_ex_data(sslsock->ssl_handle, php_openssl_get_ssl_stream_data_index(), stream); } if (!SSL_set_fd(sslsock->ssl_handle, sslsock->s.socket)) { diff --git a/ext/pcntl/config.m4 b/ext/pcntl/config.m4 index cfe6e80ca110..553419114fd2 100644 --- a/ext/pcntl/config.m4 +++ b/ext/pcntl/config.m4 @@ -68,9 +68,6 @@ int main(void) { [AC_DEFINE([HAVE_SCHED_GETCPU], [1], [Define to 1 if the 'sched_getcpu' function is properly supported.])]) - AC_CHECK_TYPE([siginfo_t], [PCNTL_CFLAGS="-DHAVE_STRUCT_SIGINFO_T"],, - [#include ]) - PHP_NEW_EXTENSION([pcntl], [pcntl.c php_signal.c], [$ext_shared], diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index ab7b14992080..e9453b21329e 100644 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jason Greene | +----------------------------------------------------------------------+ @@ -185,12 +183,8 @@ ZEND_GET_MODULE(pcntl) static void (*orig_interrupt_function)(zend_execute_data *execute_data); -#ifdef HAVE_STRUCT_SIGINFO_T static void pcntl_signal_handler(int, siginfo_t*, void*); static void pcntl_siginfo_to_zval(int, siginfo_t*, zval*); -#else -static void pcntl_signal_handler(int); -#endif static void pcntl_signal_dispatch(void); static void pcntl_signal_dispatch_tick_function(int dummy_int, void *dummy_pointer); static void pcntl_interrupt_function(zend_execute_data *execute_data); @@ -240,7 +234,7 @@ PHP_RSHUTDOWN_FUNCTION(pcntl) /* Reset all signals to their default disposition */ ZEND_HASH_FOREACH_NUM_KEY_VAL(&PCNTL_G(php_signal_table), signo, handle) { if (Z_TYPE_P(handle) != IS_LONG || Z_LVAL_P(handle) != (zend_long)SIG_DFL) { - php_signal(signo, (Sigfunc *)(zend_long)SIG_DFL, 0); + php_signal(signo, (Sigfunc *)(zend_long)SIG_DFL, false); } } ZEND_HASH_FOREACH_END(); @@ -835,7 +829,7 @@ PHP_FUNCTION(pcntl_signal) zend_argument_value_error(2, "must be either SIG_DFL or SIG_IGN when an integer value is given"); RETURN_THROWS(); } - if (php_signal(signo, (Sigfunc *) Z_LVAL_P(handle), (int) restart_syscalls) == (void *)SIG_ERR) { + if (php_signal(signo, (Sigfunc *) Z_LVAL_P(handle), restart_syscalls) == (void *)SIG_ERR) { PCNTL_G(last_error) = errno; php_error_docref(NULL, E_WARNING, "Error assigning signal"); RETURN_FALSE; @@ -1007,8 +1001,7 @@ PHP_FUNCTION(pcntl_sigprocmask) /* }}} */ #endif -#ifdef HAVE_STRUCT_SIGINFO_T -# ifdef HAVE_SIGWAITINFO +#ifdef HAVE_SIGWAITINFO /* {{{ Synchronously wait for queued signals */ PHP_FUNCTION(pcntl_sigwaitinfo) @@ -1050,8 +1043,9 @@ PHP_FUNCTION(pcntl_sigwaitinfo) RETURN_LONG(signal_no); } /* }}} */ -# endif -# ifdef HAVE_SIGTIMEDWAIT +#endif + +#ifdef HAVE_SIGTIMEDWAIT /* {{{ Wait for queued signals */ PHP_FUNCTION(pcntl_sigtimedwait) { @@ -1113,7 +1107,7 @@ PHP_FUNCTION(pcntl_sigtimedwait) RETURN_LONG(signal_no); } /* }}} */ -# endif +#endif static void pcntl_siginfo_to_zval(int signo, siginfo_t *siginfo, zval *user_siginfo) /* {{{ */ { @@ -1183,7 +1177,6 @@ static void pcntl_siginfo_to_zval(int signo, siginfo_t *siginfo, zval *user_sigi } } /* }}} */ -#endif #ifdef HAVE_GETPRIORITY /* {{{ Get the priority of any process */ @@ -1325,11 +1318,7 @@ PHP_FUNCTION(pcntl_strerror) /* }}} */ /* Our custom signal handler that calls the appropriate php_function */ -#ifdef HAVE_STRUCT_SIGINFO_T static void pcntl_signal_handler(int signo, siginfo_t *siginfo, void *context) -#else -static void pcntl_signal_handler(int signo) -#endif { struct php_pcntl_pending_signal *psig = PCNTL_G(spares); if (!psig) { @@ -1341,9 +1330,7 @@ static void pcntl_signal_handler(int signo) psig->signo = signo; psig->next = NULL; -#ifdef HAVE_STRUCT_SIGINFO_T psig->siginfo = *siginfo; -#endif /* the head check is important, as the tick handler cannot atomically clear both * the head and tail */ @@ -1395,19 +1382,14 @@ void pcntl_signal_dispatch(void) if ((handle = zend_hash_index_find(&PCNTL_G(php_signal_table), queue->signo)) != NULL) { if (Z_TYPE_P(handle) != IS_LONG) { ZVAL_LONG(¶ms[0], queue->signo); -#ifdef HAVE_STRUCT_SIGINFO_T array_init(¶ms[1]); pcntl_siginfo_to_zval(queue->signo, &queue->siginfo, ¶ms[1]); -#else - ZVAL_NULL(¶ms[1]); -#endif /* Call php signal handler - Note that we do not report errors, and we ignore the return value */ call_user_function(NULL, NULL, handle, &retval, 2, params); zval_ptr_dtor(&retval); -#ifdef HAVE_STRUCT_SIGINFO_T zval_ptr_dtor(¶ms[1]); -#endif + if (EG(exception)) { break; } diff --git a/ext/pcntl/pcntl.stub.php b/ext/pcntl/pcntl.stub.php index 2da540fa71ec..4a4b8fe86931 100644 --- a/ext/pcntl/pcntl.stub.php +++ b/ext/pcntl/pcntl.stub.php @@ -1035,14 +1035,12 @@ function pcntl_signal_dispatch(): bool {} function pcntl_sigprocmask(int $mode, array $signals, &$old_signals = null): bool {} #endif -#ifdef HAVE_STRUCT_SIGINFO_T #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) /** @param array $info */ function pcntl_sigwaitinfo(array $signals, &$info = []): int|false {} /** @param array $info */ function pcntl_sigtimedwait(array $signals, &$info = [], int $seconds = 0, int $nanoseconds = 0): int|false {} -#endif #endif function pcntl_wifexited(int $status): bool {} diff --git a/ext/pcntl/pcntl_arginfo.h b/ext/pcntl/pcntl_arginfo.h index d9624a226057..2da7c8ad5db8 100644 --- a/ext/pcntl/pcntl_arginfo.h +++ b/ext/pcntl/pcntl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit pcntl.stub.php instead. - * Stub hash: dfa1e84a14e1926a50a42919e24ada58348fe4d9 + * Stub hash: 04e7b30c6fb23cf6ce6bc26fe094fd5b4dbfe826 * Has decl header: yes */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_fork, 0, 0, IS_LONG, 0) @@ -49,7 +49,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_sigprocmask, 0, 2, _IS_BOO ZEND_END_ARG_INFO() #endif -#if defined(HAVE_STRUCT_SIGINFO_T) && (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) +#if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_pcntl_sigwaitinfo, 0, 1, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, signals, IS_ARRAY, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, info, "[]") @@ -185,7 +185,7 @@ ZEND_FUNCTION(pcntl_signal_dispatch); #if defined(HAVE_SIGPROCMASK) ZEND_FUNCTION(pcntl_sigprocmask); #endif -#if defined(HAVE_STRUCT_SIGINFO_T) && (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) +#if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) ZEND_FUNCTION(pcntl_sigwaitinfo); ZEND_FUNCTION(pcntl_sigtimedwait); #endif @@ -246,7 +246,7 @@ static const zend_function_entry ext_functions[] = { #if defined(HAVE_SIGPROCMASK) ZEND_FE(pcntl_sigprocmask, arginfo_pcntl_sigprocmask) #endif -#if defined(HAVE_STRUCT_SIGINFO_T) && (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) +#if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) ZEND_FE(pcntl_sigwaitinfo, arginfo_pcntl_sigwaitinfo) ZEND_FE(pcntl_sigtimedwait, arginfo_pcntl_sigtimedwait) #endif diff --git a/ext/pcntl/pcntl_decl.h b/ext/pcntl/pcntl_decl.h index 1059485bc934..7f8e5172cedb 100644 --- a/ext/pcntl/pcntl_decl.h +++ b/ext/pcntl/pcntl_decl.h @@ -1,8 +1,8 @@ /* This is a generated file, edit pcntl.stub.php instead. - * Stub hash: dfa1e84a14e1926a50a42919e24ada58348fe4d9 */ + * Stub hash: 04e7b30c6fb23cf6ce6bc26fe094fd5b4dbfe826 */ -#ifndef ZEND_PCNTL_DECL_dfa1e84a14e1926a50a42919e24ada58348fe4d9_H -#define ZEND_PCNTL_DECL_dfa1e84a14e1926a50a42919e24ada58348fe4d9_H +#ifndef ZEND_PCNTL_DECL_04e7b30c6fb23cf6ce6bc26fe094fd5b4dbfe826_H +#define ZEND_PCNTL_DECL_04e7b30c6fb23cf6ce6bc26fe094fd5b4dbfe826_H typedef enum zend_enum_Pcntl_QosClass { ZEND_ENUM_Pcntl_QosClass_UserInteractive = 1, @@ -12,4 +12,4 @@ typedef enum zend_enum_Pcntl_QosClass { ZEND_ENUM_Pcntl_QosClass_Background = 5, } zend_enum_Pcntl_QosClass; -#endif /* ZEND_PCNTL_DECL_dfa1e84a14e1926a50a42919e24ada58348fe4d9_H */ +#endif /* ZEND_PCNTL_DECL_04e7b30c6fb23cf6ce6bc26fe094fd5b4dbfe826_H */ diff --git a/ext/pcntl/php_pcntl.h b/ext/pcntl/php_pcntl.h index e02f93246e88..17b86bca47d6 100644 --- a/ext/pcntl/php_pcntl.h +++ b/ext/pcntl/php_pcntl.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jason Greene | +----------------------------------------------------------------------+ @@ -38,9 +36,7 @@ PHP_MINFO_FUNCTION(pcntl); struct php_pcntl_pending_signal { struct php_pcntl_pending_signal *next; zend_long signo; -#ifdef HAVE_STRUCT_SIGINFO_T siginfo_t siginfo; -#endif }; ZEND_BEGIN_MODULE_GLOBALS(pcntl) diff --git a/ext/pcntl/php_signal.c b/ext/pcntl/php_signal.c index 14c169310e60..b0357d86f02b 100644 --- a/ext/pcntl/php_signal.c +++ b/ext/pcntl/php_signal.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jason Greene | +----------------------------------------------------------------------+ @@ -21,24 +19,18 @@ /* php_signal using sigaction is derived from Advanced Programming * in the Unix Environment by W. Richard Stevens p 298. */ -Sigfunc *php_signal4(int signo, Sigfunc *func, int restart, int mask_all) +Sigfunc *php_signal4(int signo, Sigfunc *func, bool restart, bool mask_all) { struct sigaction act,oact; -#ifdef HAVE_STRUCT_SIGINFO_T act.sa_sigaction = func; -#else - act.sa_handler = func; -#endif if (mask_all) { sigfillset(&act.sa_mask); } else { sigemptyset(&act.sa_mask); } act.sa_flags = SA_ONSTACK; -#ifdef HAVE_STRUCT_SIGINFO_T act.sa_flags |= SA_SIGINFO; -#endif if (!restart) { #ifdef SA_INTERRUPT act.sa_flags |= SA_INTERRUPT; /* SunOS */ @@ -50,14 +42,10 @@ Sigfunc *php_signal4(int signo, Sigfunc *func, int restart, int mask_all) } zend_sigaction(signo, &act, &oact); -#ifdef HAVE_STRUCT_SIGINFO_T return oact.sa_sigaction; -#else - return oact.sa_handler; -#endif } -Sigfunc *php_signal(int signo, Sigfunc *func, int restart) +Sigfunc *php_signal(int signo, Sigfunc *func, bool restart) { - return php_signal4(signo, func, restart, 0); + return php_signal4(signo, func, restart, false); } diff --git a/ext/pcntl/php_signal.h b/ext/pcntl/php_signal.h index 256898e70acb..7b103793e544 100644 --- a/ext/pcntl/php_signal.h +++ b/ext/pcntl/php_signal.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jason Greene | +----------------------------------------------------------------------+ @@ -18,12 +16,9 @@ #ifndef PHP_SIGNAL_H #define PHP_SIGNAL_H -#ifdef HAVE_STRUCT_SIGINFO_T typedef void Sigfunc(int, siginfo_t*, void*); -#else -typedef void Sigfunc(int); -#endif -Sigfunc *php_signal(int signo, Sigfunc *func, int restart); -Sigfunc *php_signal4(int signo, Sigfunc *func, int restart, int mask_all); + +Sigfunc *php_signal(int signo, Sigfunc *func, bool restart); +Sigfunc *php_signal4(int signo, Sigfunc *func, bool restart, bool mask_all); #endif diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 32ab6b0e5090..161cdf852c1e 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andrei Zmievski | +----------------------------------------------------------------------+ @@ -2495,7 +2493,7 @@ PHP_FUNCTION(preg_replace_callback_array) case IS_NULL: RETVAL_NULL(); goto error; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if (EG(exception)) { diff --git a/ext/pcre/php_pcre.h b/ext/pcre/php_pcre.h index e180d68a3d48..ebaa686a31c3 100644 --- a/ext/pcre/php_pcre.h +++ b/ext/pcre/php_pcre.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andrei Zmievski | +----------------------------------------------------------------------+ diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c index 2966cd0be569..9a5f814304fc 100644 --- a/ext/pdo/pdo.c +++ b/ext/pdo/pdo.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Marcus Boerger | diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 34f19e364faa..21002ce3a93d 100644 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Marcus Boerger | diff --git a/ext/pdo/pdo_sql_parser.h b/ext/pdo/pdo_sql_parser.h index 0701d984ae64..9baca65e5f90 100644 --- a/ext/pdo/pdo_sql_parser.h +++ b/ext/pdo/pdo_sql_parser.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | +----------------------------------------------------------------------+ diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re index 1897f9f238bf..d154a85287f2 100644 --- a/ext/pdo/pdo_sql_parser.re +++ b/ext/pdo/pdo_sql_parser.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | +----------------------------------------------------------------------+ diff --git a/ext/pdo/pdo_sqlstate.c b/ext/pdo/pdo_sqlstate.c index a44b95a9181d..089c1bdd027f 100644 --- a/ext/pdo/pdo_sqlstate.c +++ b/ext/pdo/pdo_sqlstate.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 1e2c2d14f37d..a8564cd8d39c 100644 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Marcus Boerger | @@ -148,7 +146,7 @@ bool pdo_stmt_describe_columns(pdo_stmt_t *stmt) /* {{{ */ stmt->columns[col].name = zend_string_toupper(orig_name); zend_string_release(orig_name); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -823,7 +821,7 @@ static bool do_fetch(pdo_stmt_t *stmt, zval *return_value, enum pdo_fetch_type h * However, if we fetch a group key we will have over allocated. */ fetch_function_params = safe_emalloc(sizeof(zval), stmt->column_count, 0); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } if (group_key) { @@ -918,7 +916,7 @@ static bool do_fetch(pdo_stmt_t *stmt, zval *return_value, enum pdo_fetch_type h case PDO_FETCH_FUNC: ZVAL_COPY_VALUE(&fetch_function_params[fetch_function_param_num++], &val); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/pdo/php_pdo.h b/ext/pdo/php_pdo.h index 59789a04c73f..39443bb35c89 100644 --- a/ext/pdo/php_pdo.h +++ b/ext/pdo/php_pdo.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo/php_pdo_driver.h b/ext/pdo/php_pdo_driver.h index 9c5986ff8bce..9dc18f75bfe1 100644 --- a/ext/pdo/php_pdo_driver.h +++ b/ext/pdo/php_pdo_driver.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo/php_pdo_error.h b/ext/pdo/php_pdo_error.h index 50c751a0f490..79d1c482d609 100644 --- a/ext/pdo/php_pdo_error.h +++ b/ext/pdo/php_pdo_error.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo/php_pdo_int.h b/ext/pdo/php_pdo_int.h index e8befe9f819a..dde79af73aa0 100644 --- a/ext/pdo/php_pdo_int.h +++ b/ext/pdo/php_pdo_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Marcus Boerger | diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c index 68e251c2b6a9..42ba72b40ede 100644 --- a/ext/pdo_dblib/dblib_driver.c +++ b/ext/pdo_dblib/dblib_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Frank M. Kromann | diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c index e6e91b60fa27..0b97b1dfb076 100644 --- a/ext/pdo_dblib/dblib_stmt.c +++ b/ext/pdo_dblib/dblib_stmt.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Frank M. Kromann | diff --git a/ext/pdo_dblib/pdo_dblib.c b/ext/pdo_dblib/pdo_dblib.c index 9c59ddbc6184..47cf1497ef7d 100644 --- a/ext/pdo_dblib/pdo_dblib.c +++ b/ext/pdo_dblib/pdo_dblib.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Frank M. Kromann | diff --git a/ext/pdo_dblib/php_pdo_dblib.h b/ext/pdo_dblib/php_pdo_dblib.h index 7cd13d6eb4bb..60e3d8c082a6 100644 --- a/ext/pdo_dblib/php_pdo_dblib.h +++ b/ext/pdo_dblib/php_pdo_dblib.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Frank M. Kromann | diff --git a/ext/pdo_dblib/php_pdo_dblib_int.h b/ext/pdo_dblib/php_pdo_dblib_int.h index 2067d944c718..21ffa9c86243 100644 --- a/ext/pdo_dblib/php_pdo_dblib_int.h +++ b/ext/pdo_dblib/php_pdo_dblib_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | Frank M. Kromann | diff --git a/ext/pdo_firebird/firebird_driver.c b/ext/pdo_firebird/firebird_driver.c index c77bf6d7c581..8193132beaf4 100644 --- a/ext/pdo_firebird/firebird_driver.c +++ b/ext/pdo_firebird/firebird_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ard Biesheuvel | +----------------------------------------------------------------------+ diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c index d506aa69eed3..bdca5af974cf 100644 --- a/ext/pdo_firebird/firebird_statement.c +++ b/ext/pdo_firebird/firebird_statement.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ard Biesheuvel | +----------------------------------------------------------------------+ @@ -492,7 +490,7 @@ static int pdo_firebird_stmt_get_col( break; case SQL_DOUBLE: break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if ((var->sqltype & ~1) == SQL_DOUBLE) { diff --git a/ext/pdo_firebird/pdo_firebird.c b/ext/pdo_firebird/pdo_firebird.c index ece55926b0f4..74ba7f8994ca 100644 --- a/ext/pdo_firebird/pdo_firebird.c +++ b/ext/pdo_firebird/pdo_firebird.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ard Biesheuvel | +----------------------------------------------------------------------+ diff --git a/ext/pdo_firebird/pdo_firebird_utils.cpp b/ext/pdo_firebird/pdo_firebird_utils.cpp index 715963eec17c..cd54da8cd9c6 100644 --- a/ext/pdo_firebird/pdo_firebird_utils.cpp +++ b/ext/pdo_firebird/pdo_firebird_utils.cpp @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Simonov Denis | +----------------------------------------------------------------------+ diff --git a/ext/pdo_firebird/pdo_firebird_utils.h b/ext/pdo_firebird/pdo_firebird_utils.h index 19b0d0ab4ba4..3a3ee4ab7c41 100644 --- a/ext/pdo_firebird/pdo_firebird_utils.h +++ b/ext/pdo_firebird/pdo_firebird_utils.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Simonov Denis | +----------------------------------------------------------------------+ diff --git a/ext/pdo_firebird/php_pdo_firebird.h b/ext/pdo_firebird/php_pdo_firebird.h index 19ce061c959f..6d897dfd2933 100644 --- a/ext/pdo_firebird/php_pdo_firebird.h +++ b/ext/pdo_firebird/php_pdo_firebird.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ard Biesheuvel | +----------------------------------------------------------------------+ diff --git a/ext/pdo_firebird/php_pdo_firebird_int.h b/ext/pdo_firebird/php_pdo_firebird_int.h index a62c152ffab3..7e83b2687a72 100644 --- a/ext/pdo_firebird/php_pdo_firebird_int.h +++ b/ext/pdo_firebird/php_pdo_firebird_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ard Biesheuvel | +----------------------------------------------------------------------+ diff --git a/ext/pdo_firebird/tests/autocommit.phpt b/ext/pdo_firebird/tests/autocommit.phpt index 3f4f7e8f370f..daa91898a8e9 100644 --- a/ext/pdo_firebird/tests/autocommit.phpt +++ b/ext/pdo_firebird/tests/autocommit.phpt @@ -71,9 +71,9 @@ array(1) { ========== not in auto commit mode ========== auto commit mode OFF insert, expect error -SQLSTATE[08003]: Connection does not exist: %s +%r(SQLSTATE\[08003\]: Connection does not exist|SQLSTATE\[HY000\]: General error)%r: %s select, expect error -SQLSTATE[08003]: Connection does not exist: %s +%r(SQLSTATE\[08003\]: Connection does not exist|SQLSTATE\[HY000\]: General error)%r: %s done! diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index 808f4acbfa37..54a8803971ca 100644 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | | Wez Furlong | diff --git a/ext/pdo_mysql/mysql_sql_parser.re b/ext/pdo_mysql/mysql_sql_parser.re index 01afbefaaa8d..9db54063889d 100644 --- a/ext/pdo_mysql/mysql_sql_parser.re +++ b/ext/pdo_mysql/mysql_sql_parser.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Matteo Beccati | +----------------------------------------------------------------------+ diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c index 8b2519ce90aa..f6b182fcb9ad 100644 --- a/ext/pdo_mysql/mysql_statement.c +++ b/ext/pdo_mysql/mysql_statement.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | | Wez Furlong | diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c index b45dafbf5d98..fe5ebc7e6ed8 100644 --- a/ext/pdo_mysql/pdo_mysql.c +++ b/ext/pdo_mysql/pdo_mysql.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | | Johannes Schlueter | diff --git a/ext/pdo_mysql/php_pdo_mysql.h b/ext/pdo_mysql/php_pdo_mysql.h index 650c51b497a2..55b2cded0f28 100644 --- a/ext/pdo_mysql/php_pdo_mysql.h +++ b/ext/pdo_mysql/php_pdo_mysql.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | +----------------------------------------------------------------------+ diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h index ec49d6c311c3..baba729aa53d 100644 --- a/ext/pdo_mysql/php_pdo_mysql_int.h +++ b/ext/pdo_mysql/php_pdo_mysql_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Schlossnagle | | Wez Furlong | diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index 7401023c573c..4c627419d18e 100644 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c index 171fb7b7b1e9..dfc42147c30f 100644 --- a/ext/pdo_odbc/odbc_stmt.c +++ b/ext/pdo_odbc/odbc_stmt.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ @@ -728,7 +726,7 @@ static int odbc_stmt_get_col(pdo_stmt_t *stmt, int colno, zval *result, enum pdo str = zend_string_realloc(str, used + to_fetch_byte, 0); memcpy(ZSTR_VAL(str) + used, buf2, to_fetch_byte); used = used + to_fetch_len; - } else if (rc==SQL_SUCCESS) { + } else if (rc == SQL_SUCCESS && C->fetched_len != 0) { str = zend_string_realloc(str, used + C->fetched_len, 0); memcpy(ZSTR_VAL(str) + used, buf2, C->fetched_len); used = used + C->fetched_len; diff --git a/ext/pdo_odbc/pdo_odbc.c b/ext/pdo_odbc/pdo_odbc.c index 1181e314c4d0..47a19062947c 100644 --- a/ext/pdo_odbc/pdo_odbc.c +++ b/ext/pdo_odbc/pdo_odbc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_odbc/php_pdo_odbc.h b/ext/pdo_odbc/php_pdo_odbc.h index 3f0417029784..6c72b6f2ebe9 100644 --- a/ext/pdo_odbc/php_pdo_odbc.h +++ b/ext/pdo_odbc/php_pdo_odbc.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_odbc/php_pdo_odbc_int.h b/ext/pdo_odbc/php_pdo_odbc_int.h index 473d70ff7076..18b45af21a02 100644 --- a/ext/pdo_odbc/php_pdo_odbc_int.h +++ b/ext/pdo_odbc/php_pdo_odbc_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_pgsql/config.w32 b/ext/pdo_pgsql/config.w32 index 5fc25f215900..87ad0a661b53 100644 --- a/ext/pdo_pgsql/config.w32 +++ b/ext/pdo_pgsql/config.w32 @@ -7,6 +7,7 @@ if (PHP_PDO_PGSQL != "no") { CHECK_HEADER("libpq-fe.h", "CFLAGS_PDO_PGSQL", PHP_PDO_PGSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\pgsql;" + PHP_PHP_BUILD + "\\include\\libpq;")) { EXTENSION("pdo_pgsql", "pdo_pgsql.c pgsql_driver.c pgsql_statement.c pgsql_sql_parser.c"); + AC_DEFINE('HAVE_PG_RESULT_MEMORY_SIZE', 1, "Define to 1 if libpq has the 'PQresultMemorySize' function (PostgreSQL 12 or later)."); AC_DEFINE('HAVE_PDO_PGSQL', 1, "Define to 1 if the PHP extension 'pdo_pgsql' is available."); ADD_EXTENSION_DEP('pdo_pgsql', 'pdo'); diff --git a/ext/pdo_pgsql/pdo_pgsql.c b/ext/pdo_pgsql/pdo_pgsql.c index e6849aed1195..d552aa5e61dd 100644 --- a/ext/pdo_pgsql/pdo_pgsql.c +++ b/ext/pdo_pgsql/pdo_pgsql.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Edin Kadribasic | +----------------------------------------------------------------------+ diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index be429075c51a..3cfb7a3fa01a 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Edin Kadribasic | | Ilia Alshanestsky | diff --git a/ext/pdo_pgsql/pgsql_sql_parser.re b/ext/pdo_pgsql/pgsql_sql_parser.re index caea615c4073..011fce56a1a0 100644 --- a/ext/pdo_pgsql/pgsql_sql_parser.re +++ b/ext/pdo_pgsql/pgsql_sql_parser.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Matteo Beccati | +----------------------------------------------------------------------+ diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 426a878d8eff..1620544556b6 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Edin Kadribasic | | Ilia Alshanestsky | @@ -573,6 +571,12 @@ static int pgsql_stmt_fetch(pdo_stmt_t *stmt, } S->result = PQgetResult(S->H->server); + if (!S->result) { + S->is_running_unbuffered = false; + stmt->row_count = 0; + S->current_row = 0; + return 0; + } status = PQresultStatus(S->result); if (status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK && status != PGRES_SINGLE_TUPLE) { diff --git a/ext/pdo_pgsql/php_pdo_pgsql.h b/ext/pdo_pgsql/php_pdo_pgsql.h index fa28214f71a7..345535108cb1 100644 --- a/ext/pdo_pgsql/php_pdo_pgsql.h +++ b/ext/pdo_pgsql/php_pdo_pgsql.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Edin Kadribasic | +----------------------------------------------------------------------+ diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h index 881b4e704650..47c9223540ad 100644 --- a/ext/pdo_pgsql/php_pdo_pgsql_int.h +++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Edin Kadribasic | | Ilia Alshanestsky | diff --git a/ext/pdo_pgsql/tests/gh21683.phpt b/ext/pdo_pgsql/tests/gh21683.phpt new file mode 100644 index 000000000000..bd941511767a --- /dev/null +++ b/ext/pdo_pgsql/tests/gh21683.phpt @@ -0,0 +1,48 @@ +--TEST-- +PDO PgSQL single-row mode (ATTR_PREFETCH=0) on empty result set +--EXTENSIONS-- +pdo +pdo_pgsql +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$pdo->setAttribute(PDO::ATTR_PREFETCH, 0); + +$pdo->exec("CREATE TEMP TABLE empty_t (id int, val text)"); + +echo "=== query / fetch ===\n"; +$stmt = $pdo->query("SELECT * FROM empty_t"); +var_dump($stmt->fetch()); + +echo "=== prepare / fetchAll ===\n"; +$stmt = $pdo->prepare("SELECT * FROM empty_t"); +$stmt->execute(); +var_dump($stmt->fetchAll()); + +echo "=== connection still works ===\n"; +$stmt = $pdo->query("SELECT 1 AS alive"); +var_dump($stmt->fetch(PDO::FETCH_ASSOC)); + +echo "Done\n"; +?> +--EXPECT-- +=== query / fetch === +bool(false) +=== prepare / fetchAll === +array(0) { +} +=== connection still works === +array(1) { + ["alive"]=> + string(1) "1" +} +Done diff --git a/ext/pdo_sqlite/pdo_sqlite.c b/ext/pdo_sqlite/pdo_sqlite.c index 667948fea9f1..0e7e02df46a4 100644 --- a/ext/pdo_sqlite/pdo_sqlite.c +++ b/ext/pdo_sqlite/pdo_sqlite.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_sqlite/php_pdo_sqlite.h b/ext/pdo_sqlite/php_pdo_sqlite.h index c29a81ebb240..a567e8c87ee6 100644 --- a/ext/pdo_sqlite/php_pdo_sqlite.h +++ b/ext/pdo_sqlite/php_pdo_sqlite.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_sqlite/php_pdo_sqlite_int.h b/ext/pdo_sqlite/php_pdo_sqlite_int.h index 0cb09cfaa4fb..122f714040de 100644 --- a/ext/pdo_sqlite/php_pdo_sqlite_int.h +++ b/ext/pdo_sqlite/php_pdo_sqlite_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c index 5a30d27193ec..39efa02dd583 100644 --- a/ext/pdo_sqlite/sqlite_driver.c +++ b/ext/pdo_sqlite/sqlite_driver.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_sqlite/sqlite_sql_parser.re b/ext/pdo_sqlite/sqlite_sql_parser.re index 5678e6025577..c836f6b2b499 100644 --- a/ext/pdo_sqlite/sqlite_sql_parser.re +++ b/ext/pdo_sqlite/sqlite_sql_parser.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Matteo Beccati | +----------------------------------------------------------------------+ diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c index ffb8c1ad4b3c..ca82b1b09322 100644 --- a/ext/pdo_sqlite/sqlite_statement.c +++ b/ext/pdo_sqlite/sqlite_statement.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/pdo_sqlite/tests/bug38334.phpt b/ext/pdo_sqlite/tests/bug38334.phpt index b4e9a378d717..eefd997cc71a 100644 --- a/ext/pdo_sqlite/tests/bug38334.phpt +++ b/ext/pdo_sqlite/tests/bug38334.phpt @@ -7,11 +7,11 @@ pdo_sqlite $db = new PDO('sqlite::memory:'); $db->exec('CREATE TABLE test_38334 (i INTEGER , f DOUBLE, s VARCHAR(255))'); -$db->exec('INSERT INTO test_38334 VALUES (42, 46.7, "test")'); +$db->exec("INSERT INTO test_38334 VALUES (42, 46.7, 'test')"); var_dump($db->query('SELECT * FROM test_38334')->fetch(PDO::FETCH_ASSOC)); // Check handling of integers larger than 32-bit. -$db->exec('INSERT INTO test_38334 VALUES (10000000000, 0.0, "")'); +$db->exec("INSERT INTO test_38334 VALUES (10000000000, 0.0, '')"); $i = $db->query('SELECT i FROM test_38334 WHERE f = 0.0')->fetchColumn(0); if (PHP_INT_SIZE >= 8) { var_dump($i === 10000000000); @@ -20,8 +20,8 @@ if (PHP_INT_SIZE >= 8) { } // Check storing of strings into integer/float columns. -$db->exec('INSERT INTO test_38334 VALUES ("test", "test", "x")'); -var_dump($db->query('SELECT * FROM test_38334 WHERE s = "x"')->fetch(PDO::FETCH_ASSOC)); +$db->exec("INSERT INTO test_38334 VALUES ('test', 'test', 'x')"); +var_dump($db->query("SELECT * FROM test_38334 WHERE s = 'x'")->fetch(PDO::FETCH_ASSOC)); ?> --EXPECT-- diff --git a/ext/pdo_sqlite/tests/bug_42589.phpt b/ext/pdo_sqlite/tests/bug_42589.phpt index 46ded8d027a6..39b87b106521 100644 --- a/ext/pdo_sqlite/tests/bug_42589.phpt +++ b/ext/pdo_sqlite/tests/bug_42589.phpt @@ -15,7 +15,7 @@ if(!in_array('ENABLE_COLUMN_METADATA', $options, true)) $db = new PDO("sqlite::memory:"); $db->exec('CREATE TABLE test_42589 (field1 VARCHAR(10))'); -$db->exec('INSERT INTO test_42589 VALUES("test")'); +$db->exec("INSERT INTO test_42589 VALUES('test')"); $result = $db->query('SELECT * FROM test_42589 t1 LEFT JOIN test_42589 t2 ON t1.field1 = t2.field1'); $meta1 = $result->getColumnMeta(0); diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt index 1a620d6b9d5f..cba2c49556f7 100644 --- a/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt +++ b/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt @@ -9,7 +9,7 @@ $db = new PDO('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_createaggregate (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createaggregate VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_createaggregate VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); $db->sqliteCreateAggregate('testing', function(&$a, $b) { $a .= $b; return $a; }, function(&$v) { return $v; }); diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_createcollation.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_createcollation.phpt index 14a2c2e0d023..eb5ea6c97b7d 100644 --- a/ext/pdo_sqlite/tests/pdo_sqlite_createcollation.phpt +++ b/ext/pdo_sqlite/tests/pdo_sqlite_createcollation.phpt @@ -10,7 +10,7 @@ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->query('CREATE TABLE test_pdo_sqlite_createcollation (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createcollation VALUES (NULL, "1"), (NULL, "2"), (NULL, "10")'); +$db->query("INSERT INTO test_pdo_sqlite_createcollation VALUES (NULL, '1'), (NULL, '2'), (NULL, '10')"); $db->sqliteCreateCollation('MYCOLLATE', function($a, $b) { return strnatcmp($a, $b); }); diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt index b2cb073cb58f..49daabf5a7a9 100644 --- a/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt +++ b/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt @@ -9,7 +9,7 @@ $db = new PDO('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_createfunction (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createfunction VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_createfunction VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); $db->sqliteCreateFunction('testing', function($v) { return strtolower($v); }); diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_createfunction_with_flags.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_createfunction_with_flags.phpt index 6f507789dbf2..9f0c777e83d8 100644 --- a/ext/pdo_sqlite/tests/pdo_sqlite_createfunction_with_flags.phpt +++ b/ext/pdo_sqlite/tests/pdo_sqlite_createfunction_with_flags.phpt @@ -13,7 +13,7 @@ $db = new PDO('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_createfunction_with_flags (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createfunction_with_flags VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_createfunction_with_flags VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); $db->sqliteCreateFunction('testing', function($v) { return strtolower($v); }, 1, Pdo\Sqlite::DETERMINISTIC); diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_dqs.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_dqs.phpt new file mode 100644 index 000000000000..8ae668428484 --- /dev/null +++ b/ext/pdo_sqlite/tests/pdo_sqlite_dqs.phpt @@ -0,0 +1,27 @@ +--TEST-- +PDO_sqlite: Testing DQS support +--EXTENSIONS-- +pdo_sqlite +--SKIPIF-- +exec('SELECT "test"'); +} catch (\PDOException) { + die('skip SQLite is lacking DQS'); +} +?> +--FILE-- +exec('CREATE TABLE test (s1 VARCHAR(255), s2 VARCHAR(255))'); +$db->exec('INSERT INTO test VALUES (\'test\', "test")'); +var_dump($db->query('SELECT * FROM test')->fetch(PDO::FETCH_ASSOC)); +?> +--EXPECT-- +array(2) { + ["s1"]=> + string(4) "test" + ["s2"]=> + string(4) "test" +} diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt index 7e55ed60d5f1..0f1cba84dcce 100644 --- a/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt +++ b/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt @@ -7,7 +7,7 @@ pdo_sqlite $db = new PDO('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_lastinsertid (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_lastinsertid VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_lastinsertid VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); var_dump($db->query('SELECT * FROM test_pdo_sqlite_lastinsertid')); var_dump($db->errorInfo()); var_dump($db->lastInsertId()); diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_parser.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_parser.phpt index d5eda8d9b827..c1eed6f3adc8 100644 --- a/ext/pdo_sqlite/tests/pdo_sqlite_parser.phpt +++ b/ext/pdo_sqlite/tests/pdo_sqlite_parser.phpt @@ -31,9 +31,8 @@ foreach ($queries as $k => $query) { // One parameter $queries = [ "SELECT * FROM {$table} WHERE '1' = ?", - "SELECT * FROM {$table} WHERE \"?\" IN (?, \"?\")", + "SELECT * FROM {$table} WHERE '?' IN (?, '?')", "SELECT * FROM {$table} WHERE `a``?` = ?", - "SELECT * FROM {$table} WHERE \"a`?\" = ?", "SELECT * FROM {$table} WHERE [a`?] = ?", ]; @@ -43,6 +42,22 @@ foreach ($queries as $k => $query) { var_dump($stmt->fetch(PDO::FETCH_NUM) === [0 => 1]); } +// Check if DQS are enabled. +$dqs = true; +try { + $db->exec('SELECT "test"'); +} catch (\PDOException) { + $dqs = false; +} + +if ($dqs) { + $stmt = $db->prepare("SELECT * FROM {$table} WHERE \"a`?\" = ?"); + $stmt->execute([1]); + var_dump($stmt->fetch(PDO::FETCH_NUM) === [0 => 1]); +} else { + var_dump(true); +} + ?> --CLEAN-- query('CREATE TABLE test_pdo_sqlite_transaction (id INT AUTO INCREMENT, nam $db->commit(); $db->beginTransaction(); -$db->query('INSERT INTO test_pdo_sqlite_transaction VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_transaction VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); $db->rollback(); $r = $db->query('SELECT COUNT(*) FROM test_pdo_sqlite_transaction'); diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createafunction_trampoline.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createafunction_trampoline.phpt index adcb130e0b9c..a1286e2e026d 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createafunction_trampoline.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createafunction_trampoline.phpt @@ -20,11 +20,11 @@ class TrampolineTest { var_dump($db->createFunction('strtoupper', [new TrampolineTest(), 'strtoupper'])); -foreach ($db->query('SELECT strtoupper("test")') as $row) { +foreach ($db->query("SELECT strtoupper('test')") as $row) { var_dump($row); } -foreach ($db->query('SELECT strtoupper("test")') as $row) { +foreach ($db->query("SELECT strtoupper('test')") as $row) { var_dump($row); } @@ -33,14 +33,14 @@ foreach ($db->query('SELECT strtoupper("test")') as $row) { bool(true) Trampoline for strtoupper array(2) { - ["strtoupper("test")"]=> + ["strtoupper('test')"]=> string(4) "TEST" [0]=> string(4) "TEST" } Trampoline for strtoupper array(2) { - ["strtoupper("test")"]=> + ["strtoupper('test')"]=> string(4) "TEST" [0]=> string(4) "TEST" diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createaggregate.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createaggregate.phpt index 1f96da8e1fa3..af04daaec7fa 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createaggregate.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createaggregate.phpt @@ -10,7 +10,7 @@ $db = new Pdo\Sqlite('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_createaggregate (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createaggregate VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_createaggregate VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); $db->createAggregate('testing', function(&$a, $b) { $a .= $b; return $a; }, function(&$v) { return $v; }); diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation.phpt index d043dda7a526..4ba37ec6aa6e 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation.phpt @@ -11,7 +11,7 @@ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->query('CREATE TABLE test_pdo_sqlite_createcollation (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createcollation VALUES (NULL, "1"), (NULL, "2"), (NULL, "10")'); +$db->query("INSERT INTO test_pdo_sqlite_createcollation VALUES (NULL, '1'), (NULL, '2'), (NULL, '10')"); $db->createCollation('MYCOLLATE', function($a, $b) { return strnatcmp($a, $b); }); diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation_trampoline.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation_trampoline.phpt index 1635fd700771..7f2b309ebf4c 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation_trampoline.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createcollation_trampoline.phpt @@ -9,7 +9,7 @@ $db = new Pdo\Sqlite('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_createcollation_trampoline (s VARCHAR(4))'); -$stmt = $db->query('INSERT INTO test_pdo_sqlite_createcollation_trampoline VALUES ("a1"), ("a10"), ("a2")'); +$stmt = $db->query("INSERT INTO test_pdo_sqlite_createcollation_trampoline VALUES ('a1'), ('a10'), ('a2')"); class TrampolineTest { public function __call(string $name, array $arguments) { diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createfunction_with_flags.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createfunction_with_flags.phpt index c828817d2c3a..5178daefa6d5 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createfunction_with_flags.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_createfunction_with_flags.phpt @@ -11,7 +11,7 @@ if (!defined('Pdo\Sqlite::DETERMINISTIC')) die('skip system sqlite is too old'); // This test was copied from the pdo_sqlite test for sqliteCreateCollation $db = new Pdo\Sqlite('sqlite::memory:'); $db->query('CREATE TABLE test_pdo_sqlite_createfunction_with_flags (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO test_pdo_sqlite_createfunction_with_flags VALUES (NULL, "PHP"), (NULL, "PHP6")'); +$db->query("INSERT INTO test_pdo_sqlite_createfunction_with_flags VALUES (NULL, 'PHP'), (NULL, 'PHP6')"); $db->createFunction('testing', function($v) { return strtolower($v); }, 1, Pdo\Sqlite::DETERMINISTIC); diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getattr_busy.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getattr_busy.phpt index 230fb7390ae5..c1f82e96c07b 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getattr_busy.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getattr_busy.phpt @@ -8,7 +8,7 @@ pdo_sqlite $db = new Pdo\Sqlite('sqlite::memory:'); $db->query('CREATE TABLE test_busy (a string);'); -$db->query('INSERT INTO test_busy VALUES ("interleaved"), ("statements")'); +$db->query("INSERT INTO test_busy VALUES ('interleaved'), ('statements')"); $st = $db->prepare('SELECT a FROM test_busy'); var_dump($st->getAttribute(Pdo\Sqlite::ATTR_BUSY_STATEMENT)); $st->execute(); diff --git a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getsetattr_explain.phpt b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getsetattr_explain.phpt index 383457f3a79e..d2a6c2a5f52b 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getsetattr_explain.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdo_sqlite_getsetattr_explain.phpt @@ -13,7 +13,7 @@ if (!defined('Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN')) die('skip system sqlite does n $db = new Pdo\Sqlite('sqlite::memory:'); $db->query('CREATE TABLE test_explain (a string);'); -$stmt = $db->prepare('INSERT INTO test_explain VALUES ("first insert"), ("second_insert")'); +$stmt = $db->prepare("INSERT INTO test_explain VALUES ('first insert'), ('second_insert')"); $stmt->setAttribute(Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT, Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN); var_dump($stmt->getAttribute(Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT) == Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN); $r = $stmt->execute(); @@ -24,7 +24,7 @@ var_dump($stmt->getAttribute(Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT) == Pdo\Sqlite:: $r = $stmts->execute(); var_dump($stmts->fetchAll(PDO::FETCH_ASSOC)); -$stmt = $db->prepare('INSERT INTO test_explain VALUES ("first insert"), ("second_insert")'); +$stmt = $db->prepare("INSERT INTO test_explain VALUES ('first insert'), ('second_insert')"); $stmt->setAttribute(Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT, Pdo\Sqlite::EXPLAIN_MODE_PREPARED); $stmt->execute(); $stmts->setAttribute(Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT, Pdo\Sqlite::EXPLAIN_MODE_PREPARED); @@ -88,7 +88,7 @@ array(%d) { ["opcode"]=> string(13) "InitCoroutine" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(%d) ["p3"]=> @@ -109,7 +109,7 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(2) + int(%d) ["p3"]=> int(0) ["p4"]=> @@ -126,7 +126,7 @@ array(%d) { ["opcode"]=> string(5) "Yield" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(0) ["p3"]=> @@ -147,7 +147,7 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(2) + int(%d) ["p3"]=> int(0) ["p4"]=> @@ -164,7 +164,7 @@ array(%d) { ["opcode"]=> string(5) "Yield" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(0) ["p3"]=> @@ -183,7 +183,7 @@ array(%d) { ["opcode"]=> string(12) "EndCoroutine" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(0) ["p3"]=> @@ -221,7 +221,7 @@ array(%d) { ["opcode"]=> string(5) "Yield" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(%d) ["p3"]=> @@ -242,7 +242,7 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(1) + int(%d) ["p3"]=> int(0) ["p4"]=> @@ -259,11 +259,11 @@ array(%d) { ["opcode"]=> string(10) "MakeRecord" ["p1"]=> - int(2) + int(%d) ["p2"]=> int(1) ["p3"]=> - int(4) + int(%d) ["p4"]=> string(1) "C" ["p5"]=> @@ -280,9 +280,9 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(4) + int(%d) ["p3"]=> - int(1) + int(%d) ["p4"]=> string(12) "test_explain" ["p5"]=> diff --git a/ext/pdo_sqlite/tests/subclasses/pdosqlite_001.phpt b/ext/pdo_sqlite/tests/subclasses/pdosqlite_001.phpt index ea88a6316b64..52233745820d 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdosqlite_001.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdosqlite_001.phpt @@ -9,8 +9,8 @@ $db = new Pdo\Sqlite('sqlite::memory:'); $db->query('CREATE TABLE pdosqlite_001 (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO pdosqlite_001 VALUES (NULL, "PHP")'); -$db->query('INSERT INTO pdosqlite_001 VALUES (NULL, "PHP6")'); +$db->query("INSERT INTO pdosqlite_001 VALUES (NULL, 'PHP')"); +$db->query("INSERT INTO pdosqlite_001 VALUES (NULL, 'PHP6')"); $db->createFunction('testing', function($v) { return strtolower($v); }, 1, Pdo\Sqlite::DETERMINISTIC); diff --git a/ext/pdo_sqlite/tests/subclasses/pdosqlite_002.phpt b/ext/pdo_sqlite/tests/subclasses/pdosqlite_002.phpt index 28534f4a2365..f2de79b6c847 100644 --- a/ext/pdo_sqlite/tests/subclasses/pdosqlite_002.phpt +++ b/ext/pdo_sqlite/tests/subclasses/pdosqlite_002.phpt @@ -11,8 +11,8 @@ if (!$db instanceof Pdo\Sqlite) { } $db->query('CREATE TABLE pdosqlite_002 (id INT AUTO INCREMENT, name TEXT)'); -$db->query('INSERT INTO pdosqlite_002 VALUES (NULL, "PHP")'); -$db->query('INSERT INTO pdosqlite_002 VALUES (NULL, "PHP6")'); +$db->query("INSERT INTO pdosqlite_002 VALUES (NULL, 'PHP')"); +$db->query("INSERT INTO pdosqlite_002 VALUES (NULL, 'PHP6')"); $db->createFunction('testing', function($v) { return strtolower($v); }, 1, Pdo\Sqlite::DETERMINISTIC); diff --git a/ext/pgsql/config.w32 b/ext/pgsql/config.w32 index 14eb5a07a0e9..4c8d6f3bd715 100644 --- a/ext/pgsql/config.w32 +++ b/ext/pgsql/config.w32 @@ -6,6 +6,7 @@ if (PHP_PGSQL != "no") { if (CHECK_LIB("libpq.lib", "pgsql", PHP_PGSQL) && CHECK_HEADER("libpq-fe.h", "CFLAGS_PGSQL", PHP_PGSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\pgsql;" + PHP_PHP_BUILD + "\\include\\libpq;" + PHP_PGSQL)) { EXTENSION("pgsql", "pgsql.c", PHP_PGSQL_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); + AC_DEFINE('HAVE_PG_RESULT_MEMORY_SIZE', 1, "Define to 1 if libpq has the 'PQresultMemorySize' function (PostgreSQL 12 or later)."); AC_DEFINE('HAVE_PGSQL', 1, "Define to 1 if the PHP extension 'pgsql' is available."); ADD_FLAG("CFLAGS_PGSQL", "/D PGSQL_EXPORTS"); ADD_EXTENSION_DEP('pgsql', 'pcre'); diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 3f4b606b5106..27c736348239 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | | Jouni Ahto | @@ -1013,7 +1011,7 @@ static void php_pgsql_get_link_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type break; } #endif - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if (result) { RETURN_STRING(result); @@ -1578,7 +1576,7 @@ static void php_pgsql_get_result_info(INTERNAL_FUNCTION_PARAMETERS, int entry_ty case PHP_PG_CMD_TUPLES: RETVAL_LONG(atoi(PQcmdTuples(pgsql_result))); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } @@ -1817,7 +1815,7 @@ static void php_pgsql_get_field_info(INTERNAL_FUNCTION_PARAMETERS, int entry_typ oid = PQftype(pgsql_result, (int)field); PGSQL_RETURN_OID(oid); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -2348,7 +2346,7 @@ static void php_pgsql_data_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type, bo case PHP_PG_DATA_ISNULL: RETVAL_LONG(PQgetisnull(pgsql_result, pgsql_row, field_offset)); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -3429,7 +3427,7 @@ static zend_result pgsql_copy_from_query(PGconn *pgsql, PGresult *pgsql_result, int result; if (ZSTR_LEN(tmp) > 0 && ZSTR_VAL(tmp)[ZSTR_LEN(tmp) - 1] != '\n') { char *zquery = emalloc(ZSTR_LEN(tmp) + 2); - memcpy(zquery, ZSTR_VAL(tmp), ZSTR_LEN(tmp) + 1); + memcpy(zquery, ZSTR_VAL(tmp), ZSTR_LEN(tmp)); zquery[ZSTR_LEN(tmp)] = '\n'; zquery[ZSTR_LEN(tmp) + 1] = '\0'; result = PQputCopyData(pgsql, zquery, ZSTR_LEN(tmp) + 1); @@ -3921,7 +3919,7 @@ static void php_pgsql_do_async(INTERNAL_FUNCTION_PARAMETERS, int entry_type) PQfreeCancel(c); break; } - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if (PQsetnonblocking(pgsql, 0)) { php_error_docref(NULL, E_NOTICE, "Cannot set connection to blocking mode"); diff --git a/ext/pgsql/php_pgsql.h b/ext/pgsql/php_pgsql.h index 7a5770cb5936..a865a7ce73a4 100644 --- a/ext/pgsql/php_pgsql.h +++ b/ext/pgsql/php_pgsql.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | | Jouni Ahto | diff --git a/ext/phar/dirstream.c b/ext/phar/dirstream.c index f37599e7db11..097272a97842 100644 --- a/ext/phar/dirstream.c +++ b/ext/phar/dirstream.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar:// stream wrapper support | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | @@ -249,11 +247,11 @@ static php_stream *phar_make_dirstream(const char *dir, size_t dirlen, const Has */ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */ { - php_url *resource = NULL; char *error; phar_archive_data *phar; - if ((resource = phar_parse_url(wrapper, path, mode, options)) == NULL) { + php_url *resource = phar_parse_url(wrapper, path, mode, options); + if (!resource) { php_stream_wrapper_log_error(wrapper, options, "phar url \"%s\" is unknown", path); return NULL; } @@ -345,23 +343,23 @@ php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, */ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mode, int options, php_stream_context *context) /* {{{ */ { - phar_entry_info entry, *e; + phar_entry_info entry; phar_archive_data *phar = NULL; - char *error, *arch; - size_t arch_len; + char *error; php_url *resource = NULL; /* pre-readonly check, we need to know if this is a data phar */ - if (FAILURE == phar_split_fname(url_from, strlen(url_from), &arch, &arch_len, NULL, NULL, 2, 2)) { + zend_string *arch = phar_split_fname(url_from, strlen(url_from), NULL, 2, 2); + if (!arch) { php_stream_wrapper_log_error(wrapper, options, "phar error: cannot create directory \"%s\", no phar archive specified", url_from); return 0; } - if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { + if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL)) { phar = NULL; } - efree(arch); + zend_string_release_ex(arch, false); if (PHAR_G(readonly) && (!phar || !phar->is_data)) { php_stream_wrapper_log_error(wrapper, options, "phar error: cannot create directory \"%s\", write operations disabled", url_from); @@ -392,7 +390,8 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mo return 0; } - if ((e = phar_get_entry_info_dir(phar, ZSTR_VAL(resource->path) + 1, ZSTR_LEN(resource->path) - 1, 2, &error, true))) { + phar_entry_info *e = phar_get_entry_info_dir(phar, ZSTR_VAL(resource->path) + 1, ZSTR_LEN(resource->path) - 1, 2, &error, true); + if (e) { /* directory exists, or is a subdirectory of an existing file */ if (e->is_temp_dir) { zend_string_efree(e->filename); @@ -446,7 +445,8 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mo entry.flags = PHAR_ENT_PERM_DEF_DIR; entry.old_flags = PHAR_ENT_PERM_DEF_DIR; - if (NULL == zend_hash_add_mem(&phar->manifest, entry.filename, &entry, sizeof(phar_entry_info))) { + void *had_been_added = zend_hash_add_mem(&phar->manifest, entry.filename, &entry, sizeof(phar_entry_info)); + if (!had_been_added) { php_stream_wrapper_log_error(wrapper, options, "phar error: cannot create directory \"%s\" in phar \"%s\", adding to manifest failed", ZSTR_VAL(entry.filename), phar->fname); zend_string_efree(entry.filename); return 0; @@ -471,30 +471,29 @@ int phar_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url_from, int mo */ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context) /* {{{ */ { - phar_entry_info *entry; phar_archive_data *phar = NULL; - char *error, *arch; - size_t arch_len; - php_url *resource = NULL; + char *error; /* pre-readonly check, we need to know if this is a data phar */ - if (FAILURE == phar_split_fname(url, strlen(url), &arch, &arch_len, NULL, NULL, 2, 2)) { + zend_string *arch = phar_split_fname(url, strlen(url), NULL, 2, 2); + if (!arch) { php_stream_wrapper_log_error(wrapper, options, "phar error: cannot remove directory \"%s\", no phar archive specified, or phar archive does not exist", url); return 0; } - if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { + if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL)) { phar = NULL; } - efree(arch); + zend_string_release_ex(arch, false); if (PHAR_G(readonly) && (!phar || !phar->is_data)) { php_stream_wrapper_log_error(wrapper, options, "phar error: cannot rmdir directory \"%s\", write operations disabled", url); return 0; } - if ((resource = phar_parse_url(wrapper, url, "w", options)) == NULL) { + php_url *resource = phar_parse_url(wrapper, url, "w", options); + if (!resource) { return 0; } @@ -520,7 +519,8 @@ int phar_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options size_t path_len = ZSTR_LEN(resource->path) - 1; - if (!(entry = phar_get_entry_info_dir(phar, ZSTR_VAL(resource->path) + 1, path_len, 2, &error, true))) { + phar_entry_info *entry = phar_get_entry_info_dir(phar, ZSTR_VAL(resource->path) + 1, path_len, 2, &error, true); + if (!entry) { if (error) { php_stream_wrapper_log_error(wrapper, options, "phar error: cannot remove directory \"%s\" in phar \"%s\", %s", ZSTR_VAL(resource->path)+1, ZSTR_VAL(resource->host), error); efree(error); diff --git a/ext/phar/dirstream.h b/ext/phar/dirstream.h index 4debfecde41a..41899f88a992 100644 --- a/ext/phar/dirstream.h +++ b/ext/phar/dirstream.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | diff --git a/ext/phar/func_interceptors.c b/ext/phar/func_interceptors.c index 5d5242e59009..a3a0590f94c5 100644 --- a/ext/phar/func_interceptors.c +++ b/ext/phar/func_interceptors.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | +----------------------------------------------------------------------+ @@ -40,8 +38,6 @@ PHP_FUNCTION(phar_opendir) /* {{{ */ } if (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://")) { - char *arch, *entry; - size_t arch_len, entry_len; zend_string *fname = zend_get_executed_filename_ex(); /* we are checking for existence of a file within the relative path. Chances are good that this is @@ -50,24 +46,23 @@ PHP_FUNCTION(phar_opendir) /* {{{ */ goto skip_phar; } - if (SUCCESS == phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 2, 0)) { + zend_string *arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 2, 0); + if (arch) { php_stream_context *context = NULL; php_stream *stream; char *name; - entry = estrndup(filename, filename_len); /* fopen within phar, if :// is not in the url, then prepend phar:/// */ - entry_len = filename_len; /* retrieving a file within the current directory, so use this if possible */ - entry = phar_fix_filepath(entry, &entry_len, 1); + zend_string *entry = phar_fix_filepath(filename, filename_len, true); - if (entry[0] == '/') { - spprintf(&name, 4096, "phar://%s%s", arch, entry); + if (ZSTR_VAL(entry)[0] == '/') { + spprintf(&name, 4096, "phar://%s%s", ZSTR_VAL(arch), ZSTR_VAL(entry)); } else { - spprintf(&name, 4096, "phar://%s/%s", arch, entry); + spprintf(&name, 4096, "phar://%s/%s", ZSTR_VAL(arch), ZSTR_VAL(entry)); } - efree(entry); - efree(arch); + zend_string_release_ex(entry, false); + zend_string_release_ex(arch, false); if (zcontext) { context = php_stream_context_from_zval(zcontext, 0); } @@ -88,8 +83,6 @@ PHP_FUNCTION(phar_opendir) /* {{{ */ static zend_string* phar_get_name_for_relative_paths(zend_string *filename, bool using_include_path) { - char *arch; - size_t arch_len; zend_string *fname = zend_get_executed_filename_ex(); /* we are checking for existence of a file within the relative path. Chances are good that this is @@ -98,56 +91,56 @@ static zend_string* phar_get_name_for_relative_paths(zend_string *filename, bool return NULL; } - if (FAILURE == phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 2, 0)) { + zend_string *arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 2, 0); + if (!arch) { return NULL; } /* fopen within phar, if :// is not in the url, then prepend phar:/// */ /* retrieving a file defaults to within the current directory, so use this if possible */ phar_archive_data *phar; - if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { - efree(arch); + if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL)) { + zend_string_release_ex(arch, false); return NULL; } zend_string *name = NULL; if (using_include_path) { - if (!(name = phar_find_in_include_path(filename, NULL))) { + name = phar_find_in_include_path(filename, NULL); + if (!name) { /* this file is not in the phar, use the original path */ - efree(arch); + zend_string_release_ex(arch, false); return NULL; } } else { - size_t entry_len = ZSTR_LEN(filename); - char *entry = phar_fix_filepath(estrndup(ZSTR_VAL(filename), ZSTR_LEN(filename)), &entry_len, 1); - if (entry[0] == '/') { - if (!zend_hash_str_exists(&(phar->manifest), entry + 1, entry_len - 1)) { - /* this file is not in the phar, use the original path */ -notfound: - efree(entry); - efree(arch); - return NULL; - } + zend_string *entry = phar_fix_filepath(ZSTR_VAL(filename), ZSTR_LEN(filename), true); + bool is_in_phar; + if (ZSTR_VAL(entry)[0] == '/') { + is_in_phar = zend_hash_str_exists(&(phar->manifest), ZSTR_VAL(entry) + 1, ZSTR_LEN(entry) - 1); } else { - if (!zend_hash_str_exists(&(phar->manifest), entry, entry_len)) { - goto notfound; - } + is_in_phar = zend_hash_exists(&(phar->manifest), entry); + } + /* this file is not in the phar, use the original path */ + if (!is_in_phar) { + zend_string_release_ex(entry, false); + zend_string_release_ex(arch, false); + return NULL; } /* auto-convert to phar:// */ - if (entry[0] == '/') { - ZEND_ASSERT(strlen("phar://") + arch_len + entry_len < 4096); + if (ZSTR_VAL(entry)[0] == '/') { + ZEND_ASSERT(strlen("phar://") + ZSTR_LEN(arch) + ZSTR_LEN(entry) < 4096); name = zend_string_concat3( "phar://", strlen("phar://"), - arch, arch_len, - entry, entry_len + ZSTR_VAL(arch), ZSTR_LEN(arch), + ZSTR_VAL(entry), ZSTR_LEN(entry) ); } else { - name = strpprintf(4096, "phar://%s/%s", arch, entry); + name = strpprintf(4096, "phar://%s/%s", ZSTR_VAL(arch), ZSTR_VAL(entry)); } - efree(entry); + zend_string_release_ex(entry, false); } - efree(arch); + zend_string_release_ex(arch, false); return name; } @@ -345,15 +338,12 @@ static void phar_fancy_stat(zend_stat_t *stat_sb, int type, zval *return_value) wmask=S_IWGRP; xmask=S_IXGRP; } else { - int groups, n, i; - gid_t *gids; - - groups = getgroups(0, NULL); - if(groups > 0) { - gids=(gid_t *)safe_emalloc(groups, sizeof(gid_t), 0); - n=getgroups(groups, gids); - for(i=0;ist_gid==gids[i]) { + int groups = getgroups(0, NULL); + if (groups > 0) { + gid_t *gids = safe_emalloc(groups, sizeof(gid_t), 0); + int n = getgroups(groups, gids); + for(int i = 0; i < n; ++i){ + if (stat_sb->st_gid==gids[i]) { rmask=S_IRGRP; wmask=S_IWGRP; xmask=S_IXGRP; @@ -481,11 +471,8 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ } if (!IS_ABSOLUTE_PATH(filename, filename_length) && !strstr(filename, "://")) { - char *arch, *entry; - size_t arch_len, entry_len; zend_string *fname; zend_stat_t sb = {0}; - phar_entry_info *data = NULL; phar_archive_data *phar; fname = zend_get_executed_filename_ex(); @@ -497,39 +484,37 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ } if (PHAR_G(last_phar) && ZSTR_LEN(fname) - 7 >= PHAR_G(last_phar_name_len) && !memcmp(ZSTR_VAL(fname) + 7, PHAR_G(last_phar_name), PHAR_G(last_phar_name_len))) { - arch = estrndup(PHAR_G(last_phar_name), PHAR_G(last_phar_name_len)); - arch_len = PHAR_G(last_phar_name_len); - entry = estrndup(filename, filename_length); /* fopen within phar, if :// is not in the url, then prepend phar:/// */ - entry_len = filename_length; phar = PHAR_G(last_phar); goto splitted; } - if (SUCCESS == phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 2, 0)) { - entry = estrndup(filename, filename_length); + + zend_string *arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 2, 0); + if (arch) { /* fopen within phar, if :// is not in the url, then prepend phar:/// */ - entry_len = filename_length; - if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { - efree(arch); - efree(entry); + zend_result has_archive = phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL); + zend_string_release_ex(arch, false); + if (FAILURE == has_archive) { goto skip_phar; } -splitted: - entry = phar_fix_filepath(entry, &entry_len, 1); - if (entry[0] == '/') { - if (NULL != (data = zend_hash_str_find_ptr(&(phar->manifest), entry + 1, entry_len - 1))) { - efree(entry); +splitted:; + zend_string *entry = phar_fix_filepath(filename, filename_length, true); + const phar_entry_info *data = NULL; + if (ZSTR_VAL(entry)[0] == '/') { + data = zend_hash_str_find_ptr(&(phar->manifest), ZSTR_VAL(entry) + 1, ZSTR_LEN(entry) - 1); + if (data) { + zend_string_release_ex(entry, false); goto stat_entry; } goto notfound; } - if (NULL != (data = zend_hash_str_find_ptr(&(phar->manifest), entry, entry_len))) { - efree(entry); + data = zend_hash_find_ptr(&(phar->manifest), entry); + if (data) { + zend_string_release_ex(entry, false); goto stat_entry; } - if (zend_hash_str_exists(&(phar->virtual_dirs), entry, entry_len)) { - efree(entry); - efree(arch); + if (zend_hash_exists(&(phar->virtual_dirs), entry)) { + zend_string_release_ex(entry, false); if (IS_EXISTS_CHECK(type)) { RETURN_TRUE; } @@ -545,31 +530,28 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ size_t save_len; notfound: - efree(entry); + zend_string_release_ex(entry, false); save = PHAR_G(cwd); save_len = PHAR_G(cwd_len); /* this file is not in the current directory, use the original path */ - entry = estrndup(filename, filename_length); - entry_len = filename_length; PHAR_G(cwd) = "/"; PHAR_G(cwd_len) = 0; /* clean path without cwd */ - entry = phar_fix_filepath(entry, &entry_len, 1); - if (NULL != (data = zend_hash_str_find_ptr(&(phar->manifest), entry + 1, entry_len - 1))) { + entry = phar_fix_filepath(filename, filename_length, true); + data = zend_hash_str_find_ptr(&(phar->manifest), ZSTR_VAL(entry) + 1, ZSTR_LEN(entry) - 1); + if (data) { PHAR_G(cwd) = save; PHAR_G(cwd_len) = save_len; - efree(entry); + zend_string_release_ex(entry, false); if (IS_EXISTS_CHECK(type)) { - efree(arch); RETURN_TRUE; } goto stat_entry; } - if (zend_hash_str_exists(&(phar->virtual_dirs), entry + 1, entry_len - 1)) { + if (zend_hash_str_exists(&(phar->virtual_dirs), ZSTR_VAL(entry) + 1, ZSTR_LEN(entry) - 1)) { PHAR_G(cwd) = save; PHAR_G(cwd_len) = save_len; - efree(entry); - efree(arch); + zend_string_release_ex(entry, false); if (IS_EXISTS_CHECK(type)) { RETURN_TRUE; } @@ -583,8 +565,7 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ } PHAR_G(cwd) = save; PHAR_G(cwd_len) = save_len; - efree(entry); - efree(arch); + zend_string_release_ex(entry, false); /* Error Occurred */ if (!IS_EXISTS_CHECK(type)) { php_error_docref(NULL, E_WARNING, "%sstat failed for %s", IS_LINK_OPERATION(type) ? "L" : "", filename); @@ -592,11 +573,10 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ RETURN_FALSE; } stat_entry: - efree(arch); if (!data->is_dir) { sb.st_size = data->uncompressed_filesize; sb.st_mode = data->flags & PHAR_ENT_PERM_MASK; - if (data->link) { + if (data->symlink) { sb.st_mode |= S_IFREG|S_IFLNK; /* regular file */ } else { sb.st_mode |= S_IFREG; /* regular file */ @@ -609,7 +589,7 @@ static void phar_file_stat(const char *filename, size_t filename_length, int typ sb.st_size = 0; sb.st_mode = data->flags & PHAR_ENT_PERM_MASK; sb.st_mode |= S_IFDIR; /* regular directory */ - if (data->link) { + if (data->symlink) { sb.st_mode |= S_IFLNK; } /* timestamp is just the timestamp when this was added to the phar */ @@ -737,8 +717,6 @@ PHP_FUNCTION(phar_is_file) /* {{{ */ goto skip_phar; } if (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://")) { - char *arch, *entry; - size_t arch_len, entry_len; zend_string *fname = zend_get_executed_filename_ex(); /* we are checking for existence of a file within the relative path. Chances are good that this is @@ -747,35 +725,29 @@ PHP_FUNCTION(phar_is_file) /* {{{ */ goto skip_phar; } - if (SUCCESS == phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 2, 0)) { + zend_string *arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 2, 0); + if (arch) { phar_archive_data *phar; - entry = filename; /* fopen within phar, if :// is not in the url, then prepend phar:/// */ - entry_len = filename_len; /* retrieving a file within the current directory, so use this if possible */ - if (SUCCESS == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { + zend_result has_archive = phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL); + zend_string_release_ex(arch, false); + if (has_archive == SUCCESS) { phar_entry_info *etemp; - entry = phar_fix_filepath(estrndup(entry, entry_len), &entry_len, 1); - if (entry[0] == '/') { - if (NULL != (etemp = zend_hash_str_find_ptr(&(phar->manifest), entry + 1, entry_len - 1))) { - /* this file is not in the current directory, use the original path */ -found_it: - efree(entry); - efree(arch); - RETURN_BOOL(!etemp->is_dir); - } + zend_string *entry = phar_fix_filepath(filename, filename_len, true); + if (ZSTR_VAL(entry)[0] == '/') { + etemp = zend_hash_str_find_ptr(&(phar->manifest), ZSTR_VAL(entry) + 1, ZSTR_LEN(entry) - 1); } else { - if (NULL != (etemp = zend_hash_str_find_ptr(&(phar->manifest), entry, entry_len))) { - goto found_it; - } + etemp = zend_hash_find_ptr(&(phar->manifest), entry); } + zend_string_release_ex(entry, false); + if (etemp) { + RETURN_BOOL(!etemp->is_dir); + } + /* this file is not in the current directory, use the original path */ } - if (entry != filename) { - efree(entry); - } - efree(arch); RETURN_FALSE; } } @@ -802,8 +774,6 @@ PHP_FUNCTION(phar_is_link) /* {{{ */ goto skip_phar; } if (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://")) { - char *arch, *entry; - size_t arch_len, entry_len; zend_string *fname = zend_get_executed_filename_ex(); /* we are checking for existence of a file within the relative path. Chances are good that this is @@ -812,33 +782,28 @@ PHP_FUNCTION(phar_is_link) /* {{{ */ goto skip_phar; } - if (SUCCESS == phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 2, 0)) { + zend_string *arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 2, 0); + if (arch) { phar_archive_data *phar; - entry = filename; /* fopen within phar, if :// is not in the url, then prepend phar:/// */ - entry_len = filename_len; /* retrieving a file within the current directory, so use this if possible */ - if (SUCCESS == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { + zend_result has_archive = phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL); + zend_string_release_ex(arch, false); + if (has_archive == SUCCESS) { phar_entry_info *etemp; - entry = phar_fix_filepath(estrndup(entry, entry_len), &entry_len, 1); - if (entry[0] == '/') { - if (NULL != (etemp = zend_hash_str_find_ptr(&(phar->manifest), entry + 1, entry_len - 1))) { - /* this file is not in the current directory, use the original path */ -found_it: - efree(entry); - efree(arch); - RETURN_BOOL(etemp->link); - } + zend_string *entry = phar_fix_filepath(filename, filename_len, true); + if (ZSTR_VAL(entry)[0] == '/') { + etemp = zend_hash_str_find_ptr(&(phar->manifest), ZSTR_VAL(entry) + 1, ZSTR_LEN(entry) - 1); } else { - if (NULL != (etemp = zend_hash_str_find_ptr(&(phar->manifest), entry, entry_len))) { - goto found_it; - } + etemp = zend_hash_find_ptr(&(phar->manifest), entry); + } + zend_string_release_ex(entry, false); + if (etemp) { + RETURN_BOOL(etemp->symlink); } } - efree(entry); - efree(arch); RETURN_FALSE; } } @@ -877,7 +842,8 @@ void phar_release_functions(void) /* {{{ void phar_intercept_functions_init(void) */ #define PHAR_INTERCEPT(func) \ PHAR_G(orig_##func) = NULL; \ - if (NULL != (orig = zend_hash_str_find_ptr(CG(function_table), #func, sizeof(#func)-1))) { \ + orig = zend_hash_str_find_ptr(CG(function_table), #func, sizeof(#func)-1); \ + if (orig) { \ PHAR_G(orig_##func) = orig->internal_function.handler; \ orig->internal_function.handler = PHP_FN(phar_##func); \ } @@ -926,6 +892,7 @@ void phar_intercept_functions_shutdown(void) PHAR_RELEASE(fopen); PHAR_RELEASE(file_get_contents); PHAR_RELEASE(is_file); + PHAR_RELEASE(is_link); PHAR_RELEASE(is_dir); PHAR_RELEASE(opendir); PHAR_RELEASE(file_exists); diff --git a/ext/phar/func_interceptors.h b/ext/phar/func_interceptors.h index 06906ee79e80..af68b0410d4c 100644 --- a/ext/phar/func_interceptors.h +++ b/ext/phar/func_interceptors.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | diff --git a/ext/phar/makestub.php b/ext/phar/makestub.php index 34d270751bfb..e5cbe89ff4bd 100755 --- a/ext/phar/makestub.php +++ b/ext/phar/makestub.php @@ -35,15 +35,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension generated stub | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | +----------------------------------------------------------------------+ diff --git a/ext/phar/phar.1.in b/ext/phar/phar.1.in index db22d40abc3f..8dffd2cf2dd0 100644 --- a/ext/phar/phar.1.in +++ b/ext/phar/phar.1.in @@ -511,17 +511,9 @@ contributors all around the world. .SH VERSION INFORMATION This manpage describes \fBphar\fP, version @PHP_VERSION@. .SH COPYRIGHT -Copyright \(co The PHP Group +Copyright \(co The PHP Group and Contributors .LP -This source file is subject to version 3.01 of the PHP license, -that is bundled with this package in the file LICENSE, and is -available through the world-wide-web at the following url: -.PD 0 -.P -.B https://www.php.net/license/3_01.txt -.PD 1 -.P -If you did not receive a copy of the PHP license and are unable to -obtain it through the world-wide-web, please send a note to -.B license@php.net -so we can mail you a copy immediately. +This source file is subject to the Modified BSD License that is +bundled with this package in the file LICENSE, and is available +through the World Wide Web at +.B https://www.php.net/license/ diff --git a/ext/phar/phar.c b/ext/phar/phar.c index bb08af18ff84..b0d56c8067e8 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | @@ -93,7 +91,7 @@ HashTable cached_alias; static void phar_split_cache_list(void) /* {{{ */ { char *tmp; - char *key, *lasts, *end; + char *key, *lasts; char ds[2]; phar_archive_data *phar; uint32_t i = 0; @@ -126,7 +124,7 @@ static void phar_split_cache_list(void) /* {{{ */ key; key = php_strtok_r(NULL, ds, &lasts)) { size_t len; - end = strchr(key, DEFAULT_DIR_SEPARATOR); + const char *end = strchr(key, DEFAULT_DIR_SEPARATOR); if (end) { len = end - key; } else { @@ -194,7 +192,7 @@ PHP_INI_END() */ void phar_destroy_phar_data(phar_archive_data *phar) /* {{{ */ { - if (phar->alias && phar->alias != phar->fname) { + if (phar->alias) { pefree(phar->alias, phar->is_persistent); phar->alias = NULL; } @@ -258,7 +256,8 @@ bool phar_archive_delref(phar_archive_data *phar) /* {{{ */ } else if (!phar->refcount) { /* invalidate phar cache */ PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; /* This is a new phar that has perhaps had an alias/metadata set, but has never been flushed. */ bool remove_fname_cache = !zend_hash_num_elements(&phar->manifest); @@ -375,9 +374,9 @@ void destroy_phar_manifest_entry_int(phar_entry_info *entry) /* {{{ */ zend_string_release_ex(entry->filename, entry->is_persistent); - if (entry->link) { - pefree(entry->link, entry->is_persistent); - entry->link = 0; + if (entry->symlink) { + zend_string_release_ex(entry->symlink, entry->is_persistent); + entry->symlink = NULL; } if (entry->tmp) { @@ -1264,8 +1263,9 @@ static zend_result phar_parse_pharfile(php_stream *fp, char *fname, size_t fname MAPPHAR_FAIL("Cannot open archive \"%s\", invalid alias"); } - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len))) { - if (SUCCESS != phar_free_alias(fd_ptr, alias, alias_len)) { + fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len); + if (fd_ptr) { + if (SUCCESS != phar_free_alias(fd_ptr)) { signature = NULL; fp = NULL; MAPPHAR_FAIL("Cannot open archive \"%s\", alias is already in use by existing archive"); @@ -1461,10 +1461,9 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 7, 8) zend_result phar_create_or_parse_filename(c /* assume tar format, PharData can specify other */ mydata->is_tar = 1; } else { - phar_archive_data *fd_ptr; - - if (alias && NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len))) { - if (SUCCESS != phar_free_alias(fd_ptr, alias, alias_len)) { + if (alias) { + const phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len); + if (fd_ptr && SUCCESS != phar_free_alias(fd_ptr)) { spprintf(error, 4096, "phar error: phar \"%s\" cannot set alias \"%s\", already in use by another phar archive", mydata->fname, alias); zend_hash_str_del(&(PHAR_G(phar_fname_map)), mydata->fname, fname_len); @@ -1670,14 +1669,14 @@ static zend_result phar_open_from_fp(php_stream* fp, char *fname, size_t fname_l continue; } else if (!memcmp(pos, bz_magic, 3)) { php_stream_filter *filter; - php_stream *temp; if (!PHAR_G(has_bz2)) { MAPPHAR_ALLOC_FAIL("unable to decompress bzipped phar archive \"%s\" to temporary file, enable bz2 extension in php.ini") } /* entire file is bzip-compressed, uncompress to temporary file */ - if (!(temp = php_stream_fopen_tmpfile())) { + php_stream *temp = php_stream_fopen_tmpfile(); + if (!temp) { MAPPHAR_ALLOC_FAIL("unable to create temporary file for decompression of bzipped phar archive \"%s\"") } @@ -1751,10 +1750,10 @@ static zend_result phar_open_from_fp(php_stream* fp, char *fname, size_t fname_l static zend_result phar_analyze_path(const char *fname, const char *ext, size_t ext_len, int for_create) /* {{{ */ { php_stream_statbuf ssb; - char *realpath; char *filename = estrndup(fname, (ext - fname) + ext_len); - if ((realpath = expand_filepath(filename, NULL))) { + char *realpath = expand_filepath(filename, NULL); + if (realpath) { #ifdef PHP_WIN32 phar_unixify_path_separators(realpath, strlen(realpath)); #endif @@ -1801,7 +1800,8 @@ static zend_result phar_analyze_path(const char *fname, const char *ext, size_t if (SUCCESS != php_stream_stat_path((char *) filename, &ssb)) { if (!slash) { - if (!(realpath = expand_filepath(filename, NULL))) { + realpath = expand_filepath(filename, NULL); + if (!realpath) { efree(filename); return FAILURE; } @@ -1944,7 +1944,8 @@ zend_result phar_detect_phar_fname_ext(const char *filename, size_t filename_len phar_archive_data *pphar; if (is_complete) { - if (NULL != (pphar = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), (char *) filename, filename_len))) { + pphar = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), filename, filename_len); + if (pphar) { *ext_str = filename + (filename_len - pphar->ext_len); woohoo: *ext_len = pphar->ext_len; @@ -1964,7 +1965,8 @@ zend_result phar_detect_phar_fname_ext(const char *filename, size_t filename_len return FAILURE; } - if (PHAR_G(manifest_cached) && NULL != (pphar = zend_hash_str_find_ptr(&cached_phars, (char *) filename, filename_len))) { + pphar = PHAR_G(manifest_cached) ? zend_hash_str_find_ptr(&cached_phars, filename, filename_len) : NULL; + if (pphar) { *ext_str = filename + (filename_len - pphar->ext_len); goto woohoo; } @@ -2061,31 +2063,29 @@ static bool php_check_dots(const char *element, size_t n) /* {{{ */ /** * Remove .. and . references within a phar filename */ -char *phar_fix_filepath(char *path, size_t *new_len, bool use_cwd) /* {{{ */ +zend_string* phar_fix_filepath(const char *path, size_t path_length, bool use_cwd) /* {{{ */ { - char *newpath; - size_t newpath_len; - char *ptr; - char *tok; - size_t ptr_length, path_length = *new_len; - - if (PHAR_G(cwd_len) && use_cwd && path_length > 2 && path[0] == '.' && path[1] == '/') { - newpath_len = PHAR_G(cwd_len); - newpath = emalloc(strlen(path) + newpath_len + 1); - memcpy(newpath, PHAR_G(cwd), newpath_len); + zend_string *new_path; + size_t new_path_len; + size_t ptr_length; + + if (use_cwd && PHAR_G(cwd_len) && path_length > 2 && path[0] == '.' && path[1] == '/') { + new_path = zend_string_alloc(path_length + path_length + 1, false); + new_path_len = PHAR_G(cwd_len); + memcpy(ZSTR_VAL(new_path), PHAR_G(cwd), PHAR_G(cwd_len)); } else { - newpath = emalloc(strlen(path) + 2); - newpath[0] = '/'; - newpath_len = 1; + new_path = zend_string_alloc(path_length + 2, false); + ZSTR_VAL(new_path)[0] = '/'; + new_path_len = 1; } - ptr = path; + const char *ptr = path; if (*ptr == '/') { ++ptr; } - tok = ptr; + const char *tok = ptr; do { ptr = memchr(ptr, '/', path_length - (ptr - path)); @@ -2095,46 +2095,42 @@ char *phar_fix_filepath(char *path, size_t *new_len, bool use_cwd) /* {{{ */ switch (path_length - (tok - path)) { case 1: if (*tok == '.') { - efree(path); - *new_len = 1; - efree(newpath); - return estrndup("/", 1); + zend_string_release_ex(new_path, false); + return ZSTR_CHAR('/'); } break; case 2: if (tok[0] == '.' && tok[1] == '.') { - efree(path); - *new_len = 1; - efree(newpath); - return estrndup("/", 1); + zend_string_release_ex(new_path, false); + return ZSTR_CHAR('/'); } } - efree(newpath); - return path; + zend_string_release_ex(new_path, false); + return zend_string_init(path, path_length, false); } while (ptr) { ptr_length = ptr - tok; last_time: if (IS_DIRECTORY_UP(tok, ptr_length)) { - while (newpath_len > 1 && !IS_BACKSLASH(newpath[newpath_len - 1])) { - newpath_len--; + while (new_path_len > 1 && !IS_BACKSLASH(ZSTR_VAL(new_path)[new_path_len - 1])) { + new_path_len--; } - if (newpath[0] != '/') { - newpath[newpath_len] = '\0'; - } else if (newpath_len > 1) { - --newpath_len; + if (ZSTR_VAL(new_path)[0] != '/') { + ZSTR_VAL(new_path)[new_path_len] = '\0'; + } else if (new_path_len > 1) { + --new_path_len; } } else if (!IS_DIRECTORY_CURRENT(tok, ptr_length)) { - if (newpath_len > 1) { - newpath[newpath_len++] = '/'; - memcpy(newpath + newpath_len, tok, ptr_length+1); + if (new_path_len > 1) { + ZSTR_VAL(new_path)[new_path_len++] = '/'; + memcpy(ZSTR_VAL(new_path) + new_path_len, tok, ptr_length+1); } else { - memcpy(newpath + newpath_len, tok, ptr_length+1); + memcpy(ZSTR_VAL(new_path) + new_path_len, tok, ptr_length+1); } - newpath_len += ptr_length; + new_path_len += ptr_length; } if (ptr == path + path_length) { @@ -2154,10 +2150,8 @@ char *phar_fix_filepath(char *path, size_t *new_len, bool use_cwd) /* {{{ */ } } - efree(path); - *new_len = newpath_len; - newpath[newpath_len] = '\0'; - return erealloc(newpath, newpath_len + 1); + ZSTR_VAL(new_path)[new_path_len] = '\0'; + return zend_string_realloc(new_path, new_path_len, false); } /* }}} */ @@ -2173,7 +2167,7 @@ char *phar_fix_filepath(char *path, size_t *new_len, bool use_cwd) /* {{{ */ * * This is used by phar_parse_url() */ -zend_result phar_split_fname(const char *filename, size_t filename_len, char **arch, size_t *arch_len, char **entry, size_t *entry_len, int executable, int for_create) /* {{{ */ +zend_string* phar_split_fname_ex(const char *filename, size_t filename_len, zend_string **entry, int executable, int for_create, const char **error) /* {{{ */ { const char *ext_str; #ifdef PHP_WIN32 @@ -2181,8 +2175,11 @@ zend_result phar_split_fname(const char *filename, size_t filename_len, char **a #endif size_t ext_len; + if (error) { + *error = NULL; + } if (zend_char_has_nul_byte(filename, filename_len)) { - return FAILURE; + return NULL; } if (!strncasecmp(filename, "phar://", 7)) { @@ -2200,12 +2197,12 @@ zend_result phar_split_fname(const char *filename, size_t filename_len, char **a #endif if (phar_detect_phar_fname_ext(filename, filename_len, &ext_str, &ext_len, executable, for_create, false) == FAILURE) { if (ext_len != -1) { - if (!ext_str) { + if (!ext_str && error) { /* no / detected, restore arch for error message */ #ifdef PHP_WIN32 - *arch = save; + *error = save; #else - *arch = (char*)filename; + *error = filename; #endif } @@ -2214,27 +2211,24 @@ zend_result phar_split_fname(const char *filename, size_t filename_len, char **a efree((char *)filename); } #endif - return FAILURE; + return NULL; } ext_len = 0; /* no extension detected - instead we are dealing with an alias */ } - *arch_len = ext_str - filename + ext_len; - *arch = estrndup(filename, *arch_len); + size_t arch_len = ext_str - filename + ext_len; + zend_string *arch = zend_string_init(filename, arch_len, false); if (entry) { if (ext_str[ext_len]) { - *entry_len = filename_len - *arch_len; - *entry = estrndup(ext_str+ext_len, *entry_len); - #ifdef PHP_WIN32 - phar_unixify_path_separators(*entry, *entry_len); - #endif - *entry = phar_fix_filepath(*entry, entry_len, 0); + size_t computed_entry_len = filename_len - arch_len; + /* We don't need to unixify the path on Windows, + * as ext_str is derived from filename that was already unixify */ + *entry = phar_fix_filepath(ext_str+ext_len, computed_entry_len, false); } else { - *entry_len = 1; - *entry = estrndup("/", 1); + *entry = ZSTR_CHAR('/'); } } @@ -2244,10 +2238,14 @@ zend_result phar_split_fname(const char *filename, size_t filename_len, char **a } #endif - return SUCCESS; + return arch; } /* }}} */ +zend_string* phar_split_fname(const char *filename, size_t filename_len, zend_string **entry, int executable, int for_create) { + return phar_split_fname_ex(filename, filename_len, entry, executable, for_create, NULL); +} + /** * Invoked when a user calls Phar::mapPhar() from within an executing .phar * to set up its manifest directly @@ -3346,7 +3344,8 @@ void phar_request_initialize(void) /* {{{ */ if (!PHAR_G(request_init)) { PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; PHAR_G(has_bz2) = zend_hash_str_exists(&module_registry, "bz2", sizeof("bz2")-1); PHAR_G(has_zlib) = zend_hash_str_exists(&module_registry, "zlib", sizeof("zlib")-1); PHAR_G(request_init) = 1; diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h index 62b5520ba50f..8d7632fbb4dd 100644 --- a/ext/phar/phar_internal.h +++ b/ext/phar/phar_internal.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | @@ -148,10 +146,10 @@ ZEND_BEGIN_MODULE_GLOBALS(phar) char *openssl_privatekey; uint32_t openssl_privatekey_len; /* phar_get_archive cache */ - char* last_phar_name; + const char *last_phar_name; uint32_t last_phar_name_len; uint32_t last_alias_len; - char* last_alias; + const char* last_alias; phar_archive_data* last_phar; HashTable mime_types; ZEND_END_MODULE_GLOBALS(phar) @@ -219,7 +217,7 @@ typedef struct _phar_entry_info { unsigned int fileinfo_lock_count; char *tmp; phar_archive_data *phar; - char *link; /* symbolic link to another file */ + zend_string *symlink; char tar_type; /* position in the manifest */ uint32_t manifest_pos; @@ -247,9 +245,9 @@ typedef struct _phar_entry_info { struct _phar_archive_data { char *fname; uint32_t fname_len; - /* for phar_detect_fname_ext, this stores the location of the file extension within fname */ + /* The ext field stores the location of the file extension from the fname field, and thus should never be freed. */ uint32_t ext_len; - char *ext; + const char *ext; char *alias; uint32_t alias_len; char version[12]; @@ -400,7 +398,7 @@ static inline void phar_set_inode(phar_entry_info *entry) /* {{{ */ } /* }}} */ -static inline bool phar_entry_can_remove(phar_entry_info *entry) +static inline bool phar_entry_can_remove(const phar_entry_info *entry) { return entry->fp_refcount == 0 && entry->fileinfo_lock_count == 0; } @@ -415,9 +413,9 @@ zend_result phar_open_from_filename(char *fname, size_t fname_len, char *alias, ZEND_ATTRIBUTE_NONNULL_ARGS(1, 7, 8) zend_result phar_open_or_create_filename(char *fname, size_t fname_len, char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error); ZEND_ATTRIBUTE_NONNULL_ARGS(1, 7, 8) zend_result phar_create_or_parse_filename(char *fname, size_t fname_len, char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error); ZEND_ATTRIBUTE_NONNULL_ARGS(3) zend_result phar_open_executed_filename(char *alias, size_t alias_len, char **error); -zend_result phar_free_alias(phar_archive_data *phar, char *alias, size_t alias_len); -zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fname_len, char *alias, size_t alias_len, char **error); -zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, char *sig, size_t sig_len, char *fname, char **signature, size_t *signature_len, char **error); +zend_result phar_free_alias(const phar_archive_data *phar); +zend_result phar_get_archive(phar_archive_data **archive, const char *fname, size_t fname_len, const char *alias, size_t alias_len, char **error); +zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, char *sig, size_t sig_len, const char *fname, char **signature, size_t *signature_len, char **error); ZEND_ATTRIBUTE_NONNULL zend_result phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signature, size_t *signature_length, char **error); /* utility functions */ @@ -426,10 +424,10 @@ const char *phar_decompress_filter(const phar_entry_info *entry, bool return_unk const char *phar_compress_filter(const phar_entry_info *entry, bool return_unknown); /* void phar_remove_virtual_dirs(phar_archive_data *phar, char *filename, size_t filename_len); */ -void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, size_t filename_len); -zend_result phar_mount_entry(phar_archive_data *phar, char *filename, size_t filename_len, char *path, size_t path_len); +void phar_add_virtual_dirs(phar_archive_data *phar, const char *filename, size_t filename_len); +zend_result phar_mount_entry(phar_archive_data *phar, const char *filename, size_t filename_len, char *path, size_t path_len); zend_string *phar_find_in_include_path(zend_string *file, phar_archive_data **pphar); -char *phar_fix_filepath(char *path, size_t *new_len, bool use_cwd); +zend_string* phar_fix_filepath(const char *path, size_t path_length, bool use_cwd); ZEND_ATTRIBUTE_NONNULL phar_entry_info * phar_open_jit(const phar_archive_data *phar, phar_entry_info *entry, char **error); void phar_parse_metadata_lazy(const char *buffer, phar_metadata_tracker *tracker, uint32_t zip_metadata_len, bool persistent); bool phar_metadata_tracker_has_data(const phar_metadata_tracker* tracker, bool persistent); @@ -450,12 +448,12 @@ zend_result phar_copy_on_write(phar_archive_data **pphar); /* tar functions in tar.c */ bool phar_is_tar(const char *buf, const char *fname); -zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error); +zend_result phar_parse_tarfile(php_stream* fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error); ZEND_ATTRIBUTE_NONNULL_ARGS(1, 7, 8) zend_result phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error); ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_tar_flush(phar_archive_data *phar, zend_string *user_stub, bool is_default_stub, char **error); /* zip functions in zip.c */ -zend_result phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, char **error); +zend_result phar_parse_zipfile(php_stream *fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, phar_archive_data** pphar, char **error); ZEND_ATTRIBUTE_NONNULL_ARGS(1, 7, 8) zend_result phar_open_or_create_zip(char *fname, size_t fname_len, char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data** pphar, char **error); ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_zip_flush(phar_archive_data *archive, zend_string *user_stub, bool is_default_stub, char **error); @@ -472,11 +470,12 @@ void phar_entry_delref(phar_entry_data *idata); phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, size_t path_len, char **error, bool security); phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, size_t path_len, char dir, char **error, bool security); ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security, uint32_t timestamp); -ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security); +ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, const char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security); ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_flush_ex(phar_archive_data *archive, zend_string *user_stub, bool is_default_stub, char **error); ZEND_ATTRIBUTE_NONNULL int phar_flush(phar_archive_data *archive, char **error); zend_result phar_detect_phar_fname_ext(const char *filename, size_t filename_len, const char **ext_str, size_t *ext_len, int executable, int for_create, bool is_complete); -zend_result phar_split_fname(const char *filename, size_t filename_len, char **arch, size_t *arch_len, char **entry, size_t *entry_len, int executable, int for_create); +zend_string* phar_split_fname_ex(const char *filename, size_t filename_len, zend_string **entry, int executable, int for_create, const char **error); +zend_string* phar_split_fname(const char *filename, size_t filename_len, zend_string **entry, int executable, int for_create); typedef enum { pcr_use_query, diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index d4b084217b5b..0cde5704c2d0 100644 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | @@ -46,7 +44,6 @@ static zend_class_entry *phar_ce_entry; static int phar_file_type(const HashTable *mimes, const char *file, char **mime_type) /* {{{ */ { - phar_mime_type *mime; const char *ext = strrchr(file, '.'); if (!ext) { *mime_type = "text/plain"; @@ -54,7 +51,9 @@ static int phar_file_type(const HashTable *mimes, const char *file, char **mime_ return PHAR_MIME_OTHER; } ++ext; - if (NULL == (mime = zend_hash_str_find_ptr(mimes, ext, strlen(ext)))) { + + phar_mime_type *mime = zend_hash_str_find_ptr(mimes, ext, strlen(ext)); + if (!mime) { *mime_type = "application/octet-stream"; return PHAR_MIME_OTHER; } @@ -66,7 +65,6 @@ static int phar_file_type(const HashTable *mimes, const char *file, char **mime_ static void phar_mung_server_vars(char *fname, char *entry, size_t entry_len, const char *basename, size_t request_uri_len) /* {{{ */ { HashTable *_SERVER; - zval *stuff; char *path_info; size_t basename_len = strlen(basename); size_t code; @@ -80,23 +78,25 @@ static void phar_mung_server_vars(char *fname, char *entry, size_t entry_len, co _SERVER = Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]); /* PATH_INFO and PATH_TRANSLATED should always be munged */ - if (NULL != (stuff = zend_hash_str_find(_SERVER, "PATH_INFO", sizeof("PATH_INFO")-1))) { + zval *stuff = zend_hash_str_find(_SERVER, ZEND_STRL("PATH_INFO")); + if (stuff) { path_info = Z_STRVAL_P(stuff); code = Z_STRLEN_P(stuff); if (code > (size_t)entry_len && !memcmp(path_info, entry, entry_len)) { ZVAL_STR(&temp, Z_STR_P(stuff)); ZVAL_STRINGL(stuff, path_info + entry_len, request_uri_len); - zend_hash_str_update(_SERVER, "PHAR_PATH_INFO", sizeof("PHAR_PATH_INFO")-1, &temp); + zend_hash_str_update(_SERVER, ZEND_STRL("PHAR_PATH_INFO"), &temp); } } - if (NULL != (stuff = zend_hash_str_find(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED")-1))) { + stuff = zend_hash_str_find(_SERVER, ZEND_STRL("PATH_TRANSLATED")); + if (stuff) { zend_string *str = strpprintf(4096, "phar://%s%s", fname, entry); ZVAL_STR(&temp, Z_STR_P(stuff)); ZVAL_NEW_STR(stuff, str); - zend_hash_str_update(_SERVER, "PHAR_PATH_TRANSLATED", sizeof("PHAR_PATH_TRANSLATED")-1, &temp); + zend_hash_str_update(_SERVER, ZEND_STRL("PHAR_PATH_TRANSLATED"), &temp); } if (!PHAR_G(phar_SERVER_mung_list)) { @@ -104,46 +104,50 @@ static void phar_mung_server_vars(char *fname, char *entry, size_t entry_len, co } if (PHAR_G(phar_SERVER_mung_list) & PHAR_MUNG_REQUEST_URI) { - if (NULL != (stuff = zend_hash_str_find(_SERVER, "REQUEST_URI", sizeof("REQUEST_URI")-1))) { + stuff = zend_hash_str_find(_SERVER, ZEND_STRL("REQUEST_URI")); + if (stuff) { path_info = Z_STRVAL_P(stuff); code = Z_STRLEN_P(stuff); if (code > basename_len && !memcmp(path_info, basename, basename_len)) { ZVAL_STR(&temp, Z_STR_P(stuff)); ZVAL_STRINGL(stuff, path_info + basename_len, code - basename_len); - zend_hash_str_update(_SERVER, "PHAR_REQUEST_URI", sizeof("PHAR_REQUEST_URI")-1, &temp); + zend_hash_str_update(_SERVER, ZEND_STRL("PHAR_REQUEST_URI"), &temp); } } } if (PHAR_G(phar_SERVER_mung_list) & PHAR_MUNG_PHP_SELF) { - if (NULL != (stuff = zend_hash_str_find(_SERVER, "PHP_SELF", sizeof("PHP_SELF")-1))) { + stuff = zend_hash_str_find(_SERVER, ZEND_STRL("PHP_SELF")); + if (stuff) { path_info = Z_STRVAL_P(stuff); code = Z_STRLEN_P(stuff); if (code > basename_len && !memcmp(path_info, basename, basename_len)) { ZVAL_STR(&temp, Z_STR_P(stuff)); ZVAL_STRINGL(stuff, path_info + basename_len, code - basename_len); - zend_hash_str_update(_SERVER, "PHAR_PHP_SELF", sizeof("PHAR_PHP_SELF")-1, &temp); + zend_hash_str_update(_SERVER, ZEND_STRL("PHAR_PHP_SELF"), &temp); } } } if (PHAR_G(phar_SERVER_mung_list) & PHAR_MUNG_SCRIPT_NAME) { - if (NULL != (stuff = zend_hash_str_find(_SERVER, "SCRIPT_NAME", sizeof("SCRIPT_NAME")-1))) { + stuff = zend_hash_str_find(_SERVER, ZEND_STRL("SCRIPT_NAME")); + if (stuff) { ZVAL_STR(&temp, Z_STR_P(stuff)); ZVAL_STRINGL(stuff, entry, entry_len); - zend_hash_str_update(_SERVER, "PHAR_SCRIPT_NAME", sizeof("PHAR_SCRIPT_NAME")-1, &temp); + zend_hash_str_update(_SERVER, ZEND_STRL("PHAR_SCRIPT_NAME"), &temp); } } if (PHAR_G(phar_SERVER_mung_list) & PHAR_MUNG_SCRIPT_FILENAME) { - if (NULL != (stuff = zend_hash_str_find(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1))) { + stuff = zend_hash_str_find(_SERVER, ZEND_STRL("SCRIPT_FILENAME")); + if (stuff) { zend_string *str = strpprintf(4096, "phar://%s%s", fname, entry); ZVAL_STR(&temp, Z_STR_P(stuff)); ZVAL_NEW_STR(stuff, str); - zend_hash_str_update(_SERVER, "PHAR_SCRIPT_FILENAME", sizeof("PHAR_SCRIPT_FILENAME")-1, &temp); + zend_hash_str_update(_SERVER, ZEND_STRL("PHAR_SCRIPT_FILENAME"), &temp); } } } @@ -321,10 +325,9 @@ static void phar_do_403(void) /* {{{ */ static void phar_do_404(phar_archive_data *phar, char *fname, size_t fname_len, zend_string *f404) /* {{{ */ { sapi_header_line ctr = {0}; - phar_entry_info *info; if (phar && f404 && ZSTR_LEN(f404)) { - info = phar_get_entry_info(phar, ZSTR_VAL(f404), ZSTR_LEN(f404), NULL, true); + phar_entry_info *info = phar_get_entry_info(phar, ZSTR_VAL(f404), ZSTR_LEN(f404), NULL, true); if (info) { /* Status doesn't matter, we're exiting anyway. */ @@ -346,7 +349,7 @@ static void phar_do_404(phar_archive_data *phar, char *fname, size_t fname_len, /* post-process REQUEST_URI and retrieve the actual request URI. This is for cases like http://localhost/blah.phar/path/to/file.php/extra/stuff which calls "blah.phar" file "path/to/file.php" with PATH_INFO "/extra/stuff" */ -static void phar_postprocess_ru_web(char *fname, size_t fname_len, char *entry, size_t *entry_len, char **ru, size_t *ru_len) /* {{{ */ +static void phar_postprocess_ru_web(const char *fname, size_t fname_len, char *entry, size_t *entry_len, char **ru, size_t *ru_len) /* {{{ */ { char *e = entry + 1, *u1 = NULL, *u = NULL, *saveu = NULL; size_t e_len = *entry_len - 1, u_len = 0; @@ -405,33 +408,27 @@ static void phar_postprocess_ru_web(char *fname, size_t fname_len, char *entry, */ PHP_METHOD(Phar, running) { - zend_string *fname; - char *arch; - size_t arch_len; bool retphar = true; if (zend_parse_parameters(ZEND_NUM_ARGS(), "|b", &retphar) == FAILURE) { RETURN_THROWS(); } - fname = zend_get_executed_filename_ex(); + const zend_string *fname = zend_get_executed_filename_ex(); if (!fname) { RETURN_EMPTY_STRING(); } - if ( - zend_string_starts_with_literal_ci(fname, "phar://") - && SUCCESS == phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 2, 0) - ) { - if (retphar) { - RETVAL_STRINGL(ZSTR_VAL(fname), arch_len + 7); - efree(arch); - return; - } else { - // TODO: avoid reallocation ??? - RETVAL_STRINGL(arch, arch_len); - efree(arch); - return; + if (zend_string_starts_with_literal_ci(fname, "phar://")) { + zend_string *arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 2, 0); + if (arch) { + if (retphar) { + RETVAL_STRINGL(ZSTR_VAL(fname), ZSTR_LEN(arch) + 7); + zend_string_release_ex(arch, false); + return; + } else { + RETURN_STR(arch); + } } } @@ -446,8 +443,8 @@ PHP_METHOD(Phar, running) */ PHP_METHOD(Phar, mount) { - char *fname, *arch = NULL, *entry = NULL, *path, *actual; - size_t fname_len, arch_len, entry_len; + char *fname, *path, *actual; + size_t fname_len; size_t path_len, actual_len; phar_archive_data *pphar; #ifdef PHP_WIN32 @@ -478,41 +475,39 @@ PHP_METHOD(Phar, mount) } #endif - if (fname_len > 7 && !memcmp(fname, "phar://", 7) && SUCCESS == phar_split_fname(fname, fname_len, &arch, &arch_len, NULL, NULL, 2, 0)) { - entry = NULL; - + zend_string *entry = NULL; + zend_string *arch = NULL; + if (fname_len > 7 && !memcmp(fname, "phar://", 7) && (arch = phar_split_fname(fname, fname_len, NULL, 2, 0))) { if (path_len > 7 && !memcmp(path, "phar://", 7)) { zend_throw_exception_ex(phar_ce_PharException, 0, "Can only mount internal paths within a phar archive, use a relative path instead of \"%s\"", path); - efree(arch); + zend_string_release_ex(arch, false); goto finish; } carry_on2: - if (NULL == (pphar = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), arch, arch_len))) { - if (PHAR_G(manifest_cached) && NULL != (pphar = zend_hash_str_find_ptr(&cached_phars, arch, arch_len))) { + pphar = zend_hash_find_ptr(&(PHAR_G(phar_fname_map)), arch); + if (!pphar) { + if (PHAR_G(manifest_cached) && NULL != (pphar = zend_hash_find_ptr(&cached_phars, arch))) { if (SUCCESS == phar_copy_on_write(&pphar)) { goto carry_on; } } - zend_throw_exception_ex(phar_ce_PharException, 0, "%s is not a phar archive, cannot mount", arch); - - if (arch) { - efree(arch); - } + zend_throw_exception_ex(phar_ce_PharException, 0, "%s is not a phar archive, cannot mount", ZSTR_VAL(arch)); + zend_string_release_ex(arch, false); goto finish; } carry_on: if (SUCCESS != phar_mount_entry(pphar, actual, actual_len, path, path_len)) { - zend_throw_exception_ex(phar_ce_PharException, 0, "Mounting of %s to %s within phar %s failed", path, actual, arch); + zend_throw_exception_ex(phar_ce_PharException, 0, "Mounting of %s to %s within phar %s failed", path, actual, ZSTR_VAL(arch)); } - if (entry && path == entry) { - efree(entry); + if (entry && path == ZSTR_VAL(entry)) { + zend_string_release_ex(entry, false); } if (arch) { - efree(arch); + zend_string_release_ex(arch, false); } goto finish; @@ -524,9 +519,9 @@ PHP_METHOD(Phar, mount) } goto carry_on; - } else if (SUCCESS == phar_split_fname(path, path_len, &arch, &arch_len, &entry, &entry_len, 2, 0)) { - path = entry; - path_len = entry_len; + } else if ((arch = phar_split_fname(path, path_len, &entry, 2, 0))) { + path = ZSTR_VAL(entry); + path_len = ZSTR_LEN(entry); goto carry_on2; } @@ -650,7 +645,12 @@ PHP_METHOD(Phar, webPhar) } else { char *testit = sapi_getenv("SCRIPT_NAME", sizeof("SCRIPT_NAME")-1); - if (!(pt = strstr(testit, basename))) { + if (!testit) { + goto finish; + } + + pt = strstr(testit, basename); + if (!pt) { efree(testit); goto finish; } @@ -676,7 +676,8 @@ PHP_METHOD(Phar, webPhar) } else { path_info = SG(request_info).request_uri; - if (!(pt = strstr(path_info, basename))) { + pt = strstr(path_info, basename); + if (!pt) { /* this can happen with rewrite rules - and we have no idea what to do then, so return */ goto finish; } @@ -1080,9 +1081,8 @@ static const spl_other_handler phar_spl_foreign_handler = { */ PHP_METHOD(Phar, __construct) { - char *fname, *alias = NULL, *error, *arch = NULL, *entry = NULL, *save_fname; + char *fname, *alias = NULL, *error, *save_fname; size_t fname_len, alias_len = 0; - size_t arch_len, entry_len; bool is_data; zend_long flags = SPL_FILE_DIR_SKIPDOTS|SPL_FILE_DIR_UNIXPATHS; zend_long format = 0; @@ -1110,32 +1110,25 @@ PHP_METHOD(Phar, __construct) } save_fname = fname; - if (SUCCESS == phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, !is_data, 2)) { + zend_string *entry = NULL; + /* phar_split_fname() will unixify the path */ + zend_string *arch = phar_split_fname(fname, fname_len, &entry, !is_data, 2); + if (arch) { /* use arch (the basename for the archive) for fname instead of fname */ /* this allows support for RecursiveDirectoryIterator of subdirectories */ -#ifdef PHP_WIN32 - phar_unixify_path_separators(arch, arch_len); -#endif - fname = arch; - fname_len = arch_len; -#ifdef PHP_WIN32 - } else { - arch = estrndup(fname, fname_len); - arch_len = fname_len; - fname = arch; - phar_unixify_path_separators(arch, arch_len); -#endif + fname = ZSTR_VAL(arch); + fname_len = ZSTR_LEN(arch); } if (phar_open_or_create_filename(fname, fname_len, alias, alias_len, is_data, REPORT_ERRORS, &phar_data, &error) == FAILURE) { - if (fname == arch && fname != save_fname) { - efree(arch); + if (arch && fname == ZSTR_VAL(arch) && fname != save_fname) { + zend_string_release_ex(arch, false); fname = save_fname; } if (entry) { - efree(entry); + zend_string_release_ex(entry, false); } if (error) { @@ -1155,8 +1148,8 @@ PHP_METHOD(Phar, __construct) phar_data->is_tar = false; } - if (fname == arch) { - efree(arch); + if (arch && fname == ZSTR_VAL(arch)) { + zend_string_release_ex(arch, false); fname = save_fname; } @@ -1168,7 +1161,7 @@ PHP_METHOD(Phar, __construct) zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "Phar class can only be used for executable tar and zip archives"); } - efree(entry); + zend_string_release_ex(entry, false); RETURN_THROWS(); } @@ -1181,20 +1174,29 @@ PHP_METHOD(Phar, __construct) phar_obj->archive = phar_data; phar_obj->spl.oth_handler = &phar_spl_foreign_handler; + zend_string *file_name_for_recursive_director_iterator_constructor; if (entry) { - fname_len = spprintf(&fname, 0, "phar://%s%s", phar_data->fname, entry); - efree(entry); + file_name_for_recursive_director_iterator_constructor = zend_string_concat3( + ZEND_STRL("phar://"), + phar_data->fname, phar_data->fname_len, + ZSTR_VAL(entry), ZSTR_LEN(entry) + ); + zend_string_release_ex(entry, false); } else { - fname_len = spprintf(&fname, 0, "phar://%s", phar_data->fname); + file_name_for_recursive_director_iterator_constructor = zend_string_concat2( + ZEND_STRL("phar://"), + phar_data->fname, phar_data->fname_len + ); } - ZVAL_STRINGL(&arg1, fname, fname_len); + ZVAL_STR(&arg1, file_name_for_recursive_director_iterator_constructor); ZVAL_LONG(&arg2, flags); zend_call_known_instance_method_with_2_params(spl_ce_RecursiveDirectoryIterator->constructor, Z_OBJ_P(ZEND_THIS), NULL, &arg1, &arg2); - zval_ptr_dtor(&arg1); + /* Freeing arg1 */ + zend_string_release_ex(file_name_for_recursive_director_iterator_constructor, false); if (!phar_data->is_persistent) { phar_obj->archive->is_data = is_data; @@ -1204,7 +1206,6 @@ PHP_METHOD(Phar, __construct) } phar_obj->spl.info_class = phar_ce_entry; - efree(fname); } /* }}} */ @@ -1254,9 +1255,8 @@ PHP_METHOD(Phar, getSupportedCompression) /* {{{ Completely remove a phar archive from memory and disk */ PHP_METHOD(Phar, unlinkArchive) { - char *fname, *error, *arch; + char *fname, *error; size_t fname_len; - size_t arch_len; phar_archive_data *phar; if (zend_parse_parameters(ZEND_NUM_ARGS(), "p", &fname, &fname_len) == FAILURE) { @@ -1278,19 +1278,17 @@ PHP_METHOD(Phar, unlinkArchive) RETURN_THROWS(); } - zend_string *zend_file_name = zend_get_executed_filename_ex(); - - if ( - zend_file_name - && zend_string_starts_with_literal_ci(zend_file_name, "phar://") - && SUCCESS == phar_split_fname(ZSTR_VAL(zend_file_name), ZSTR_LEN(zend_file_name), &arch, &arch_len, NULL, NULL, 2, 0) - ) { - if (arch_len == fname_len && !memcmp(arch, fname, arch_len)) { - zend_throw_exception_ex(phar_ce_PharException, 0, "phar archive \"%s\" cannot be unlinked from within itself", fname); - efree(arch); - RETURN_THROWS(); + const zend_string *zend_file_name = zend_get_executed_filename_ex(); + if (zend_file_name && zend_string_starts_with_literal_ci(zend_file_name, "phar://")) { + zend_string *arch = phar_split_fname(ZSTR_VAL(zend_file_name), ZSTR_LEN(zend_file_name), NULL, 2, 0); + if (arch) { + if (ZSTR_LEN(arch) == fname_len && !memcmp(ZSTR_VAL(arch), fname, ZSTR_LEN(arch))) { + zend_string_release_ex(arch, false); + zend_throw_exception_ex(phar_ce_PharException, 0, "phar archive \"%s\" cannot be unlinked from within itself", fname); + RETURN_THROWS(); + } + zend_string_release_ex(arch, false); } - efree(arch); } if (phar->is_persistent) { @@ -1307,7 +1305,8 @@ PHP_METHOD(Phar, unlinkArchive) /* invalidate phar cache */ PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; phar_archive_delref(phar); unlink(fname); @@ -1636,7 +1635,8 @@ static int phar_build(zend_object_iterator *iter, void *puser) /* {{{ */ return ZEND_HASH_APPLY_KEEP; } - if (!(data = phar_build_entry_data(phar_obj->archive->fname, phar_obj->archive->fname_len, str_key, str_key_len, &error, value))) { + data = phar_build_entry_data(phar_obj->archive->fname, phar_obj->archive->fname_len, str_key, str_key_len, &error, value); + if (!data) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Entry %s cannot be created: %s", str_key, error); efree(error); @@ -1915,7 +1915,7 @@ static zend_result phar_copy_file_contents(phar_entry_info *entry, php_stream *f char *error; zend_off_t offset; - ZEND_ASSERT(!entry->link); + ZEND_ASSERT(!entry->symlink); if (FAILURE == phar_open_entry_fp(entry, &error, true)) { if (error) { @@ -1947,7 +1947,6 @@ static zend_result phar_copy_file_contents(phar_entry_info *entry, php_stream *f static zend_object *phar_rename_archive(phar_archive_data **sphar, char *ext) /* {{{ */ { - const char *oldname = NULL; phar_archive_data *phar = *sphar; char *oldpath = NULL; char *basename = NULL, *basepath = NULL; @@ -1957,7 +1956,7 @@ static zend_object *phar_rename_archive(phar_archive_data **sphar, char *ext) /* char *error = NULL; const char *pcr_error; size_t ext_len = ext ? strlen(ext) : 0; - size_t new_len, oldname_len, phar_ext_len; + size_t new_len, phar_ext_len; phar_archive_data *pphar = NULL; php_stream_statbuf ssb; @@ -2038,25 +2037,27 @@ static zend_object *phar_rename_archive(phar_archive_data **sphar, char *ext) /* oldpath = estrndup(phar->fname, phar->fname_len); - if ((oldname = zend_memrchr(phar->fname, '/', phar->fname_len))) { - ++oldname; + + const char *old_name = zend_memrchr(phar->fname, '/', phar->fname_len); + if (old_name) { + ++old_name; } else { - oldname = phar->fname; + old_name = phar->fname; } - oldname_len = strlen(oldname); + size_t old_name_len = strlen(old_name); /* Copy the old name to create base for the new name */ - basename = estrndup(oldname, oldname_len); + basename = estrndup(old_name, old_name_len); phar_ext_list_len = sizeof(phar_ext_list)/sizeof(phar_ext_list[0]); /* Remove possible PHAR extensions */ /* phar_ext_list must be in order of longest extension to shortest */ for (i=0; i < phar_ext_list_len; i++) { phar_ext_len = strlen(phar_ext_list[i]); - if (phar_ext_len && oldname_len > phar_ext_len) { + if (phar_ext_len && old_name_len > phar_ext_len) { /* Check if the basename strings ends with the extension */ - if (memcmp(phar_ext_list[i], basename + (oldname_len - phar_ext_len), phar_ext_len) == 0) { - ext_pos = basename + (oldname_len - phar_ext_len); + if (memcmp(phar_ext_list[i], basename + (old_name_len - phar_ext_len), phar_ext_len) == 0) { + ext_pos = basename + (old_name_len - phar_ext_len); ext_pos[0] = '\0'; break; } @@ -2080,7 +2081,7 @@ static zend_object *phar_rename_archive(phar_archive_data **sphar, char *ext) /* spprintf(&newname, 0, "%s.%s", basename, ext); efree(basename); - basepath = estrndup(oldpath, (strlen(oldpath) - oldname_len)); + basepath = estrndup(oldpath, (strlen(oldpath) - old_name_len)); new_len = spprintf(&newpath, 0, "%s%s", basepath, newname); phar->fname_len = new_len; phar->fname = newpath; @@ -2123,7 +2124,7 @@ static zend_object *phar_rename_archive(phar_archive_data **sphar, char *ext) /* goto err_reused_oldpath; } if (!phar->is_data) { - if (SUCCESS != phar_detect_phar_fname_ext(newpath, phar->fname_len, (const char **) &(phar->ext), &ext_len, 1, 1, true)) { + if (SUCCESS != phar_detect_phar_fname_ext(newpath, phar->fname_len, &(phar->ext), &ext_len, 1, 1, true)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "phar \"%s\" has invalid extension %s", phar->fname, ext); goto err_reused_oldpath; } @@ -2146,7 +2147,7 @@ static zend_object *phar_rename_archive(phar_archive_data **sphar, char *ext) /* } else { - if (SUCCESS != phar_detect_phar_fname_ext(newpath, phar->fname_len, (const char **) &(phar->ext), &ext_len, 0, 1, true)) { + if (SUCCESS != phar_detect_phar_fname_ext(newpath, phar->fname_len, &(phar->ext), &ext_len, 0, 1, true)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "data phar \"%s\" has invalid extension %s", phar->fname, ext); goto err_reused_oldpath; } @@ -2210,7 +2211,8 @@ static zend_object *phar_convert_to_other(phar_archive_data *source, int convert /* invalidate phar cache */ PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; php_stream *tmp_fp = php_stream_fopen_tmpfile(); if (tmp_fp == NULL) { @@ -2255,8 +2257,8 @@ static zend_object *phar_convert_to_other(phar_archive_data *source, int convert newentry = *entry; - if (newentry.link) { - newentry.link = estrdup(newentry.link); + if (newentry.symlink) { + zend_string_addref(newentry.symlink); goto no_copy; } @@ -2640,7 +2642,7 @@ PHP_METHOD(Phar, getAlias) PHAR_ARCHIVE_OBJECT(); - if (phar_obj->archive->alias && phar_obj->archive->alias != phar_obj->archive->fname) { + if (phar_obj->archive->alias) { RETURN_STRINGL(phar_obj->archive->alias, phar_obj->archive->alias_len); } } @@ -2682,7 +2684,8 @@ PHP_METHOD(Phar, setAlias) /* invalidate phar cache */ PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; if (phar_obj->archive->is_data) { if (phar_obj->archive->is_tar) { @@ -2699,7 +2702,7 @@ PHP_METHOD(Phar, setAlias) RETURN_TRUE; } if (NULL != (fd_ptr = zend_hash_find_ptr(&(PHAR_G(phar_alias_map)), new_alias))) { - if (SUCCESS != phar_free_alias(fd_ptr, ZSTR_VAL(new_alias), ZSTR_LEN(new_alias))) { + if (SUCCESS != phar_free_alias(fd_ptr)) { zend_throw_exception_ex(phar_ce_PharException, 0, "alias \"%s\" is already used for archive \"%s\" and cannot be used for other archives", ZSTR_VAL(new_alias), fd_ptr->fname); RETURN_THROWS(); } @@ -3388,7 +3391,7 @@ PHP_METHOD(Phar, copy) { char *error; const char *pcr_error; - phar_entry_info *oldentry, newentry = {0}, *temp; + phar_entry_info newentry = {0}; zend_string *new_file = NULL; zend_string *old_file = NULL; @@ -3418,13 +3421,15 @@ PHP_METHOD(Phar, copy) RETURN_THROWS(); } - if (NULL == (oldentry = zend_hash_find_ptr(&phar_obj->archive->manifest, old_file)) || oldentry->is_deleted) { + phar_entry_info *oldentry = zend_hash_find_ptr(&phar_obj->archive->manifest, old_file); + if (!oldentry || oldentry->is_deleted) { zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "file \"%s\" cannot be copied to file \"%s\", file does not exist in %s", ZSTR_VAL(old_file), ZSTR_VAL(new_file), phar_obj->archive->fname); RETURN_THROWS(); } - if (NULL != (temp = zend_hash_find_ptr(&phar_obj->archive->manifest, new_file)) && !temp->is_deleted) { + const phar_entry_info *temp = zend_hash_find_ptr(&phar_obj->archive->manifest, new_file); + if (temp && !temp->is_deleted) { zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "file \"%s\" cannot be copied to file \"%s\", file must not already exist in phar %s", ZSTR_VAL(old_file), ZSTR_VAL(new_file), phar_obj->archive->fname); RETURN_THROWS(); @@ -3511,7 +3516,6 @@ PHP_METHOD(Phar, offsetExists) PHP_METHOD(Phar, offsetGet) { char *error; - phar_entry_info *entry; zend_string *file_name = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS(), "P", &file_name) == FAILURE) { @@ -3521,9 +3525,15 @@ PHP_METHOD(Phar, offsetGet) PHAR_ARCHIVE_OBJECT(); /* security is 0 here so that we can get a better error message than "entry doesn't exist" */ - if (!(entry = phar_get_entry_info_dir(phar_obj->archive, ZSTR_VAL(file_name), ZSTR_LEN(file_name), 1, &error, false))) { + phar_entry_info *entry = phar_get_entry_info_dir(phar_obj->archive, ZSTR_VAL(file_name), ZSTR_LEN(file_name), 1, &error, false); + if (!entry) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Entry %s does not exist%s%s", ZSTR_VAL(file_name), error?", ":"", error?error:""); } else { + if (entry->is_temp_dir) { + zend_string_efree(entry->filename); + efree(entry); + } + if (zend_string_equals_literal(file_name, ".phar/stub.php")) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot get stub \".phar/stub.php\" directly in phar \"%s\", use getStub", phar_obj->archive->fname); RETURN_THROWS(); @@ -3539,11 +3549,6 @@ PHP_METHOD(Phar, offsetGet) RETURN_THROWS(); } - if (entry->is_temp_dir) { - zend_string_efree(entry->filename); - efree(entry); - } - zend_string *sfname = strpprintf(0, "phar://%s/%s", phar_obj->archive->fname, ZSTR_VAL(file_name)); zval zfname; ZVAL_NEW_STR(&zfname, sfname); @@ -3562,7 +3567,6 @@ PHP_METHOD(Phar, offsetGet) static void phar_add_file(phar_archive_data **pphar, zend_string *file_name, const zend_string *content, zval *zresource) { char *error; - phar_entry_data *data; php_stream *contents_file = NULL; php_stream_statbuf ssb; #ifdef PHP_WIN32 @@ -3594,7 +3598,8 @@ static void phar_add_file(phar_archive_data **pphar, zend_string *file_name, con } #endif - if (!(data = phar_get_or_create_entry_data((*pphar)->fname, (*pphar)->fname_len, filename, filename_len, "w+b", 0, &error, true, time(NULL)))) { + phar_entry_data *data = phar_get_or_create_entry_data((*pphar)->fname, (*pphar)->fname_len, filename, filename_len, "w+b", 0, &error, true, time(NULL)); + if (!data) { if (error) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Entry %s does not exist and cannot be created: %s", filename, error); efree(error); @@ -3614,11 +3619,13 @@ static void phar_add_file(phar_archive_data **pphar, zend_string *file_name, con size_t written_len = php_stream_write(data->fp, ZSTR_VAL(content), ZSTR_LEN(content)); if (written_len != contents_len) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Entry %s could not be written to", filename); + phar_entry_delref(data); goto finish; } } else { if (!(php_stream_from_zval_no_verify(contents_file, zresource))) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Entry %s could not be written to", filename); + phar_entry_delref(data); goto finish; } php_stream_copy_to_stream_ex(contents_file, data->fp, PHP_STREAM_COPY_ALL, &contents_len); @@ -3664,9 +3671,9 @@ finish: ; static void phar_mkdir(phar_archive_data **pphar, zend_string *dir_name) { char *error; - phar_entry_data *data; + phar_entry_data *data = phar_get_or_create_entry_data((*pphar)->fname, (*pphar)->fname_len, ZSTR_VAL(dir_name), ZSTR_LEN(dir_name), "w+b", 2, &error, true, time(NULL)); - if (!(data = phar_get_or_create_entry_data((*pphar)->fname, (*pphar)->fname_len, ZSTR_VAL(dir_name), ZSTR_LEN(dir_name), "w+b", 2, &error, true, time(NULL)))) { + if (!data) { if (error) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Directory %s does not exist and cannot be created: %s", ZSTR_VAL(dir_name), error); efree(error); @@ -3738,7 +3745,6 @@ PHP_METHOD(Phar, offsetUnset) { char *error; zend_string *file_name; - phar_entry_info *entry; if (zend_parse_parameters(ZEND_NUM_ARGS(), "P", &file_name) == FAILURE) { RETURN_THROWS(); @@ -3752,7 +3758,8 @@ PHP_METHOD(Phar, offsetUnset) } if (zend_hash_exists(&phar_obj->archive->manifest, file_name)) { - if (NULL != (entry = zend_hash_find_ptr(&phar_obj->archive->manifest, file_name))) { + phar_entry_info *entry = zend_hash_find_ptr(&phar_obj->archive->manifest, file_name); + if (entry) { if (entry->is_deleted) { /* entry is deleted, but has not been flushed to disk yet */ return; @@ -3805,7 +3812,6 @@ PHP_METHOD(Phar, addFile) { zend_string *file_name; zend_string *local_name = NULL; - php_stream *resource; zval zresource; if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|S!", &file_name, &local_name) == FAILURE) { @@ -3819,7 +3825,8 @@ PHP_METHOD(Phar, addFile) RETURN_THROWS(); } - if (!(resource = php_stream_open_wrapper(ZSTR_VAL(file_name), "rb", 0, NULL))) { + php_stream *resource = php_stream_open_wrapper(ZSTR_VAL(file_name), "rb", 0, NULL); + if (!resource) { zend_throw_exception_ex(spl_ce_RuntimeException, 0, "phar error: unable to open file \"%s\" to add to phar archive", ZSTR_VAL(file_name)); RETURN_THROWS(); } @@ -3857,19 +3864,20 @@ PHP_METHOD(Phar, getStub) zend_string *buf; php_stream *fp; php_stream_filter *filter = NULL; - phar_entry_info *stub; ZEND_PARSE_PARAMETERS_NONE(); PHAR_ARCHIVE_OBJECT(); if (phar_obj->archive->is_tar || phar_obj->archive->is_zip) { + const phar_entry_info *stub = zend_hash_str_find_ptr(&(phar_obj->archive->manifest), ".phar/stub.php", sizeof(".phar/stub.php")-1); - if (NULL != (stub = zend_hash_str_find_ptr(&(phar_obj->archive->manifest), ".phar/stub.php", sizeof(".phar/stub.php")-1))) { + if (stub) { if (phar_obj->archive->fp && !phar_obj->archive->is_brandnew && !(stub->flags & PHAR_ENT_COMPRESSION_MASK)) { fp = phar_obj->archive->fp; } else { - if (!(fp = php_stream_open_wrapper(phar_obj->archive->fname, "rb", 0, NULL))) { + fp = php_stream_open_wrapper(phar_obj->archive->fname, "rb", 0, NULL); + if (!fp) { zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "phar error: unable to open phar \"%s\"", phar_obj->archive->fname); RETURN_THROWS(); } @@ -4386,11 +4394,9 @@ PHP_METHOD(Phar, extractTo) /* {{{ Construct a Phar entry object */ PHP_METHOD(PharFileInfo, __construct) { - char *fname, *arch, *entry, *error; + char *fname, *error; size_t fname_len; - size_t arch_len, entry_len; phar_entry_object *entry_obj; - phar_entry_info *entry_info; phar_archive_data *phar_data; zval arg1; @@ -4405,14 +4411,22 @@ PHP_METHOD(PharFileInfo, __construct) RETURN_THROWS(); } - if (fname_len < 7 || memcmp(fname, "phar://", 7) || phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, 2, 0) == FAILURE) { + if (fname_len < 7 || memcmp(fname, "phar://", 7)) { zend_throw_exception_ex(spl_ce_RuntimeException, 0, "'%s' is not a valid phar archive URL (must have at least phar://filename.phar)", fname); RETURN_THROWS(); } - if (phar_open_from_filename(arch, arch_len, NULL, 0, REPORT_ERRORS, &phar_data, &error) == FAILURE) { - efree(arch); + zend_string *entry = NULL; + zend_string *arch = phar_split_fname(fname, fname_len, &entry, 2, 0); + if (!arch) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0, + "'%s' is not a valid phar archive URL (must have at least phar://filename.phar)", fname); + RETURN_THROWS(); + } + + if (phar_open_from_filename(ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, REPORT_ERRORS, &phar_data, &error) == FAILURE) { + zend_string_release_ex(arch, false); efree(entry); if (error) { zend_throw_exception_ex(spl_ce_RuntimeException, 0, @@ -4425,16 +4439,18 @@ PHP_METHOD(PharFileInfo, __construct) RETURN_THROWS(); } - if ((entry_info = phar_get_entry_info_dir(phar_data, entry, entry_len, 1, &error, true)) == NULL) { + phar_entry_info *entry_info = phar_get_entry_info_dir(phar_data, ZSTR_VAL(entry), ZSTR_LEN(entry), 1, &error, true); + if (UNEXPECTED(!entry_info)) { zend_throw_exception_ex(spl_ce_RuntimeException, 0, - "Cannot access phar file entry '%s' in archive '%s'%s%s", entry, arch, error ? ", " : "", error ? error : ""); - efree(arch); - efree(entry); + "Cannot access phar file entry '%s' in archive '%s'%s%s", + ZSTR_VAL(entry), ZSTR_VAL(arch), error ? ", " : "", error ? error : ""); + zend_string_release_ex(entry, false); + zend_string_release_ex(arch, false); RETURN_THROWS(); } - efree(arch); - efree(entry); + zend_string_release_ex(entry, false); + zend_string_release_ex(arch, false); entry_obj->entry = entry_info; if (!entry_info->is_persistent && !entry_info->is_temp_dir) { @@ -4776,7 +4792,6 @@ PHP_METHOD(PharFileInfo, delMetadata) PHP_METHOD(PharFileInfo, getContent) { char *error; - php_stream *fp; phar_entry_info *link; zend_string *str; @@ -4803,7 +4818,8 @@ PHP_METHOD(PharFileInfo, getContent) RETURN_THROWS(); } - if (!(fp = phar_get_efp(link, false))) { + php_stream *fp = phar_get_efp(link, false); + if (!fp) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "phar error: Cannot retrieve contents of \"%s\" in phar \"%s\"", ZSTR_VAL(entry_obj->entry->filename), entry_obj->entry->phar->fname); RETURN_THROWS(); diff --git a/ext/phar/phar_path_check.re b/ext/phar/phar_path_check.re index 689ffaa51244..39b18bfc0b44 100644 --- a/ext/phar/phar_path_check.re +++ b/ext/phar/phar_path_check.re @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/phar/pharzip.h b/ext/phar/pharzip.h index 5c814747b692..5a827f7a7294 100644 --- a/ext/phar/pharzip.h +++ b/ext/phar/pharzip.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | diff --git a/ext/phar/php_phar.h b/ext/phar/php_phar.h index 18e3485fc3a9..f086f9cfff2d 100644 --- a/ext/phar/php_phar.h +++ b/ext/phar/php_phar.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | diff --git a/ext/phar/stream.c b/ext/phar/stream.c index 786b19551786..ea5f652dd566 100644 --- a/ext/phar/stream.c +++ b/ext/phar/stream.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar:// stream wrapper support | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | @@ -60,8 +58,7 @@ const php_stream_wrapper php_stream_phar_wrapper = { php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const char *mode, int options) /* {{{ */ { php_url *resource; - char *arch = NULL, *entry = NULL, *error; - size_t arch_len, entry_len; + char *error; if (strncasecmp(filename, "phar://", 7)) { return NULL; @@ -72,11 +69,14 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const } return NULL; } - if (phar_split_fname(filename, strlen(filename), &arch, &arch_len, &entry, &entry_len, 2, (mode[0] == 'w' ? 2 : 0)) == FAILURE) { + + zend_string *entry = NULL; + const char *arch_error = NULL; + zend_string *arch = phar_split_fname_ex(filename, strlen(filename), &entry, 2, (mode[0] == 'w' ? 2 : 0), &arch_error); + if (!arch) { if (!(options & PHP_STREAM_URL_STAT_QUIET)) { - if (arch && !entry) { - php_stream_wrapper_log_error(wrapper, options, "phar error: no directory in \"%s\", must have at least phar://%s/ for root directory (always use full path to a new phar)", filename, arch); - arch = NULL; + if (arch_error && !entry) { + php_stream_wrapper_log_error(wrapper, options, "phar error: no directory in \"%s\", must have at least phar://%s/ for root directory (always use full path to a new phar)", filename, arch_error); } else { php_stream_wrapper_log_error(wrapper, options, "phar error: invalid url or non-existent phar \"%s\"", filename); } @@ -85,10 +85,8 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const } resource = ecalloc(1, sizeof(php_url)); resource->scheme = ZSTR_INIT_LITERAL("phar", 0); - resource->host = zend_string_init(arch, arch_len, 0); - efree(arch); - resource->path = zend_string_init(entry, entry_len, 0); - efree(entry); + resource->host = arch; + resource->path = entry; #ifdef MBO_0 if (resource) { @@ -165,11 +163,11 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha char *internal_file; char *error; HashTable *pharcontext; - php_url *resource = NULL; php_stream *fpf; zval *pzoption, *metadata; - if ((resource = phar_parse_url(wrapper, path, mode, options)) == NULL) { + php_url *resource = phar_parse_url(wrapper, path, mode, options); + if (!resource) { return NULL; } @@ -322,7 +320,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha } if (!PHAR_G(cwd_init) && (options & STREAM_OPEN_FOR_INCLUDE)) { - char *entry = ZSTR_VAL(idata->internal_file->filename), *cwd; + const char *entry = ZSTR_VAL(idata->internal_file->filename), *cwd; PHAR_G(cwd_init) = 1; if ((idata->phar->is_tar || idata->phar->is_zip) && zend_string_equals_literal(idata->internal_file->filename, ".phar/stub.php")) { @@ -353,11 +351,11 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha static int phar_stream_close(php_stream *stream, int close_handle) /* {{{ */ { /* for some reasons phar needs to be flushed even if there is no write going on */ - phar_stream_flush(stream); + int ret = phar_stream_flush(stream); phar_entry_delref((phar_entry_data *)stream->abstract); - return 0; + return ret; } /* }}} */ @@ -370,7 +368,7 @@ static ssize_t phar_stream_read(php_stream *stream, char *buf, size_t count) /* ssize_t got; phar_entry_info *entry; - if (data->internal_file->link) { + if (data->internal_file->symlink) { entry = phar_get_link_source(data->internal_file); } else { entry = data->internal_file; @@ -402,7 +400,7 @@ static int phar_stream_seek(php_stream *stream, zend_off_t offset, int whence, z int res; zend_ulong temp; - if (data->internal_file->link) { + if (data->internal_file->symlink) { entry = phar_get_link_source(data->internal_file); } else { entry = data->internal_file; @@ -558,13 +556,12 @@ static int phar_stream_stat(php_stream *stream, php_stream_statbuf *ssb) /* {{{ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context) /* {{{ */ { - php_url *resource = NULL; char *internal_file; phar_archive_data *phar; - phar_entry_info *entry; size_t internal_file_len; - if ((resource = phar_parse_url(wrapper, url, "r", flags|PHP_STREAM_URL_STAT_QUIET)) == NULL) { + php_url *resource = phar_parse_url(wrapper, url, "r", flags|PHP_STREAM_URL_STAT_QUIET); + if (!resource) { return FAILURE; } @@ -599,7 +596,8 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f } internal_file_len = strlen(internal_file); /* search through the manifest of files, and if we have an exact match, it's a file */ - if (NULL != (entry = zend_hash_str_find_ptr(&phar->manifest, internal_file, internal_file_len))) { + phar_entry_info *entry = zend_hash_str_find_ptr(&phar->manifest, internal_file, internal_file_len); + if (entry) { phar_dostat(phar, entry, ssb, false); php_url_free(resource); return SUCCESS; @@ -638,7 +636,9 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f goto free_resource; } efree(test); - if (NULL == (entry = zend_hash_str_find_ptr(&phar->manifest, internal_file, internal_file_len))) { + + entry = zend_hash_str_find_ptr(&phar->manifest, internal_file, internal_file_len); + if (!entry) { goto free_resource; } phar_dostat(phar, entry, ssb, false); @@ -658,13 +658,13 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int f */ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context) /* {{{ */ { - php_url *resource; char *internal_file, *error; size_t internal_file_len; phar_entry_data *idata; phar_archive_data *pphar; - if ((resource = phar_parse_url(wrapper, url, "rb", options)) == NULL) { + php_url *resource = phar_parse_url(wrapper, url, "rb", options); + if (!resource) { php_stream_wrapper_log_error(wrapper, options, "phar error: unlink failed"); return 0; } @@ -730,16 +730,15 @@ static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context) /* {{{ */ { - php_url *resource_from, *resource_to; char *error; phar_archive_data *phar, *pfrom, *pto; - phar_entry_info *entry; bool is_dir = false; bool is_modified = false; error = NULL; - if ((resource_from = phar_parse_url(wrapper, url_from, "wb", options|PHP_STREAM_URL_STAT_QUIET)) == NULL) { + php_url *resource_from = phar_parse_url(wrapper, url_from, "wb", options|PHP_STREAM_URL_STAT_QUIET); + if (!resource_from) { php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid or non-writable url \"%s\"", url_from, url_to, url_from); return 0; } @@ -755,7 +754,8 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from return 0; } - if ((resource_to = phar_parse_url(wrapper, url_to, "wb", options|PHP_STREAM_URL_STAT_QUIET)) == NULL) { + php_url *resource_to = phar_parse_url(wrapper, url_to, "wb", options|PHP_STREAM_URL_STAT_QUIET); + if (!resource_to) { php_url_free(resource_from); php_error_docref(NULL, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\": invalid or non-writable url \"%s\"", url_from, url_to, url_to); return 0; @@ -824,7 +824,8 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from return 0; } - if (NULL != (entry = zend_hash_str_find_ptr(&(phar->manifest), ZSTR_VAL(resource_from->path)+1, ZSTR_LEN(resource_from->path)-1))) { + phar_entry_info *entry = zend_hash_str_find_ptr(&(phar->manifest), ZSTR_VAL(resource_from->path)+1, ZSTR_LEN(resource_from->path)-1); + if (entry) { phar_entry_info new, *source; /* perform rename magic */ @@ -840,7 +841,8 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from entry->is_deleted = 1; entry->fp = NULL; ZVAL_UNDEF(&entry->metadata_tracker.val); - entry->link = entry->tmp = NULL; + entry->symlink = NULL; + entry->tmp = NULL; source = entry; /* add to the manifest, and then store the pointer to the new guy in entry diff --git a/ext/phar/stream.h b/ext/phar/stream.h index 83b395b4cfca..cf40e3129c69 100644 --- a/ext/phar/stream.h +++ b/ext/phar/stream.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | diff --git a/ext/phar/stub.h b/ext/phar/stub.h index 2c62e05900ac..79887a62d7b8 100644 --- a/ext/phar/stub.h +++ b/ext/phar/stub.h @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | phar php single-file executable PHP extension generated stub | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | +----------------------------------------------------------------------+ diff --git a/ext/phar/tar.c b/ext/phar/tar.c index 0c93de243adc..0c042517125c 100644 --- a/ext/phar/tar.c +++ b/ext/phar/tar.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | TAR archive support for Phar | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Gregory Beaver | @@ -199,7 +197,7 @@ static zend_result phar_tar_process_metadata(phar_entry_info *entry, php_stream } /* }}} */ -zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error) /* {{{ */ +zend_result phar_parse_tarfile(php_stream* fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, phar_archive_data** pphar, uint32_t compression, char **error) /* {{{ */ { char buf[512], *actual_alias = NULL, *p; phar_entry_info entry = {0}; @@ -494,8 +492,8 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch entry.is_dir = 0; } - entry.link = NULL; - /* link field is null-terminated unless it has 100 non-null chars. + entry.symlink = NULL; + /* linkname field is null-terminated unless it has 100 non-null chars. * Thus we cannot use strlen. */ linkname_len = zend_strnlen(hdr->linkname, 100); if (entry.tar_type == TAR_LINK) { @@ -508,9 +506,9 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch phar_destroy_phar_data(myphar); return FAILURE; } - entry.link = estrndup(hdr->linkname, linkname_len); + entry.symlink = zend_string_init(hdr->linkname, linkname_len, false); } else if (entry.tar_type == TAR_SYMLINK) { - entry.link = estrndup(hdr->linkname, linkname_len); + entry.symlink = zend_string_init(hdr->linkname, linkname_len, false); } phar_set_inode(&entry); @@ -660,12 +658,10 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch myphar = actual; if (actual_alias) { - phar_archive_data *fd_ptr; - myphar->is_temporary_alias = 0; - - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), actual_alias, myphar->alias_len))) { - if (SUCCESS != phar_free_alias(fd_ptr, actual_alias, myphar->alias_len)) { + phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), actual_alias, myphar->alias_len); + if (fd_ptr) { + if (SUCCESS != phar_free_alias(fd_ptr)) { if (error) { spprintf(error, 4096, "phar error: Unable to add tar-based phar \"%s\", alias is already in use", fname); } @@ -676,11 +672,10 @@ zend_result phar_parse_tarfile(php_stream* fp, char *fname, size_t fname_len, ch zend_hash_str_add_ptr(&(PHAR_G(phar_alias_map)), actual_alias, myphar->alias_len, myphar); } else { - phar_archive_data *fd_ptr; - if (alias_len) { - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len))) { - if (SUCCESS != phar_free_alias(fd_ptr, alias, alias_len)) { + phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len); + if (fd_ptr) { + if (SUCCESS != phar_free_alias(fd_ptr)) { if (error) { spprintf(error, 4096, "phar error: Unable to add tar-based phar \"%s\", alias is already in use", fname); } @@ -781,10 +776,10 @@ static int phar_tar_writeheaders_int(phar_entry_info *entry, void *argument) /* /* calc checksum */ header.typeflag = entry->tar_type; - if (entry->link) { - if (strlcpy(header.linkname, entry->link, sizeof(header.linkname)) >= sizeof(header.linkname)) { + if (entry->symlink) { + if (strlcpy(header.linkname, ZSTR_VAL(entry->symlink), sizeof(header.linkname)) >= sizeof(header.linkname)) { if (fp->error) { - spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, link \"%s\" is too long for format", entry->phar->fname, entry->link); + spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, link \"%s\" is too long for format", entry->phar->fname, ZSTR_VAL(entry->symlink)); } return ZEND_HASH_APPLY_STOP; } @@ -911,7 +906,7 @@ ZEND_ATTRIBUTE_NONNULL static int phar_tar_setupmetadata(zval *zv, void *argumen { struct _phar_pass_tar_info *i = (struct _phar_pass_tar_info *)argument; char **error = i->error; - phar_entry_info *entry = (phar_entry_info *)Z_PTR_P(zv), *metadata, newentry = {0}; + phar_entry_info *entry = (phar_entry_info *)Z_PTR_P(zv), newentry = {0}; if (zend_string_starts_with_literal(entry->filename, ".phar/.metadata")) { if (zend_string_equals_literal(entry->filename, ".phar/.metadata.bin")) { @@ -939,7 +934,8 @@ ZEND_ATTRIBUTE_NONNULL static int phar_tar_setupmetadata(zval *zv, void *argumen return ZEND_HASH_APPLY_KEEP; } - if (NULL != (metadata = zend_hash_find_ptr(&entry->phar->manifest, lookfor))) { + phar_entry_info *metadata = zend_hash_find_ptr(&entry->phar->manifest, lookfor); + if (metadata) { int ret; ret = phar_tar_setmetadata(&entry->metadata_tracker, metadata, error); zend_string_efree(lookfor); @@ -951,7 +947,8 @@ ZEND_ATTRIBUTE_NONNULL static int phar_tar_setupmetadata(zval *zv, void *argumen newentry.tar_type = TAR_FILE; newentry.is_tar = 1; - if (NULL == (metadata = zend_hash_add_mem(&entry->phar->manifest, lookfor, &newentry, sizeof(phar_entry_info)))) { + metadata = zend_hash_add_mem(&entry->phar->manifest, lookfor, &newentry, sizeof(phar_entry_info)); + if (!metadata) { zend_string_efree(lookfor); spprintf(error, 0, "phar tar error: unable to add magic metadata file to manifest for file \"%s\"", ZSTR_VAL(entry->filename)); return ZEND_HASH_APPLY_STOP; @@ -1106,8 +1103,8 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_tar_flush(phar_archive_data *phar, ze pass.free_ufp = true; if (phar_metadata_tracker_has_data(&phar->metadata_tracker, phar->is_persistent)) { - phar_entry_info *mentry; - if (NULL != (mentry = zend_hash_str_find_ptr(&(phar->manifest), ".phar/.metadata.bin", sizeof(".phar/.metadata.bin")-1))) { + phar_entry_info *mentry = zend_hash_str_find_ptr(&(phar->manifest), ZEND_STRL(".phar/.metadata.bin")); + if (mentry) { if (ZEND_HASH_APPLY_KEEP != phar_tar_setmetadata(&phar->metadata_tracker, mentry, error)) { if (must_close_old_file) { php_stream_close(oldfile); @@ -1122,7 +1119,8 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_tar_flush(phar_archive_data *phar, ze newentry.tar_type = TAR_FILE; newentry.is_tar = 1; - if (NULL == (mentry = zend_hash_add_mem(&phar->manifest, newentry.filename, &newentry, sizeof(phar_entry_info)))) { + mentry = zend_hash_add_mem(&phar->manifest, newentry.filename, &newentry, sizeof(phar_entry_info)); + if (!mentry) { zend_string_efree(newentry.filename); spprintf(error, 0, "phar tar error: unable to add magic metadata file to manifest for phar archive \"%s\"", phar->fname); if (must_close_old_file) { diff --git a/ext/phar/tar.h b/ext/phar/tar.h index 55ce5501eeb1..80e4586e8db9 100644 --- a/ext/phar/tar.h +++ b/ext/phar/tar.h @@ -4,15 +4,13 @@ +----------------------------------------------------------------------+ | TAR archive support for Phar | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Gregory Beaver | diff --git a/ext/phar/tests/gh21797.phpt b/ext/phar/tests/gh21797.phpt new file mode 100644 index 000000000000..b24e30b7829a --- /dev/null +++ b/ext/phar/tests/gh21797.phpt @@ -0,0 +1,30 @@ +--TEST-- +GH-21797: Phar::webPhar() NULL dereference when SCRIPT_NAME absent from SAPI environment +--CGI-- +--EXTENSIONS-- +phar +--INI-- +phar.readonly=0 +phar.require_hash=0 +variables_order=EGPC +register_argc_argv=0 +cgi.fix_pathinfo=0 +--ENV-- +REQUEST_METHOD=GET +PATH_INFO=/gh21797.phar +--FILE-- +addFromString('index.php', ''); +$phar->setStub(''); +unset($phar); +include $fname; +?> +--CLEAN-- + +--EXPECT-- +no crash diff --git a/ext/phar/tests/gh21798-add-file-delref.phpt b/ext/phar/tests/gh21798-add-file-delref.phpt new file mode 100644 index 000000000000..fa893a1975e3 --- /dev/null +++ b/ext/phar/tests/gh21798-add-file-delref.phpt @@ -0,0 +1,29 @@ +--TEST-- +GH-21798: phar_add_file must call phar_entry_delref on write error paths +--EXTENSIONS-- +phar +--INI-- +phar.readonly=0 +phar.require_hash=0 +--FILE-- +addFromString('hello.txt', 'hello world'); +$phar->addFromString('empty.txt', ''); +unset($phar); + +$phar = new Phar($fname); +echo $phar['hello.txt']->getContent() . "\n"; +echo ($phar->offsetExists('empty.txt') ? 'empty exists' : 'missing') . "\n"; +echo "no crash\n"; +?> +--CLEAN-- + +--EXPECT-- +hello world +empty exists +no crash diff --git a/ext/phar/tests/gh21798-offsetget-temp-entry.phpt b/ext/phar/tests/gh21798-offsetget-temp-entry.phpt new file mode 100644 index 000000000000..b5b11ad43634 --- /dev/null +++ b/ext/phar/tests/gh21798-offsetget-temp-entry.phpt @@ -0,0 +1,39 @@ +--TEST-- +GH-21798: Phar::offsetGet() must free is_temp_dir entry before rejecting .phar/* paths +--EXTENSIONS-- +phar +--INI-- +phar.readonly=0 +phar.require_hash=0 +--FILE-- +addFromString('index.php', ''); +unset($phar); + +$phar = new Phar($fname); +try { + $phar->offsetGet('.phar/stub.php'); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} +try { + $phar->offsetGet('.phar/alias.txt'); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} +try { + $phar->offsetGet('.phar/internal'); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} +echo "no crash\n"; +?> +--CLEAN-- + +--EXPECT-- +Entry .phar/stub.php does not exist +Entry .phar/alias.txt does not exist +Entry .phar/internal does not exist +no crash diff --git a/ext/phar/tests/gh21799-stream-close-flush.phpt b/ext/phar/tests/gh21799-stream-close-flush.phpt new file mode 100644 index 000000000000..aaa6c17fac38 --- /dev/null +++ b/ext/phar/tests/gh21799-stream-close-flush.phpt @@ -0,0 +1,32 @@ +--TEST-- +GH-21799: phar_stream_close propagates phar_stream_flush return value +--EXTENSIONS-- +phar +--INI-- +phar.readonly=0 +phar.require_hash=0 +--FILE-- +addFromString('hello.txt', 'hello'); +unset($phar); + +$fp = fopen('phar://' . $fname . '/hello.txt', 'rb'); +$content = fread($fp, 1024); +$result = fclose($fp); + +echo $content . "\n"; +var_dump($result); +echo "no crash\n"; +?> +--CLEAN-- + +--EXPECT-- +hello +bool(true) +no crash diff --git a/ext/phar/tests/invalid_string_phar_mungserver.phpt b/ext/phar/tests/invalid_string_phar_mungserver.phpt index 46de113f6c08..8128987dacbc 100644 --- a/ext/phar/tests/invalid_string_phar_mungserver.phpt +++ b/ext/phar/tests/invalid_string_phar_mungserver.phpt @@ -1,5 +1,7 @@ --TEST-- Passing invalid string to Phar::mungServer() +--EXTENSIONS-- +phar --FILE-- addFromString('file.txt', 'hello'); +$phar->setStub(''); +include $fname; +?> +--CLEAN-- + +--EXPECT-- +regular entry (not a symlink): bool(false) +missing entry: bool(false) +absolute phar:// path (bypasses intercept): bool(false) diff --git a/ext/phar/util.c b/ext/phar/util.c index fdadc4d9b6bf..5cd51c65ba94 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -3,15 +3,13 @@ | phar php single-file executable PHP extension | | utility functions | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | | Marcus Boerger | @@ -36,54 +34,54 @@ #include #include #else -static zend_result phar_call_openssl_signverify(bool is_sign, php_stream *fp, zend_off_t end, char *key, size_t key_len, char **signature, size_t *signature_len, uint32_t sig_type); +static zend_result phar_call_openssl_signverify(bool is_sign, php_stream *fp, zend_off_t end, const char *key, size_t key_len, char **signature, size_t *signature_len, uint32_t sig_type); #endif /* for links to relative location, prepend cwd of the entry */ -static char *phar_get_link_location(phar_entry_info *entry) /* {{{ */ +static zend_string *phar_get_link_location(phar_entry_info *entry) /* {{{ */ { - char *p, *ret = NULL; - if (!entry->link) { - return NULL; - } - if (entry->link[0] == '/') { - return estrdup(entry->link + 1); + ZEND_ASSERT(entry->symlink); + + if (ZSTR_VAL(entry->symlink)[0] == '/') { + return zend_string_init(ZSTR_VAL(entry->symlink) + 1, ZSTR_LEN(entry->symlink) - 1, false); } - p = strrchr(ZSTR_VAL(entry->filename), '/'); + const char *p = strrchr(ZSTR_VAL(entry->filename), '/'); if (p) { /* Important: don't modify the original `p` data because it is a shared string. */ zend_string *new_name = zend_string_init(ZSTR_VAL(entry->filename), p - ZSTR_VAL(entry->filename), false); - spprintf(&ret, 0, "%s/%s", ZSTR_VAL(new_name), entry->link); + zend_string *location = zend_string_concat3( + ZSTR_VAL(new_name), ZSTR_LEN(new_name), + ZEND_STRL("/"), + ZSTR_VAL(entry->symlink), ZSTR_LEN(entry->symlink) + ); zend_string_release(entry->filename); entry->filename = new_name; - return ret; + return location; } - return entry->link; + return zend_string_copy(entry->symlink); } /* }}} */ phar_entry_info *phar_get_link_source(phar_entry_info *entry) /* {{{ */ { phar_entry_info *link_entry; - char *link; - if (!entry->link) { + if (!entry->symlink) { return entry; } - link = phar_get_link_location(entry); - if (NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), entry->link, strlen(entry->link))) || - NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), link, strlen(link)))) { - if (link != entry->link) { - efree(link); - } + link_entry = zend_hash_find_ptr(&(entry->phar->manifest), entry->symlink); + if (link_entry) { return phar_get_link_source(link_entry); - } else { - if (link != entry->link) { - efree(link); - } - return NULL; } + + zend_string *link = phar_get_link_location(entry); + link_entry = zend_hash_find_ptr(&(entry->phar->manifest), link); + zend_string_release(link); + if (link_entry) { + return phar_get_link_source(link_entry); + } + return NULL; } /* }}} */ @@ -98,7 +96,7 @@ static php_stream *phar_get_entrypufp(const phar_entry_info *entry) /* retrieve a phar_entry_info's current file pointer for reading contents */ php_stream *phar_get_efp(phar_entry_info *entry, bool follow_links) /* {{{ */ { - if (follow_links && entry->link) { + if (follow_links && entry->symlink) { phar_entry_info *link_entry = phar_get_link_source(entry); if (link_entry && link_entry != entry) { @@ -190,7 +188,7 @@ int phar_seek_efp(phar_entry_info *entry, zend_off_t offset, int whence, zend_of /* }}} */ /* mount an absolute path or uri to a path internal to the phar archive */ -zend_result phar_mount_entry(phar_archive_data *phar, char *filename, size_t filename_len, char *path, size_t path_len) /* {{{ */ +zend_result phar_mount_entry(phar_archive_data *phar, const char *filename, size_t filename_len, char *path, size_t path_len) /* {{{ */ { phar_entry_info entry = {0}; php_stream_statbuf ssb; @@ -268,8 +266,8 @@ zend_result phar_mount_entry(phar_archive_data *phar, char *filename, size_t fil zend_string *phar_find_in_include_path(zend_string *filename, phar_archive_data **pphar) /* {{{ */ { zend_string *ret; - char *path, *arch, *test; - size_t arch_len; + char *path; + zend_string *arch; phar_archive_data *phar; if (pphar) { @@ -296,21 +294,22 @@ zend_string *phar_find_in_include_path(zend_string *filename, phar_archive_data && ZSTR_LEN(fname) - length_phar_protocol >= PHAR_G(last_phar_name_len) && !memcmp(ZSTR_VAL(fname) + length_phar_protocol, PHAR_G(last_phar_name), PHAR_G(last_phar_name_len)) ) { - arch = estrndup(PHAR_G(last_phar_name), PHAR_G(last_phar_name_len)); - arch_len = PHAR_G(last_phar_name_len); + arch = zend_string_init(PHAR_G(last_phar_name), PHAR_G(last_phar_name_len), false); phar = PHAR_G(last_phar); goto splitted; } - if (!is_file_a_phar_wrapper || SUCCESS != phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), &arch, &arch_len, NULL, NULL, 1, 0)) { + if (!is_file_a_phar_wrapper) { + return NULL; + } + arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 1, 0); + if (!arch) { return NULL; } if (*ZSTR_VAL(filename) == '.') { - size_t try_len; - - if (FAILURE == phar_get_archive(&phar, arch, arch_len, NULL, 0, NULL)) { - efree(arch); + if (FAILURE == phar_get_archive(&phar, ZSTR_VAL(arch), ZSTR_LEN(arch), NULL, 0, NULL)) { + zend_string_release_ex(arch, false); return NULL; } splitted: @@ -318,45 +317,48 @@ zend_string *phar_find_in_include_path(zend_string *filename, phar_archive_data *pphar = phar; } - try_len = ZSTR_LEN(filename); - test = phar_fix_filepath(estrndup(ZSTR_VAL(filename), ZSTR_LEN(filename)), &try_len, 1); - - if (*test == '/') { - if (zend_hash_str_exists(&(phar->manifest), test + 1, try_len - 1)) { - ret = strpprintf(0, "phar://%s%s", arch, test); - efree(arch); - efree(test); + zend_string *test = phar_fix_filepath(ZSTR_VAL(filename), ZSTR_LEN(filename), true); + if (ZSTR_VAL(test)[0] == '/') { + if (zend_hash_str_exists(&(phar->manifest), ZSTR_VAL(test) + 1, ZSTR_LEN(test) - 1)) { + ret = zend_string_concat3( + "phar://", strlen("phar://"), + ZSTR_VAL(arch), ZSTR_LEN(arch), + ZSTR_VAL(test), ZSTR_LEN(test) + ); + zend_string_release_ex(test, false); + zend_string_release_ex(arch, false); return ret; } } else { - if (zend_hash_str_exists(&(phar->manifest), test, try_len)) { - ret = strpprintf(0, "phar://%s/%s", arch, test); - efree(arch); - efree(test); + if (zend_hash_exists(&(phar->manifest), test)) { + ret = strpprintf(0, "phar://%s/%s", ZSTR_VAL(arch), ZSTR_VAL(test)); + zend_string_release_ex(test, false); + zend_string_release_ex(arch, false); return ret; } } - efree(test); + zend_string_release_ex(test, false); } - spprintf(&path, MAXPATHLEN + 1 + strlen(PG(include_path)), "phar://%s/%s%c%s", arch, PHAR_G(cwd), DEFAULT_DIR_SEPARATOR, PG(include_path)); - efree(arch); + spprintf(&path, MAXPATHLEN + 1 + strlen(PG(include_path)), "phar://%s/%s%c%s", ZSTR_VAL(arch), PHAR_G(cwd), DEFAULT_DIR_SEPARATOR, PG(include_path)); + zend_string_release_ex(arch, false); ret = php_resolve_path(ZSTR_VAL(filename), ZSTR_LEN(filename), path); efree(path); if (ret && zend_string_starts_with_literal_ci(ret, "phar://")) { /* found phar:// */ - if (SUCCESS != phar_split_fname(ZSTR_VAL(ret), ZSTR_LEN(ret), &arch, &arch_len, NULL, NULL, 1, 0)) { + arch = phar_split_fname(ZSTR_VAL(fname), ZSTR_LEN(fname), NULL, 1, 0); + if (!arch) { return ret; } - *pphar = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), arch, arch_len); + *pphar = zend_hash_find_ptr(&(PHAR_G(phar_fname_map)), arch); if (!*pphar && PHAR_G(manifest_cached)) { - *pphar = zend_hash_str_find_ptr(&cached_phars, arch, arch_len); + *pphar = zend_hash_find_ptr(&cached_phars, arch); } - efree(arch); + zend_string_release_ex(arch, false); } return ret; @@ -385,9 +387,9 @@ static ZEND_ATTRIBUTE_NONNULL zend_result phar_create_writeable_entry(phar_archi } /* open a new temp file for writing */ - if (entry->link) { - efree(entry->link); - entry->link = NULL; + if (entry->symlink) { + zend_string_release(entry->symlink); + entry->symlink = NULL; entry->tar_type = (entry->is_tar ? TAR_FILE : '\0'); } @@ -442,9 +444,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result phar_separate_entry_fp(phar_entry_info return FAILURE; } - if (entry->link) { - efree(entry->link); - entry->link = NULL; + if (entry->symlink) { + zend_string_release(entry->symlink); + entry->symlink = NULL; entry->tar_type = (entry->is_tar ? TAR_FILE : '\0'); } @@ -464,7 +466,7 @@ ZEND_ATTRIBUTE_NONNULL static zend_result phar_separate_entry_fp(phar_entry_info * appended, truncated, or read. For read, if the entry is marked unmodified, it is * assumed that the file pointer, if present, is opened for reading */ -ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security) /* {{{ */ +ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, const char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security) /* {{{ */ { phar_archive_data *phar; phar_entry_info *entry; @@ -491,14 +493,16 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, ch } really_get_entry: if (allow_dir) { - if ((entry = phar_get_entry_info_dir(phar, path, path_len, allow_dir, for_create && !PHAR_G(readonly) && !phar->is_data ? NULL : error, security)) == NULL) { + entry = phar_get_entry_info_dir(phar, path, path_len, allow_dir, for_create && !PHAR_G(readonly) && !phar->is_data ? NULL : error, security); + if (!entry) { if (for_create && (!PHAR_G(readonly) || phar->is_data)) { return SUCCESS; } return FAILURE; } } else { - if ((entry = phar_get_entry_info(phar, path, path_len, for_create && !PHAR_G(readonly) && !phar->is_data ? NULL : error, security)) == NULL) { + entry = phar_get_entry_info(phar, path, path_len, for_create && !PHAR_G(readonly) && !phar->is_data ? NULL : error, security); + if (!entry) { if (for_create && (!PHAR_G(readonly) || phar->is_data)) { return SUCCESS; } @@ -557,9 +561,9 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, ch } } else { if (for_write) { - if (entry->link) { - efree(entry->link); - entry->link = NULL; + if (entry->symlink) { + zend_string_release(entry->symlink); + entry->symlink = NULL; entry->tar_type = (entry->is_tar ? TAR_FILE : '\0'); } @@ -584,7 +588,7 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, ch (*ret)->phar = phar; (*ret)->internal_file = entry; (*ret)->fp = phar_get_efp(entry, true); - if (entry->link) { + if (entry->symlink) { phar_entry_info *link = phar_get_link_source(entry); if(!link) { efree(*ret); @@ -610,7 +614,7 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_get_entry_data(phar_entry_data **ret, ch ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, bool security, uint32_t timestamp) /* {{{ */ { phar_archive_data *phar; - phar_entry_info *entry, etemp; + phar_entry_info etemp; phar_entry_data *ret; const char *pcr_error; char is_dir; @@ -680,7 +684,8 @@ ZEND_ATTRIBUTE_NONNULL phar_entry_data *phar_get_or_create_entry_data(char *fnam etemp.tar_type = etemp.is_dir ? TAR_DIR : TAR_FILE; } - if (NULL == (entry = zend_hash_add_mem(&phar->manifest, etemp.filename, &etemp, sizeof(phar_entry_info)))) { + phar_entry_info *entry = zend_hash_add_mem(&phar->manifest, etemp.filename, &etemp, sizeof(phar_entry_info)); + if (!entry) { php_stream_close(etemp.fp); spprintf(error, 0, "phar error: unable to add new entry \"%s\" to phar \"%s\"", ZSTR_VAL(etemp.filename), phar->fname); @@ -738,9 +743,9 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_copy_entry_fp(phar_entry_info *source, p return FAILURE; } - if (dest->link) { - efree(dest->link); - dest->link = NULL; + if (dest->symlink) { + zend_string_release(dest->symlink); + dest->symlink = NULL; dest->tar_type = (dest->is_tar ? TAR_FILE : '\0'); } @@ -805,7 +810,7 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_open_entry_fp(phar_entry_info *entry, ch php_stream *ufp; phar_entry_data dummy; - if (follow_links && entry->link) { + if (follow_links && entry->symlink) { phar_entry_info *link_entry = phar_get_link_source(entry); if (link_entry && link_entry != entry) { return phar_open_entry_fp(link_entry, error, true); @@ -931,7 +936,7 @@ ZEND_ATTRIBUTE_NONNULL phar_entry_info * phar_open_jit(const phar_archive_data * } /* }}} */ -zend_result phar_free_alias(phar_archive_data *phar, char *alias, size_t alias_len) /* {{{ */ +zend_result phar_free_alias(const phar_archive_data *phar) /* {{{ */ { if (phar->refcount || phar->is_persistent) { return FAILURE; @@ -944,7 +949,8 @@ zend_result phar_free_alias(phar_archive_data *phar, char *alias, size_t alias_l /* invalidate phar cache */ PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; return SUCCESS; } @@ -954,11 +960,10 @@ zend_result phar_free_alias(phar_archive_data *phar, char *alias, size_t alias_l * Looks up a phar archive in the filename map, connecting it to the alias * (if any) or returns null */ -zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fname_len, char *alias, size_t alias_len, char **error) /* {{{ */ +zend_result phar_get_archive(phar_archive_data **archive, const char *fname, size_t fname_len, const char *alias, size_t alias_len, char **error) /* {{{ */ { phar_archive_data *fd, *fd_ptr; - char *my_realpath, *save; - size_t save_len; + char *my_realpath; phar_request_initialize(); @@ -999,13 +1004,14 @@ zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fn } if (alias && alias_len) { - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len))) { + fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len); + if (fd_ptr) { alias_success: if (fname && (fname_len != fd_ptr->fname_len || strncmp(fname, fd_ptr->fname, fname_len))) { if (error) { spprintf(error, 0, "alias \"%s\" is already used for archive \"%s\" cannot be overloaded with \"%s\"", alias, fd_ptr->fname, fname); } - if (SUCCESS == phar_free_alias(fd_ptr, alias, alias_len)) { + if (SUCCESS == phar_free_alias(fd_ptr)) { if (error) { efree(*error); *error = NULL; @@ -1031,11 +1037,12 @@ zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fn } my_realpath = NULL; - save = fname; - save_len = fname_len; + const char *save = fname; + size_t save_len = fname_len; if (fname && fname_len) { - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), fname, fname_len))) { + fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), fname, fname_len); + if (fd_ptr) { *archive = fd_ptr; fd = fd_ptr; @@ -1087,7 +1094,8 @@ zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fn return SUCCESS; } - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), save, save_len))) { + fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), save, save_len); + if (fd_ptr) { fd = *archive = fd_ptr; PHAR_G(last_phar) = fd; @@ -1115,16 +1123,18 @@ zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fn my_realpath = expand_filepath(fname, my_realpath); if (my_realpath) { - fname_len = strlen(my_realpath); + size_t my_realpath_len = strlen(my_realpath); +#ifdef PHP_WIN32 + phar_unixify_path_separators(my_realpath, my_realpath_len); +#endif + fname_len = my_realpath_len; fname = my_realpath; } else { return FAILURE; } -#ifdef PHP_WIN32 - phar_unixify_path_separators(fname, fname_len); -#endif - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), fname, fname_len))) { + fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_fname_map)), fname, fname_len); + if (fd_ptr) { realpath_success: *archive = fd_ptr; fd = fd_ptr; @@ -1212,7 +1222,6 @@ phar_entry_info *phar_get_entry_info(phar_archive_data *phar, char *path, size_t phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, size_t path_len, char dir, char **error, bool security) /* {{{ */ { const char *pcr_error; - phar_entry_info *entry; bool is_dir; #ifdef PHP_WIN32 @@ -1257,7 +1266,8 @@ phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, si path_len--; } - if (NULL != (entry = zend_hash_str_find_ptr(&phar->manifest, path, path_len))) { + phar_entry_info *entry = zend_hash_str_find_ptr(&phar->manifest, path, path_len); + if (entry) { if (entry->is_deleted) { /* entry is deleted, but has not been flushed to disk yet */ return NULL; @@ -1301,7 +1311,8 @@ phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, si size_t test_len; php_stream_statbuf ssb; - if (NULL == (entry = zend_hash_find_ptr(&phar->manifest, str_key))) { + entry = zend_hash_find_ptr(&phar->manifest, str_key); + if (!entry) { if (error) { spprintf(error, 4096, "phar internal error: mounted path \"%s\" could not be retrieved from manifest", ZSTR_VAL(str_key)); } @@ -1350,7 +1361,8 @@ phar_entry_info *phar_get_entry_info_dir(phar_archive_data *phar, char *path, si efree(test); - if (NULL == (entry = zend_hash_str_find_ptr(&phar->manifest, path, path_len))) { + entry = zend_hash_str_find_ptr(&phar->manifest, path, path_len); + if (!entry) { if (error) { spprintf(error, 4096, "phar error: path \"%s\" exists as file \"%s\" and could not be retrieved after being mounted", path, test); } @@ -1384,7 +1396,7 @@ static int phar_hex_str(const char *digest, size_t digest_len, char **signature) /* }}} */ #ifndef PHAR_HAVE_OPENSSL -static zend_result phar_call_openssl_signverify(bool is_sign, php_stream *fp, zend_off_t end, char *key, size_t key_len, char **signature, size_t *signature_len, uint32_t sig_type) /* {{{ */ +static zend_result phar_call_openssl_signverify(bool is_sign, php_stream *fp, zend_off_t end, const char *key, size_t key_len, char **signature, size_t *signature_len, uint32_t sig_type) /* {{{ */ { zval retval, zp[4]; zend_string *str; @@ -1475,7 +1487,7 @@ static zend_result phar_call_openssl_signverify(bool is_sign, php_stream *fp, ze /* }}} */ #endif /* #ifndef PHAR_HAVE_OPENSSL */ -zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, char *sig, size_t sig_len, char *fname, char **signature, size_t *signature_len, char **error) /* {{{ */ +zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, char *sig, size_t sig_len, const char *fname, char **signature, size_t *signature_len, char **error) /* {{{ */ { size_t read_size, len; zend_off_t read_len; @@ -1519,17 +1531,22 @@ zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t s pfp = php_stream_open_wrapper(pfile, "rb", 0, NULL); efree(pfile); - if (!pfp || !(pubkey = php_stream_copy_to_mem(pfp, PHP_STREAM_COPY_ALL, 0)) || !ZSTR_LEN(pubkey)) { - if (pfp) { - php_stream_close(pfp); - } + if (!pfp) { if (error) { *error = estrdup("openssl public key could not be read"); } return FAILURE; } + pubkey = php_stream_copy_to_mem(pfp, PHP_STREAM_COPY_ALL, 0); php_stream_close(pfp); + if (!pubkey || !ZSTR_LEN(pubkey)) { + if (error) { + *error = estrdup("openssl public key could not be read"); + } + return FAILURE; + } + #ifndef PHAR_HAVE_OPENSSL tempsig = sig_len; @@ -1573,6 +1590,7 @@ zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t s if (md_ctx) { EVP_MD_CTX_destroy(md_ctx); } + EVP_PKEY_free(key); if (error) { *error = estrdup("openssl signature could not be verified"); } @@ -1961,7 +1979,7 @@ ZEND_ATTRIBUTE_NONNULL zend_result phar_create_signature(phar_archive_data *phar /* }}} */ // TODO: convert this to zend_string too -void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, size_t filename_len) /* {{{ */ +void phar_add_virtual_dirs(phar_archive_data *phar, const char *filename, size_t filename_len) /* {{{ */ { const char *s; zend_string *str; @@ -1992,8 +2010,8 @@ static int phar_update_cached_entry(zval *data, void *argument) /* {{{ */ entry->phar = (phar_archive_data *)argument; - if (entry->link) { - entry->link = estrdup(entry->link); + if (entry->symlink) { + zend_string_addref(entry->symlink); } if (entry->tmp) { @@ -2076,7 +2094,8 @@ zend_result phar_copy_on_write(phar_archive_data **pphar) /* {{{ */ newpphar = Z_PTR_P(pzv); /* invalidate phar cache */ PHAR_G(last_phar) = NULL; - PHAR_G(last_phar_name) = PHAR_G(last_alias) = NULL; + PHAR_G(last_alias) = NULL; + PHAR_G(last_phar_name) = NULL; if (newpphar->alias_len && NULL == zend_hash_str_add_ptr(&(PHAR_G(phar_alias_map)), newpphar->alias, newpphar->alias_len, newpphar)) { zend_hash_str_del(&(PHAR_G(phar_fname_map)), (*pphar)->fname, (*pphar)->fname_len); diff --git a/ext/phar/zip.c b/ext/phar/zip.c index c342c8868d3e..ec23603d9be9 100644 --- a/ext/phar/zip.c +++ b/ext/phar/zip.c @@ -2,15 +2,13 @@ +----------------------------------------------------------------------+ | ZIP archive support for Phar | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gregory Beaver | +----------------------------------------------------------------------+ @@ -226,7 +224,7 @@ static char *phar_find_eocd(const char *s, size_t n) * This is used by phar_open_from_fp to process a zip-based phar, but can be called * directly. */ -zend_result phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data** pphar, char **error) /* {{{ */ +zend_result phar_parse_zipfile(php_stream *fp, const char *fname, size_t fname_len, const char *alias, size_t alias_len, phar_archive_data** pphar, char **error) /* {{{ */ { phar_zip_dir_end locator; char buf[sizeof(locator) + 65536]; @@ -728,7 +726,6 @@ zend_result phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, ch zend_hash_str_add_ptr(&(PHAR_G(phar_fname_map)), mydata->fname, fname_len, mydata); if (actual_alias) { - phar_archive_data *fd_ptr; if (!phar_validate_alias(actual_alias, mydata->alias_len)) { if (error) { @@ -741,8 +738,9 @@ zend_result phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, ch mydata->is_temporary_alias = 0; - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), actual_alias, mydata->alias_len))) { - if (SUCCESS != phar_free_alias(fd_ptr, actual_alias, mydata->alias_len)) { + phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), actual_alias, mydata->alias_len); + if (fd_ptr) { + if (SUCCESS != phar_free_alias(fd_ptr)) { if (error) { spprintf(error, 4096, "phar error: Unable to add zip-based phar \"%s\" with implicit alias, alias is already in use", fname); } @@ -760,11 +758,10 @@ zend_result phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, ch zend_hash_str_add_ptr(&(PHAR_G(phar_alias_map)), mydata->alias, mydata->alias_len, mydata); } else { - phar_archive_data *fd_ptr; - if (alias_len) { - if (NULL != (fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len))) { - if (SUCCESS != phar_free_alias(fd_ptr, alias, alias_len)) { + phar_archive_data *fd_ptr = zend_hash_str_find_ptr(&(PHAR_G(phar_alias_map)), alias, alias_len); + if (fd_ptr) { + if (SUCCESS != phar_free_alias(fd_ptr)) { if (error) { spprintf(error, 4096, "phar error: Unable to add zip-based phar \"%s\" with explicit alias, alias is already in use", fname); } @@ -1281,7 +1278,7 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 4) int phar_zip_flush(phar_archive_data *phar, ze /* set stub */ if (user_stub && !is_default_stub) { - char *pos = php_stristr(ZSTR_VAL(user_stub), halt_stub, ZSTR_LEN(user_stub), strlen(halt_stub)); + const char *pos = php_stristr(ZSTR_VAL(user_stub), halt_stub, ZSTR_LEN(user_stub), strlen(halt_stub)); if (pos == NULL) { spprintf(error, 0, "illegal stub for zip-based phar \"%s\"", phar->fname); diff --git a/ext/posix/php_posix.h b/ext/posix/php_posix.h index 79e6fe83ef9e..82208bb63088 100644 --- a/ext/posix/php_posix.h +++ b/ext/posix/php_posix.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kristian Koehntopp | +----------------------------------------------------------------------+ diff --git a/ext/posix/posix.c b/ext/posix/posix.c index 76e14f6ecb0c..b44b73cc8dcf 100644 --- a/ext/posix/posix.c +++ b/ext/posix/posix.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kristian Koehntopp | +----------------------------------------------------------------------+ diff --git a/ext/random/csprng.c b/ext/random/csprng.c index 73832d7d0685..4c474fb86796 100644 --- a/ext/random/csprng.c +++ b/ext/random/csprng.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Tim Düsterhus | | Go Kudo | diff --git a/ext/random/engine_mt19937.c b/ext/random/engine_mt19937.c index f2cb2fd7e9bc..a84fb9585c80 100644 --- a/ext/random/engine_mt19937.c +++ b/ext/random/engine_mt19937.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | @@ -391,11 +389,11 @@ PHP_METHOD(Random_Engine_Mt19937, __debugInfo) if (engine->engine.algo->serialize) { array_init(&t); + zend_hash_str_add(Z_ARR_P(return_value), "__states", strlen("__states"), &t); if (!engine->engine.algo->serialize(engine->engine.state, Z_ARRVAL(t))) { zend_throw_exception(NULL, "Engine serialize failed", 0); RETURN_THROWS(); } - zend_hash_str_add(Z_ARR_P(return_value), "__states", strlen("__states"), &t); } } /* }}} */ diff --git a/ext/random/engine_pcgoneseq128xslrr64.c b/ext/random/engine_pcgoneseq128xslrr64.c index 9ff4f911920b..9472ce918fef 100644 --- a/ext/random/engine_pcgoneseq128xslrr64.c +++ b/ext/random/engine_pcgoneseq128xslrr64.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Go Kudo | | | diff --git a/ext/random/engine_secure.c b/ext/random/engine_secure.c index 0a03a03bdf13..1fd0748e2b81 100644 --- a/ext/random/engine_secure.c +++ b/ext/random/engine_secure.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sammy Kaye Powers | | Go Kudo | diff --git a/ext/random/engine_user.c b/ext/random/engine_user.c index 955ddebdb99a..f759613ea8cf 100644 --- a/ext/random/engine_user.c +++ b/ext/random/engine_user.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Go Kudo | +----------------------------------------------------------------------+ diff --git a/ext/random/engine_xoshiro256starstar.c b/ext/random/engine_xoshiro256starstar.c index 1a054362f065..8dd0156dcb2d 100644 --- a/ext/random/engine_xoshiro256starstar.c +++ b/ext/random/engine_xoshiro256starstar.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Go Kudo | | | @@ -151,6 +149,10 @@ static bool unserialize(void *state, HashTable *data) } } + if (UNEXPECTED(s->state[0] == 0 && s->state[1] == 0 && s->state[2] == 0 && s->state[3] == 0)) { + return false; + } + return true; } diff --git a/ext/random/gammasection.c b/ext/random/gammasection.c index 732f8a2b0d9b..ef0352773a77 100644 --- a/ext/random/gammasection.c +++ b/ext/random/gammasection.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Tim Düsterhus | | | diff --git a/ext/random/php_random.h b/ext/random/php_random.h index e4d6b4bdf3d9..df53ad3fc55e 100644 --- a/ext/random/php_random.h +++ b/ext/random/php_random.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | diff --git a/ext/random/php_random_csprng.h b/ext/random/php_random_csprng.h index 7fb0d7357f61..6028bbf62522 100644 --- a/ext/random/php_random_csprng.h +++ b/ext/random/php_random_csprng.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Tim Düsterhus | | Go Kudo | diff --git a/ext/random/php_random_uint128.h b/ext/random/php_random_uint128.h index 8c484ce5ba9f..22c0444e5094 100644 --- a/ext/random/php_random_uint128.h +++ b/ext/random/php_random_uint128.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Tim Düsterhus | | Go Kudo | diff --git a/ext/random/php_random_zend_utils.h b/ext/random/php_random_zend_utils.h index db37805904cb..5feba450f109 100644 --- a/ext/random/php_random_zend_utils.h +++ b/ext/random/php_random_zend_utils.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Arnaud Le Blanc | | Tim Düsterhus | diff --git a/ext/random/random.c b/ext/random/random.c index f9feaadcbb15..dbc7ee50a080 100644 --- a/ext/random/random.c +++ b/ext/random/random.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sammy Kaye Powers | | Go Kudo | diff --git a/ext/random/randomizer.c b/ext/random/randomizer.c index a576cd12955a..0738380ca253 100644 --- a/ext/random/randomizer.c +++ b/ext/random/randomizer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Go Kudo | +----------------------------------------------------------------------+ diff --git a/ext/random/tests/02_engine/xoshiro256starstar_unserialize_zero_state.phpt b/ext/random/tests/02_engine/xoshiro256starstar_unserialize_zero_state.phpt new file mode 100644 index 000000000000..6ebcd03e8570 --- /dev/null +++ b/ext/random/tests/02_engine/xoshiro256starstar_unserialize_zero_state.phpt @@ -0,0 +1,14 @@ +--TEST-- +GH-21731: Xoshiro256StarStar::__unserialize() must reject the all-zero state +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +Invalid serialization data for Random\Engine\Xoshiro256StarStar object diff --git a/ext/random/zend_utils.c b/ext/random/zend_utils.c index 64ba2c87ef70..19067f343afb 100644 --- a/ext/random/zend_utils.c +++ b/ext/random/zend_utils.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Arnaud Le Blanc | | Tim Düsterhus | diff --git a/ext/readline/php_readline.h b/ext/readline/php_readline.h index f67238db663a..c1a337713069 100644 --- a/ext/readline/php_readline.h +++ b/ext/readline/php_readline.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/readline/readline.c b/ext/readline/readline.c index b9671ac1caa0..cbc0ebdd8713 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/readline/readline_cli.c b/ext/readline/readline_cli.c index 312129991c70..01c997a1ccaa 100644 --- a/ext/readline/readline_cli.c +++ b/ext/readline/readline_cli.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | | Johannes Schlueter | diff --git a/ext/readline/readline_cli.h b/ext/readline/readline_cli.h index 6db09ce991ce..31c21d8eedc1 100644 --- a/ext/readline/readline_cli.h +++ b/ext/readline/readline_cli.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | | Johannes Schlueter | diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 957339b869ef..e74b7fcb27a7 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Timm Friebe | | George Schlossnagle | @@ -1516,7 +1514,7 @@ static void reflection_type_factory(zend_type type, zval *object, bool legacy_be case NAMED_TYPE: object_init_ex(object, reflection_named_type_ptr); break; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } intern = Z_REFLECTION_P(object); @@ -2649,6 +2647,22 @@ ZEND_METHOD(ReflectionParameter, __toString) /* }}} */ +/* {{{ Returns the doc comment for this parameter */ +ZEND_METHOD(ReflectionParameter, getDocComment) +{ + reflection_object *intern; + parameter_reference *param; + + ZEND_PARSE_PARAMETERS_NONE(); + + GET_REFLECTION_OBJECT_PTR(param); + if (param->arg_info->doc_comment) { + RETURN_STR_COPY(param->arg_info->doc_comment); + } + RETURN_FALSE; +} +/* }}} */ + /* {{{ Returns this parameter's name */ ZEND_METHOD(ReflectionParameter, getName) { @@ -6653,7 +6667,7 @@ static zend_always_inline uint32_t set_visibility_to_visibility(uint32_t set_vis return ZEND_ACC_PROTECTED; case ZEND_ACC_PRIVATE_SET: return ZEND_ACC_PRIVATE; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/reflection/php_reflection.h b/ext/reflection/php_reflection.h index dc2240734298..ba03f1d9ac2d 100644 --- a/ext/reflection/php_reflection.h +++ b/ext/reflection/php_reflection.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: George Schlossnagle | +----------------------------------------------------------------------+ diff --git a/ext/reflection/php_reflection.stub.php b/ext/reflection/php_reflection.stub.php index b0273a3174f8..dd605100f8ba 100644 --- a/ext/reflection/php_reflection.stub.php +++ b/ext/reflection/php_reflection.stub.php @@ -652,6 +652,8 @@ public function __construct($function, int|string $param) {} public function __toString(): string {} + public function getDocComment(): string|false {} + /** @tentative-return-type */ public function getName(): string {} diff --git a/ext/reflection/php_reflection_arginfo.h b/ext/reflection/php_reflection_arginfo.h index 66605a22bbd6..65571f38d43c 100644 --- a/ext/reflection/php_reflection_arginfo.h +++ b/ext/reflection/php_reflection_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit php_reflection.stub.php instead. - * Stub hash: 267472e2b726ca5e788eb5cc3e946bc9aa7c9c41 + * Stub hash: c80946cc8c8215bb6527e09bb71b3a97a76a6a98 * Has decl header: yes */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0) @@ -526,6 +526,9 @@ ZEND_END_ARG_INFO() #define arginfo_class_ReflectionParameter___toString arginfo_class_ReflectionFunction___toString +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_ReflectionParameter_getDocComment, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) +ZEND_END_ARG_INFO() + #define arginfo_class_ReflectionParameter_getName arginfo_class_ReflectionFunctionAbstract_getName #define arginfo_class_ReflectionParameter_isPassedByReference arginfo_class_ReflectionFunctionAbstract_inNamespace @@ -721,13 +724,12 @@ ZEND_END_ARG_INFO() #define arginfo_class_ReflectionConstant_isDeprecated arginfo_class_ReflectionFunctionAbstract_hasTentativeReturnType -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_ReflectionConstant_getFileName, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) -ZEND_END_ARG_INFO() +#define arginfo_class_ReflectionConstant_getFileName arginfo_class_ReflectionParameter_getDocComment ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_ReflectionConstant_getExtension, 0, 0, ReflectionExtension, 1) ZEND_END_ARG_INFO() -#define arginfo_class_ReflectionConstant_getExtensionName arginfo_class_ReflectionConstant_getFileName +#define arginfo_class_ReflectionConstant_getExtensionName arginfo_class_ReflectionParameter_getDocComment #define arginfo_class_ReflectionConstant___toString arginfo_class_ReflectionFunction___toString @@ -921,6 +923,7 @@ ZEND_METHOD(ReflectionClassConstant, hasType); ZEND_METHOD(ReflectionClassConstant, getType); ZEND_METHOD(ReflectionParameter, __construct); ZEND_METHOD(ReflectionParameter, __toString); +ZEND_METHOD(ReflectionParameter, getDocComment); ZEND_METHOD(ReflectionParameter, getName); ZEND_METHOD(ReflectionParameter, isPassedByReference); ZEND_METHOD(ReflectionParameter, canBePassedByValue); @@ -1237,6 +1240,7 @@ static const zend_function_entry class_ReflectionParameter_methods[] = { ZEND_RAW_FENTRY("__clone", zim_ReflectionClass___clone, arginfo_class_ReflectionParameter___clone, ZEND_ACC_PRIVATE, NULL, NULL) ZEND_ME(ReflectionParameter, __construct, arginfo_class_ReflectionParameter___construct, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionParameter, __toString, arginfo_class_ReflectionParameter___toString, ZEND_ACC_PUBLIC) + ZEND_ME(ReflectionParameter, getDocComment, arginfo_class_ReflectionParameter_getDocComment, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionParameter, getName, arginfo_class_ReflectionParameter_getName, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionParameter, isPassedByReference, arginfo_class_ReflectionParameter_isPassedByReference, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionParameter, canBePassedByValue, arginfo_class_ReflectionParameter_canBePassedByValue, ZEND_ACC_PUBLIC) diff --git a/ext/reflection/php_reflection_decl.h b/ext/reflection/php_reflection_decl.h index a5e8affd0beb..a87e1635419b 100644 --- a/ext/reflection/php_reflection_decl.h +++ b/ext/reflection/php_reflection_decl.h @@ -1,12 +1,12 @@ /* This is a generated file, edit php_reflection.stub.php instead. - * Stub hash: 267472e2b726ca5e788eb5cc3e946bc9aa7c9c41 */ + * Stub hash: c80946cc8c8215bb6527e09bb71b3a97a76a6a98 */ -#ifndef ZEND_PHP_REFLECTION_DECL_267472e2b726ca5e788eb5cc3e946bc9aa7c9c41_H -#define ZEND_PHP_REFLECTION_DECL_267472e2b726ca5e788eb5cc3e946bc9aa7c9c41_H +#ifndef ZEND_PHP_REFLECTION_DECL_c80946cc8c8215bb6527e09bb71b3a97a76a6a98_H +#define ZEND_PHP_REFLECTION_DECL_c80946cc8c8215bb6527e09bb71b3a97a76a6a98_H typedef enum zend_enum_PropertyHookType { ZEND_ENUM_PropertyHookType_Get = 1, ZEND_ENUM_PropertyHookType_Set = 2, } zend_enum_PropertyHookType; -#endif /* ZEND_PHP_REFLECTION_DECL_267472e2b726ca5e788eb5cc3e946bc9aa7c9c41_H */ +#endif /* ZEND_PHP_REFLECTION_DECL_c80946cc8c8215bb6527e09bb71b3a97a76a6a98_H */ diff --git a/ext/reflection/tests/ReflectionExtension_getClassNames_basic.phpt b/ext/reflection/tests/ReflectionExtension_getClassNames_basic.phpt index 47813255381e..9d1210705096 100644 --- a/ext/reflection/tests/ReflectionExtension_getClassNames_basic.phpt +++ b/ext/reflection/tests/ReflectionExtension_getClassNames_basic.phpt @@ -15,6 +15,7 @@ foreach ($classNames as $className) { AssertionError Directory RoundingMode +SortDirection StreamBucket __PHP_Incomplete_Class php_user_filter diff --git a/ext/reflection/tests/ReflectionParameter_getDocComment_basic.phpt b/ext/reflection/tests/ReflectionParameter_getDocComment_basic.phpt new file mode 100644 index 000000000000..46e47bf60324 --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_getDocComment_basic.phpt @@ -0,0 +1,248 @@ +--TEST-- +Test ReflectionParameter::getDocComment() usage. +--INI-- +opcache.save_comments=1 +--FILE-- +property = $value; } +} +} + +function global_function( + /** + * My Doc Comment for $a + * + */ + $a, $b, $c, + /** + * My Doc Comment for $d + */ + $d, + // Not a doc comment + /**Not a doc comment */ + $e, + /** + * Doc comment for $f + */ + $f, + $g /** Doc comment for $g after parameter */, + /** Doc comment for $h */ + $h /** Doc comment for $h after parameter */, +) {} + +$closure = function( + /** + * My Doc Comment for $a + * + */ + $a, $b, $c, + /** + * My Doc Comment for $d + */ + $d, + // Not a doc comment + /**Not a doc comment */ + $e, + /** + * Doc comment for $f + */ + $f, + $g /** Doc comment for $g after parameter */, + /** Doc comment for $h */ + $h /** Doc comment for $h after parameter */, +) {}; + +$arrow_function = fn( + /** + * My Doc Comment for $a + * + */ + $a, $b, $c, + /** + * My Doc Comment for $d + */ + $d, + // Not a doc comment + /**Not a doc comment */ + $e, + /** + * Doc comment for $f + */ + $f, + $g /** Doc comment for $g after parameter */, + /** Doc comment for $h */ + $h /** Doc comment for $h after parameter */, +) => true; + +foreach([ + 'A::method' => (new ReflectionClass('A'))->getMethod('method'), + 'global_function' => new ReflectionFunction('global_function'), + 'closure' => new ReflectionFunction($closure), + 'arrow_function' => new ReflectionFunction($arrow_function), + 'property hook' => (new ReflectionClass('A'))->getProperty('property')->getHook(PropertyHookType::Set), + ] as $function => $rc) { + $rps = $rc->getParameters(); + foreach($rps as $rp) { + echo "\n---> Doc comment for $function parameter $" . $rp->getName() . ":\n"; + var_dump($rp->getDocComment()); + } +} + +?> +--EXPECTF-- +---> Doc comment for A::method parameter $a: +string(%d) "/** + * My Doc Comment for $a + * + */" + +---> Doc comment for A::method parameter $b: +bool(false) + +---> Doc comment for A::method parameter $c: +bool(false) + +---> Doc comment for A::method parameter $d: +string(%d) "/** + * My Doc Comment for $d + */" + +---> Doc comment for A::method parameter $e: +bool(false) + +---> Doc comment for A::method parameter $f: +string(%d) "/** + * Doc comment for $f + */" + +---> Doc comment for A::method parameter $g: +string(%d) "/** Doc comment for $g after parameter */" + +---> Doc comment for A::method parameter $h: +string(%d) "/** Doc comment for $h after parameter */" + +---> Doc comment for global_function parameter $a: +string(%d) "/** + * My Doc Comment for $a + * + */" + +---> Doc comment for global_function parameter $b: +bool(false) + +---> Doc comment for global_function parameter $c: +bool(false) + +---> Doc comment for global_function parameter $d: +string(%d) "/** + * My Doc Comment for $d + */" + +---> Doc comment for global_function parameter $e: +bool(false) + +---> Doc comment for global_function parameter $f: +string(%d) "/** + * Doc comment for $f + */" + +---> Doc comment for global_function parameter $g: +string(%d) "/** Doc comment for $g after parameter */" + +---> Doc comment for global_function parameter $h: +string(%d) "/** Doc comment for $h after parameter */" + +---> Doc comment for closure parameter $a: +string(%d) "/** + * My Doc Comment for $a + * + */" + +---> Doc comment for closure parameter $b: +bool(false) + +---> Doc comment for closure parameter $c: +bool(false) + +---> Doc comment for closure parameter $d: +string(%d) "/** + * My Doc Comment for $d + */" + +---> Doc comment for closure parameter $e: +bool(false) + +---> Doc comment for closure parameter $f: +string(%d) "/** + * Doc comment for $f + */" + +---> Doc comment for closure parameter $g: +string(%d) "/** Doc comment for $g after parameter */" + +---> Doc comment for closure parameter $h: +string(%d) "/** Doc comment for $h after parameter */" + +---> Doc comment for arrow_function parameter $a: +string(%d) "/** + * My Doc Comment for $a + * + */" + +---> Doc comment for arrow_function parameter $b: +bool(false) + +---> Doc comment for arrow_function parameter $c: +bool(false) + +---> Doc comment for arrow_function parameter $d: +string(%d) "/** + * My Doc Comment for $d + */" + +---> Doc comment for arrow_function parameter $e: +bool(false) + +---> Doc comment for arrow_function parameter $f: +string(%d) "/** + * Doc comment for $f + */" + +---> Doc comment for arrow_function parameter $g: +string(%d) "/** Doc comment for $g after parameter */" + +---> Doc comment for arrow_function parameter $h: +string(%d) "/** Doc comment for $h after parameter */" + +---> Doc comment for property hook parameter $value: +string(%d) "/** Doc Comment for property hook parameter $value */" + diff --git a/ext/reflection/tests/ReflectionParameter_getDocComment_indented.phpt b/ext/reflection/tests/ReflectionParameter_getDocComment_indented.phpt new file mode 100644 index 000000000000..ede7a00e0edd --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_getDocComment_indented.phpt @@ -0,0 +1,84 @@ +--TEST-- +Test ReflectionParameter::getDocComment() usage when methods are indented. +--INI-- +opcache.save_comments=1 +--FILE-- +property = $value; } + } +} + +foreach([ + 'A::method' => (new ReflectionClass('A'))->getMethod('method'), + 'property hook' => (new ReflectionClass('A'))->getProperty('property')->getHook(PropertyHookType::Set), + ] as $function => $rc) { + $rps = $rc->getParameters(); + foreach($rps as $rp) { + echo "\n---> Doc comment for $function parameter $" . $rp->getName() . ":\n"; + var_dump($rp->getDocComment()); + } +} + +?> +--EXPECTF-- +---> Doc comment for A::method parameter $a: +string(%d) "/** + * My Doc Comment for $a + * + */" + +---> Doc comment for A::method parameter $b: +bool(false) + +---> Doc comment for A::method parameter $c: +bool(false) + +---> Doc comment for A::method parameter $d: +string(%d) "/** + * My Doc Comment for $d + */" + +---> Doc comment for A::method parameter $e: +bool(false) + +---> Doc comment for A::method parameter $f: +string(%d) "/** + * Doc comment for $f + */" + +---> Doc comment for A::method parameter $g: +string(%d) "/** Doc comment for $g after parameter */" + +---> Doc comment for A::method parameter $h: +string(%d) "/** Doc comment for $h after parameter */" + +---> Doc comment for property hook parameter $value: +string(%d) "/** Doc Comment for property hook parameter $value */" diff --git a/ext/reflection/tests/ReflectionParameter_getDocComment_property_hooks.phpt b/ext/reflection/tests/ReflectionParameter_getDocComment_property_hooks.phpt new file mode 100644 index 000000000000..5689a2c46aca --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_getDocComment_property_hooks.phpt @@ -0,0 +1,143 @@ +--TEST-- +Test ReflectionParameter::getDocComment() usage for property with hook. +--INI-- +opcache.save_comments=1 +--FILE-- +getProperty('foo'); +echo "\n---> Doc comment for A::property $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +$rh = $rp->getHook(PropertyHookType::Get); +echo "\n---> Doc comment for A::property " . $rh->getName() . ":\n"; +var_dump($rh->getDocComment()); + +$rh = $rp->getHook(PropertyHookType::Set); +echo "\n---> Doc comment for A::property " . $rh->getName() . ":\n"; +var_dump($rh->getDocComment()); + +$rp = $rh->getParameters()[0]; +echo "\n---> Doc comment for A::property \$foo::set parameter $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +// --------- + +$rp = $rc->getConstructor()->getParameters()[1]; +echo "\n---> Doc comment for A::constructor parameter $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +$rp = $rc->getProperty('bar'); +echo "\n---> Doc comment for A::property $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +$rh = $rp->getHook(PropertyHookType::Get); +echo "\n---> Doc comment for A::property " . $rh->getName() . ":\n"; +var_dump($rh->getDocComment()); + +$rh = $rp->getHook(PropertyHookType::Set); +echo "\n---> Doc comment for A::property " . $rh->getName() . ":\n"; +var_dump($rh->getDocComment()); + +$rp = $rh->getParameters()[0]; +echo "\n---> Doc comment for A::property \$bar::set parameter $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +// --------- + +$rp = $rc->getConstructor()->getParameters()[2]; +echo "\n---> Doc comment for A::constructor parameter $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +$rp = $rc->getProperty('baz'); +echo "\n---> Doc comment for A::property $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +$rh = $rp->getHook(PropertyHookType::Get); +echo "\n---> Doc comment for A::property " . $rh->getName() . ":\n"; +var_dump($rh->getDocComment()); + +$rh = $rp->getHook(PropertyHookType::Set); +echo "\n---> Doc comment for A::property " . $rh->getName() . ":\n"; +var_dump($rh->getDocComment()); + +$rp = $rh->getParameters()[0]; +echo "\n---> Doc comment for A::property \$baz::set parameter $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +$rp = $rc->getConstructor()->getParameters()[0]; +echo "\n---> Doc comment for A::constructor parameter $" . $rp->getName() . ":\n"; +var_dump($rp->getDocComment()); + +?> +--EXPECTF-- +---> Doc comment for A::property $foo: +string(11) "/** $foo */" + +---> Doc comment for A::property $foo::get: +string(13) "/** getter */" + +---> Doc comment for A::property $foo::set: +string(13) "/** setter */" + +---> Doc comment for A::property $foo::set parameter $value: +string(13) "/** $value */" + +---> Doc comment for A::constructor parameter $bar: +string(11) "/** $bar */" + +---> Doc comment for A::property $bar: +string(11) "/** $bar */" + +---> Doc comment for A::property $bar::get: +string(13) "/** getter */" + +---> Doc comment for A::property $bar::set: +string(13) "/** setter */" + +---> Doc comment for A::property $bar::set parameter $value: +string(13) "/** $value */" + +---> Doc comment for A::constructor parameter $baz: +bool(false) + +---> Doc comment for A::property $baz: +bool(false) + +---> Doc comment for A::property $baz::get: +string(13) "/** getter */" + +---> Doc comment for A::property $baz::set: +string(13) "/** setter */" + +---> Doc comment for A::property $baz::set parameter $value: +string(13) "/** $value */" + +---> Doc comment for A::constructor parameter $foo: +string(11) "/** $foo */" diff --git a/ext/reflection/tests/ReflectionZendExtension.phpt b/ext/reflection/tests/ReflectionZendExtension.phpt index c9c8f18cf553..a9825ff78abc 100644 --- a/ext/reflection/tests/ReflectionZendExtension.phpt +++ b/ext/reflection/tests/ReflectionZendExtension.phpt @@ -14,8 +14,8 @@ var_dump($reflection->getURL()); var_dump($reflection->getVersion() === PHP_VERSION); ?> --EXPECT-- -string(17) "Zend Technologies" -string(13) "Copyright (c)" +string(16) "Zend by Perforce" +string(12) "Copyright ©" string(12) "Zend OPcache" -string(20) "http://www.zend.com/" +string(21) "https://www.zend.com/" bool(true) diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index 60c6bfc1bd4c..3a7f8aec4522 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ @@ -276,7 +274,10 @@ static zend_result ps_files_write(ps_files *data, zend_string *key, zend_string return SUCCESS; } -static int ps_files_cleanup_dir(const zend_string *dirname, zend_long maxlifetime) +/* Recursively remove expired session files. When dirdepth > 0 the + * cleanup descends into subdirectories up to that many levels before + * inspecting individual session files. */ +static int ps_files_cleanup_dir(const zend_string *dirname, zend_long maxlifetime, size_t remaining_depth) { DIR *dir; struct dirent *entry; @@ -291,8 +292,6 @@ static int ps_files_cleanup_dir(const zend_string *dirname, zend_long maxlifetim return -1; } - time(&now); - if (ZSTR_LEN(dirname) >= MAXPATHLEN) { php_error_docref(NULL, E_NOTICE, "ps_files_cleanup_dir: dirname(%s) is too long", ZSTR_VAL(dirname)); closedir(dir); @@ -304,31 +303,52 @@ static int ps_files_cleanup_dir(const zend_string *dirname, zend_long maxlifetim buf[ZSTR_LEN(dirname)] = PHP_DIR_SEPARATOR; while ((entry = readdir(dir))) { - /* does the file start with our prefix? */ - if (!strncmp(entry->d_name, FILE_PREFIX, sizeof(FILE_PREFIX) - 1)) { - size_t entry_len = strlen(entry->d_name); - - /* does it fit into our buffer? */ - if (entry_len + ZSTR_LEN(dirname) + 2 < MAXPATHLEN) { - /* create the full path.. */ - memcpy(buf + ZSTR_LEN(dirname) + 1, entry->d_name, entry_len); - - /* NUL terminate it and */ - buf[ZSTR_LEN(dirname) + entry_len + 1] = '\0'; - - /* check whether its last access was more than maxlifetime ago */ - if (VCWD_STAT(buf, &sbuf) == 0 && - (now - sbuf.st_mtime) > maxlifetime) { - VCWD_UNLINK(buf); - nrdels++; + /* skip . and .. */ + if (entry->d_name[0] == '.' && + (entry->d_name[1] == '\0' || + (entry->d_name[1] == '.' && entry->d_name[2] == '\0'))) { + continue; + } + size_t entry_len = strlen(entry->d_name); + /* does it fit into our buffer? */ + if (ZSTR_LEN(dirname) + 1 + entry_len >= MAXPATHLEN) { + continue; + } + /* create the full path and NUL-terminate it */ + memcpy(buf + ZSTR_LEN(dirname) + 1, entry->d_name, entry_len); + buf[ZSTR_LEN(dirname) + 1 + entry_len] = '\0'; + + if (remaining_depth == 0) { + /* target depth: delete expired session files */ + if (strncmp(entry->d_name, FILE_PREFIX, sizeof(FILE_PREFIX) - 1) != 0) { + continue; + } + if (VCWD_STAT(buf, &sbuf) != 0) { + continue; + } + time(&now); + if ((now - sbuf.st_mtime) > maxlifetime) { + VCWD_UNLINK(buf); + nrdels++; + } + } else { + /* intermediate depth: recurse into subdirectories */ + if (VCWD_STAT(buf, &sbuf) != 0) { + continue; + } + if (S_ISDIR(sbuf.st_mode)) { + zend_string *subdir = zend_string_init(buf, ZSTR_LEN(dirname) + 1 + entry_len, 0); + int n = ps_files_cleanup_dir(subdir, maxlifetime, remaining_depth - 1); + zend_string_release(subdir); + if (n >= 0) { + nrdels += n; } } } } closedir(dir); - - return (nrdels); + return nrdels; } static zend_result ps_files_key_exists(ps_files *data, const zend_string *key) @@ -624,15 +644,7 @@ PS_GC_FUNC(files) { PS_FILES_DATA; - /* We don't perform any cleanup, if dirdepth is larger than 0. - we return SUCCESS, since all cleanup should be handled by - an external entity (i.e. find -ctime x | xargs rm) */ - - if (data->dirdepth == 0) { - *nrdels = ps_files_cleanup_dir(data->basedir, maxlifetime); - } else { - *nrdels = -1; // Cannot process multiple depth save dir - } + *nrdels = ps_files_cleanup_dir(data->basedir, maxlifetime, data->dirdepth); return *nrdels; } diff --git a/ext/session/mod_files.h b/ext/session/mod_files.h index 31ed4afbffcc..9eae00fb9c7a 100644 --- a/ext/session/mod_files.h +++ b/ext/session/mod_files.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c index 521e553d54f2..ff8664c981a0 100644 --- a/ext/session/mod_mm.c +++ b/ext/session/mod_mm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/session/mod_mm.h b/ext/session/mod_mm.h index b35e0b632ee9..990eab09147c 100644 --- a/ext/session/mod_mm.h +++ b/ext/session/mod_mm.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c index a83f1bd36f8b..c87e9654c4ea 100644 --- a/ext/session/mod_user.c +++ b/ext/session/mod_user.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ @@ -216,6 +214,7 @@ PS_GC_FUNC(user) /* Anything else is some kind of error */ *nrdels = -1; // Error } + zval_ptr_dtor(&retval); return *nrdels; } diff --git a/ext/session/mod_user.h b/ext/session/mod_user.h index 58772b48ec82..9c36c315819a 100644 --- a/ext/session/mod_user.h +++ b/ext/session/mod_user.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c index 9adc97e67418..a6bd69c91a07 100644 --- a/ext/session/mod_user_class.c +++ b/ext/session/mod_user_class.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Arpad Ray | +----------------------------------------------------------------------+ diff --git a/ext/session/php_session.h b/ext/session/php_session.h index 09a737cf64f3..08c08b9a024a 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/session/session.c b/ext/session/session.c index 51ab3922e0bd..96e32ea7043f 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Andrei Zmievski | @@ -641,7 +639,7 @@ static PHP_INI_MH(OnUpdateSaveDir) /* Only do the open_basedir check at runtime */ if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) { - if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value)) != NULL) { + if (zend_str_has_nul_byte(new_value)) { return FAILURE; } @@ -706,12 +704,20 @@ static PHP_INI_MH(OnUpdateCookieLifetime) #else const zend_long maxcookie = ZEND_LONG_MAX / 2 - 1; #endif - zend_long v = (zend_long)atol(ZSTR_VAL(new_value)); - if (v < 0) { - php_error_docref(NULL, E_WARNING, "CookieLifetime cannot be negative"); + zend_long lval = 0; + int oflow = 0; + uint8_t type = is_numeric_string_ex(ZSTR_VAL(new_value), ZSTR_LEN(new_value), &lval, NULL, false, &oflow, NULL); + if (UNEXPECTED(type != IS_LONG)) { + if (oflow != 0) { + php_error_docref(NULL, E_WARNING, "session.cookie_lifetime must be between 0 and " ZEND_LONG_FMT, maxcookie); + } else { + php_error_docref(NULL, E_WARNING, "session.cookie_lifetime must be of type int"); + } + return FAILURE; + } + if (lval < 0 || lval > maxcookie) { + php_error_docref(NULL, E_WARNING, "session.cookie_lifetime must be between 0 and " ZEND_LONG_FMT, maxcookie); return FAILURE; - } else if (v > maxcookie) { - return SUCCESS; } return OnUpdateLongGEZero(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); diff --git a/ext/session/tests/gh16290.phpt b/ext/session/tests/gh16290.phpt index d341eb47471b..df57b129649d 100644 --- a/ext/session/tests/gh16290.phpt +++ b/ext/session/tests/gh16290.phpt @@ -6,8 +6,11 @@ session --FILE-- ---EXPECT-- +--EXPECTF-- +Warning: session_set_cookie_params(): session.cookie_lifetime must be between 0 and %d in %s on line %d DONE diff --git a/ext/session/tests/mod_files/gc_dirdepth2.phpt b/ext/session/tests/mod_files/gc_dirdepth2.phpt new file mode 100644 index 000000000000..a8724285125a --- /dev/null +++ b/ext/session/tests/mod_files/gc_dirdepth2.phpt @@ -0,0 +1,45 @@ +--TEST-- +session GC cleans expired sessions with save_path dirdepth=2 (two subdir levels) +--EXTENSIONS-- +session +--SKIPIF-- + +--INI-- +session.gc_probability=0 +session.gc_maxlifetime=10 +--FILE-- + +--CLEAN-- + +--EXPECT-- +session_gc() return value: int(1) +expired file removed: bool(true) diff --git a/ext/session/tests/mod_files/gc_dirdepth_disabled.phpt b/ext/session/tests/mod_files/gc_dirdepth_disabled.phpt new file mode 100644 index 000000000000..81c62430d157 --- /dev/null +++ b/ext/session/tests/mod_files/gc_dirdepth_disabled.phpt @@ -0,0 +1,68 @@ +--TEST-- +session GC correctly cleans expired sessions when save_path dirdepth > 0 +--EXTENSIONS-- +session +--SKIPIF-- + +--INI-- +session.gc_probability=0 +session.gc_maxlifetime=1 +--FILE-- + +--CLEAN-- + +--EXPECT-- +dirdepth=1 — session_gc() return value: int(1) +dirdepth=1 — expired session file removed: bool(true) +dirdepth=0 — session_gc() return value: int(1) +dirdepth=0 — expired session file removed: bool(true) diff --git a/ext/session/tests/mod_files/gc_dirdepth_multi_subdir_count.phpt b/ext/session/tests/mod_files/gc_dirdepth_multi_subdir_count.phpt new file mode 100644 index 000000000000..1ba047502f5e --- /dev/null +++ b/ext/session/tests/mod_files/gc_dirdepth_multi_subdir_count.phpt @@ -0,0 +1,54 @@ +--TEST-- +session GC accumulates correct total count across multiple subdirs, including empty ones (dirdepth=1) +--EXTENSIONS-- +session +--SKIPIF-- + +--INI-- +session.gc_probability=0 +session.gc_maxlifetime=10 +--FILE-- + +--CLEAN-- + +--EXPECT-- +session_gc() return value: int(3) +all expired files removed: bool(true) diff --git a/ext/session/tests/mod_files/gc_dirdepth_selective.phpt b/ext/session/tests/mod_files/gc_dirdepth_selective.phpt new file mode 100644 index 000000000000..a173324171e2 --- /dev/null +++ b/ext/session/tests/mod_files/gc_dirdepth_selective.phpt @@ -0,0 +1,57 @@ +--TEST-- +session GC deletes only expired sess_* files and leaves all other files untouched (dirdepth=1) +--EXTENSIONS-- +session +--SKIPIF-- + +--INI-- +session.gc_probability=0 +session.gc_maxlifetime=10 +--FILE-- + gc_maxlifetime=10 → deleted + +file_put_contents($fresh, 'user|s:5:"alice";'); +touch($fresh, time() - 1); // 1 s old < gc_maxlifetime=10 → kept + +file_put_contents($other, 'untouched'); +touch($other, time() - 100); // old but no sess_ prefix → kept + +session_id('a0000000000000000000000000'); // first char 'a' → $base/a/ +session_start(); +$result = session_gc(); // int(1): exactly one deletion proves selectivity +session_destroy(); + +echo "session_gc() return value: "; +var_dump($result); + +echo "expired sess_ file removed: "; +var_dump(!file_exists($expired)); + +echo "other file kept: "; +var_dump(file_exists($other)); +?> +--CLEAN-- + +--EXPECT-- +session_gc() return value: int(1) +expired sess_ file removed: bool(true) +other file kept: bool(true) diff --git a/ext/session/tests/session_cookie_lifetime_invalid.phpt b/ext/session/tests/session_cookie_lifetime_invalid.phpt new file mode 100644 index 000000000000..8665a53447b9 --- /dev/null +++ b/ext/session/tests/session_cookie_lifetime_invalid.phpt @@ -0,0 +1,55 @@ +--TEST-- +session.cookie_lifetime rejects invalid values +--EXTENSIONS-- +session +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: ini_set(): session.cookie_lifetime must be of type int in %s on line %d +string(3) "100" + +Warning: ini_set(): session.cookie_lifetime must be of type int in %s on line %d +string(3) "100" + +Warning: ini_set(): session.cookie_lifetime must be between 0 and %d in %s on line %d +string(3) "100" + +Warning: ini_set(): session.cookie_lifetime must be between 0 and %d in %s on line %d +string(3) "100" + +Warning: ini_set(): session.cookie_lifetime must be between 0 and %d in %s on line %d +string(3) "100" +string(3) "200" diff --git a/ext/session/tests/session_get_cookie_params_basic.phpt b/ext/session/tests/session_get_cookie_params_basic.phpt index 1c7cdf189fc9..73ffd4c94d1e 100644 --- a/ext/session/tests/session_get_cookie_params_basic.phpt +++ b/ext/session/tests/session_get_cookie_params_basic.phpt @@ -22,7 +22,7 @@ echo "*** Testing session_get_cookie_params() : basic functionality ***\n"; var_dump(session_get_cookie_params()); var_dump(session_set_cookie_params(3600, "/path", "blah", FALSE, FALSE)); var_dump(session_get_cookie_params()); -var_dump(session_set_cookie_params(1234567890, "/guff", "foo", TRUE, TRUE)); +var_dump(session_set_cookie_params(1000000000, "/guff", "foo", TRUE, TRUE)); var_dump(session_get_cookie_params()); var_dump(session_set_cookie_params([ "lifetime" => 123, @@ -40,7 +40,7 @@ var_dump(session_get_cookie_params()); echo "Done"; ob_end_flush(); ?> ---EXPECTF-- +--EXPECT-- *** Testing session_get_cookie_params() : basic functionality *** array(7) { ["lifetime"]=> @@ -78,7 +78,7 @@ array(7) { bool(true) array(7) { ["lifetime"]=> - int(%d) + int(1000000000) ["path"]=> string(5) "/guff" ["domain"]=> diff --git a/ext/session/tests/session_set_cookie_params_basic.phpt b/ext/session/tests/session_set_cookie_params_basic.phpt index 386280d17861..27cfd59b183e 100644 --- a/ext/session/tests/session_set_cookie_params_basic.phpt +++ b/ext/session/tests/session_set_cookie_params_basic.phpt @@ -15,7 +15,7 @@ var_dump(session_set_cookie_params(3600)); var_dump(session_start()); var_dump(session_set_cookie_params(1800)); var_dump(session_destroy()); -var_dump(session_set_cookie_params(1234567890)); +var_dump(session_set_cookie_params(1000000000)); echo "Done"; ob_end_flush(); diff --git a/ext/session/tests/session_set_cookie_params_variation1.phpt b/ext/session/tests/session_set_cookie_params_variation1.phpt index ed0b8dc9755d..ce4b98457bea 100644 --- a/ext/session/tests/session_set_cookie_params_variation1.phpt +++ b/ext/session/tests/session_set_cookie_params_variation1.phpt @@ -24,7 +24,7 @@ var_dump(ini_get("session.cookie_lifetime")); var_dump(session_destroy()); var_dump(ini_get("session.cookie_lifetime")); -var_dump(session_set_cookie_params(1234567890)); +var_dump(session_set_cookie_params(1000000000)); var_dump(ini_get("session.cookie_lifetime")); echo "Done"; @@ -44,5 +44,5 @@ string(4) "3600" bool(true) string(4) "3600" bool(true) -string(10) "1234567890" +string(10) "1000000000" Done diff --git a/ext/session/tests/session_set_cookie_params_variation8.phpt b/ext/session/tests/session_set_cookie_params_variation8.phpt index 891133b5b01e..1497ded69d5f 100644 --- a/ext/session/tests/session_set_cookie_params_variation8.phpt +++ b/ext/session/tests/session_set_cookie_params_variation8.phpt @@ -25,7 +25,7 @@ bool(true) string(1) "0" string(1) "0" -Warning: session_set_cookie_params(): CookieLifetime cannot be negative in %s on line %d +Warning: session_set_cookie_params(): session.cookie_lifetime must be between 0 and %d in %s on line %d bool(false) string(1) "0" Done diff --git a/ext/session/tests/user_session_module/gh_gc_retval_leak.phpt b/ext/session/tests/user_session_module/gh_gc_retval_leak.phpt new file mode 100644 index 000000000000..f04f36c2276b --- /dev/null +++ b/ext/session/tests/user_session_module/gh_gc_retval_leak.phpt @@ -0,0 +1,33 @@ +--TEST-- +session_gc(): user handler returning non-bool/non-int does not leak memory +--INI-- +session.gc_probability=0 +session.save_handler=files +--EXTENSIONS-- +session +--FILE-- + +--EXPECTF-- + +Deprecated: session_set_save_handler(): Providing individual callbacks instead of an object implementing SessionHandlerInterface is deprecated in %s on line %d +bool(false) diff --git a/ext/shmop/php_shmop.h b/ext/shmop/php_shmop.h index 8d1d3cd8fd44..265753ea454a 100644 --- a/ext/shmop/php_shmop.h +++ b/ext/shmop/php_shmop.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Slava Poliakov | | Ilia Alshanetsky | diff --git a/ext/shmop/shmop.c b/ext/shmop/shmop.c index 67f060f3c82c..18e6cac9a0c9 100644 --- a/ext/shmop/shmop.c +++ b/ext/shmop/shmop.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | PHP version 7 | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Slava Poliakov | | Ilia Alshanetsky | diff --git a/ext/simplexml/php_simplexml.h b/ext/simplexml/php_simplexml.h index 5d16794fa644..f8d78937b9d9 100644 --- a/ext/simplexml/php_simplexml.h +++ b/ext/simplexml/php_simplexml.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/ext/simplexml/php_simplexml_exports.h b/ext/simplexml/php_simplexml_exports.h index 4ae02674d6da..f1f519e85e12 100644 --- a/ext/simplexml/php_simplexml_exports.h +++ b/ext/simplexml/php_simplexml_exports.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | | Marcus Boerger | diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 5c39b8e656f5..5b749a462492 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sterling Hughes | | Marcus Boerger | diff --git a/ext/snmp/config.w32 b/ext/snmp/config.w32 index 0e3887c0de68..bf63e89a9607 100644 --- a/ext/snmp/config.w32 +++ b/ext/snmp/config.w32 @@ -9,6 +9,7 @@ if (PHP_SNMP != "no") { EXTENSION('snmp', 'snmp.c'); ADD_EXTENSION_DEP('snmp', 'spl'); AC_DEFINE('HAVE_SNMP', 1, "Define to 1 if the PHP extension 'snmp' is available."); + AC_DEFINE('HAVE_SHUTDOWN_SNMP_LOGGING', 1, "Define to 1 if SNMP library has the 'shutdown_snmp_logging' function."); } else { WARNING("snmp not enabled; libraries and headers not found"); } diff --git a/ext/snmp/php_snmp.h b/ext/snmp/php_snmp.h index ce9849588b19..21d544fa7b8b 100644 --- a/ext/snmp/php_snmp.h +++ b/ext/snmp/php_snmp.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Mike Jackson | diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 1daa51851fb6..ecea48883d52 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Mike Jackson | @@ -655,7 +653,8 @@ static void php_free_objid_query(struct objid_query *objid_query, HashTable* oid */ static bool php_snmp_parse_oid( zval *object, int st, struct objid_query *objid_query, zend_string *oid_str, HashTable *oid_ht, - zend_string *type_str, HashTable *type_ht, zend_string *value_str, HashTable *value_ht + zend_string *type_str, HashTable *type_ht, zend_string *value_str, HashTable *value_ht, + uint32_t oid_arg_num, uint32_t type_arg_num, uint32_t value_arg_num ) { char *pptr; uint32_t idx_type = 0, idx_value = 0; @@ -682,7 +681,7 @@ static bool php_snmp_parse_oid( ZEND_ASSERT(type_str && value_str); if (ZSTR_LEN(type_str) != 1) { - zend_value_error("Type must be a single character"); + zend_argument_value_error(type_arg_num, "must be a single character"); efree(objid_query->vars); return false; } @@ -693,7 +692,7 @@ static bool php_snmp_parse_oid( objid_query->count++; } else if (oid_ht) { /* we got objid array */ if (zend_hash_num_elements(oid_ht) == 0) { - zend_value_error("Array of object IDs must not be empty"); + zend_argument_value_error(oid_arg_num, "must not be empty when passed as an array"); return false; } objid_query->vars = (snmpobjarg *)safe_emalloc(sizeof(snmpobjarg), zend_hash_num_elements(oid_ht), 0); @@ -738,14 +737,14 @@ static bool php_snmp_parse_oid( char ptype = *ZSTR_VAL(type); zend_string_release(type); if (len != 1) { - zend_value_error("Type must be a single character"); + zend_argument_value_error(type_arg_num, "must be a single character"); php_free_objid_query(objid_query, oid_ht, value_ht, st); return false; } objid_query->vars[objid_query->count].type = ptype; idx_type++; } else { - php_error_docref(NULL, E_WARNING, "'%s': no type set", ZSTR_VAL(tmp)); + zend_argument_value_error(type_arg_num, "must contain a type for object ID '%s'", ZSTR_VAL(tmp)); php_free_objid_query(objid_query, oid_ht, value_ht, st); return false; } @@ -780,7 +779,7 @@ static bool php_snmp_parse_oid( objid_query->vars[objid_query->count].value = ZSTR_VAL(tmp); idx_value++; } else { - php_error_docref(NULL, E_WARNING, "'%s': no value set", ZSTR_VAL(tmp)); + zend_argument_value_error(value_arg_num, "must contain a value for object ID '%s'", ZSTR_VAL(tmp)); php_free_objid_query(objid_query, oid_ht, value_ht, st); return false; } @@ -827,7 +826,7 @@ static bool php_snmp_parse_oid( /* {{{ snmp_session_init allocates memory for session and session->peername, caller should free it manually using snmp_session_free() and efree() */ -static bool snmp_session_init(php_snmp_session **session_p, int version, zend_string *hostname, zend_string *community, zend_long timeout, zend_long retries, int timeout_argument_offset) +static bool snmp_session_init(php_snmp_session **session_p, int version, zend_string *hostname, zend_string *community, zend_long timeout, zend_long retries, uint32_t hostname_arg_num, uint32_t timeout_arg_num) { php_snmp_session *session; char *pptr, *host_ptr; @@ -841,34 +840,24 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st ZEND_ASSERT(hostname != NULL); ZEND_ASSERT(community != NULL); - if (zend_str_has_nul_byte(hostname)) { - zend_argument_value_error(2, "must not contain any null bytes"); - return false; - } - if (ZSTR_LEN(hostname) >= MAX_NAME_LEN) { - zend_argument_value_error(2, "length must be lower than %d", MAX_NAME_LEN); - return false; - } - - if (zend_str_has_nul_byte(community)) { - zend_argument_value_error(3, "must not contain any null bytes"); + zend_argument_value_error(hostname_arg_num, "length must be lower than %d", MAX_NAME_LEN); return false; } if (ZSTR_LEN(community) == 0) { - zend_argument_must_not_be_empty_error(3); + zend_argument_must_not_be_empty_error(hostname_arg_num + 1); return false; } - if (timeout_argument_offset != -1) { + if (timeout_arg_num != 0) { if (timeout < -1 || timeout > LONG_MAX) { - zend_argument_value_error(timeout_argument_offset, "must be between -1 and %ld", LONG_MAX); + zend_argument_value_error(timeout_arg_num, "must be between -1 and %ld", LONG_MAX); return false; } if (retries < -1 || retries > INT_MAX) { - zend_argument_value_error(timeout_argument_offset + 1, "must be between -1 and %d", INT_MAX); + zend_argument_value_error(timeout_arg_num + 1, "must be between -1 and %d", INT_MAX); return false; } } @@ -899,14 +888,14 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st char *pport = pptr + 2; tmp_port = atoi(pport); if (tmp_port < 0 || tmp_port > USHRT_MAX) { - zend_argument_value_error(2, "remote port must be between 0 and %u", USHRT_MAX); + zend_argument_value_error(hostname_arg_num, "remote port must be between 0 and %u", USHRT_MAX); return false; } remote_port = (unsigned short)tmp_port; } *pptr = '\0'; } else { - php_error_docref(NULL, E_WARNING, "Malformed IPv6 address, closing square bracket missing"); + zend_argument_value_error(hostname_arg_num, "has a malformed IPv6 address, closing square bracket missing"); return false; } } else { /* IPv4 address */ @@ -914,7 +903,7 @@ static bool snmp_session_init(php_snmp_session **session_p, int version, zend_st char *pport = pptr + 1; tmp_port = atoi(pport); if (tmp_port < 0 || tmp_port > USHRT_MAX) { - zend_argument_value_error(2, "remote port must be between 0 and %u", USHRT_MAX); + zend_argument_value_error(hostname_arg_num, "remote port must be between 0 and %u", USHRT_MAX); return false; } remote_port = (unsigned short)tmp_port; @@ -1123,14 +1112,13 @@ static ZEND_ATTRIBUTE_NONNULL bool snmp_session_gen_sec_key(struct snmp_session /* }}} */ /* {{{ Set context Engine Id in the snmpv3 session */ -static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string * contextEngineID) +static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string *contextEngineID, uint32_t context_engine_id_arg_num) { size_t ebuf_len = 32, eout_len = 0; uint8_t *ebuf = (uint8_t *) emalloc(ebuf_len); if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, ZSTR_VAL(contextEngineID))) { - // TODO Promote to Error? - php_error_docref(NULL, E_WARNING, "Bad engine ID value '%s'", ZSTR_VAL(contextEngineID)); + zend_argument_value_error(context_engine_id_arg_num, "must be a valid context engine ID"); efree(ebuf); return false; } @@ -1145,11 +1133,14 @@ static bool snmp_session_set_contextEngineID(struct snmp_session *s, zend_string } /* }}} */ -/* {{{ Set all snmpv3-related security options */ +/* {{{ Set all snmpv3-related security options + * auth_protocol_arg_num and context_engine_id_arg_num are the userland + * argument numbers used for error reporting. + */ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp_session *session, zend_string *sec_level, zend_string *auth_protocol, zend_string *auth_passphrase, zend_string *priv_protocol, zend_string *priv_passphrase, zend_string *contextName, zend_string *contextEngineID, - uint32_t auth_protocol_argnum) + uint32_t auth_protocol_arg_num, uint32_t context_engine_id_arg_num) { /* Setting the security level. */ @@ -1161,7 +1152,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp if (session->securityLevel == SNMP_SEC_LEVEL_AUTHNOPRIV || session->securityLevel == SNMP_SEC_LEVEL_AUTHPRIV) { if (!auth_protocol) { - zend_argument_value_error(auth_protocol_argnum, "cannot be null when security level is \"authNoPriv\" or \"authPriv\""); + zend_argument_value_error(auth_protocol_arg_num, "cannot be null when security level is \"authNoPriv\" or \"authPriv\""); return false; } @@ -1172,7 +1163,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp } if (!auth_passphrase) { - zend_argument_value_error(auth_protocol_argnum + 1, "cannot be null when security level is \"authNoPriv\" or \"authPriv\""); + zend_argument_value_error(auth_protocol_arg_num + 1, "cannot be null when security level is \"authNoPriv\" or \"authPriv\""); return false; } @@ -1185,7 +1176,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp if (session->securityLevel == SNMP_SEC_LEVEL_AUTHPRIV) { if (!priv_protocol) { - zend_argument_value_error(auth_protocol_argnum + 2, "cannot be null when security level is \"authPriv\""); + zend_argument_value_error(auth_protocol_arg_num + 2, "cannot be null when security level is \"authPriv\""); return false; } @@ -1196,7 +1187,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp } if (!priv_passphrase) { - zend_argument_value_error(auth_protocol_argnum + 3, "cannot be null when security level is \"authPriv\""); + zend_argument_value_error(auth_protocol_arg_num + 3, "cannot be null when security level is \"authPriv\""); return false; } @@ -1215,7 +1206,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp } /* Setting contextEngineIS if specified */ - if (contextEngineID && ZSTR_LEN(contextEngineID) && !snmp_session_set_contextEngineID(session, contextEngineID)) { + if (contextEngineID && ZSTR_LEN(contextEngineID) && !snmp_session_set_contextEngineID(session, contextEngineID, context_engine_id_arg_num)) { /* Warning message sent already, just bail out */ return false; } @@ -1235,14 +1226,17 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) { zend_string *oid_str, *type_str = NULL, *value_str = NULL; HashTable *oid_ht, *type_ht = NULL, *value_ht = NULL; - zend_string *a1 = NULL, *a2 = NULL, *a3 = NULL, *a4 = NULL, *a5 = NULL, *a6 = NULL, *a7 = NULL; + zend_string *hostname = NULL, *community_or_security_name = NULL; + zend_string *security_level = NULL, *auth_protocol = NULL, *auth_passphrase = NULL; + zend_string *privacy_protocol = NULL, *privacy_passphrase = NULL; bool use_orignames = 0, suffix_keys = 0; zend_long timeout = SNMP_DEFAULT_TIMEOUT; zend_long retries = SNMP_DEFAULT_RETRIES; struct objid_query objid_query; php_snmp_session *session; int session_less_mode = (getThis() == NULL); - int timeout_argument_offset = -1; + uint32_t timeout_arg_num = 0; + uint32_t oid_arg_num = 1, type_arg_num = 0, value_arg_num = 0; php_snmp_object *snmp_object; php_snmp_object glob_snmp_object; @@ -1255,13 +1249,13 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) if (version == SNMP_VERSION_3) { if (st & SNMP_CMD_SET) { ZEND_PARSE_PARAMETERS_START(10, 12) - Z_PARAM_STR(a1) - Z_PARAM_STR(a2) - Z_PARAM_STR(a3) - Z_PARAM_STR(a4) - Z_PARAM_STR(a5) - Z_PARAM_STR(a6) - Z_PARAM_STR(a7) + Z_PARAM_PATH_STR(hostname) + Z_PARAM_PATH_STR(community_or_security_name) + Z_PARAM_STR(security_level) + Z_PARAM_STR(auth_protocol) + Z_PARAM_STR(auth_passphrase) + Z_PARAM_STR(privacy_protocol) + Z_PARAM_STR(privacy_passphrase) Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str) Z_PARAM_ARRAY_HT_OR_STR(type_ht, type_str) Z_PARAM_ARRAY_HT_OR_STR(value_ht, value_str) @@ -1270,33 +1264,37 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) Z_PARAM_LONG(retries) ZEND_PARSE_PARAMETERS_END(); - timeout_argument_offset = 10; + timeout_arg_num = 10; + oid_arg_num = 8; + type_arg_num = 9; + value_arg_num = 10; } else { /* SNMP_CMD_GET * SNMP_CMD_GETNEXT * SNMP_CMD_WALK */ ZEND_PARSE_PARAMETERS_START(8, 10) - Z_PARAM_STR(a1) - Z_PARAM_STR(a2) - Z_PARAM_STR(a3) - Z_PARAM_STR(a4) - Z_PARAM_STR(a5) - Z_PARAM_STR(a6) - Z_PARAM_STR(a7) + Z_PARAM_PATH_STR(hostname) + Z_PARAM_PATH_STR(community_or_security_name) + Z_PARAM_STR(security_level) + Z_PARAM_STR(auth_protocol) + Z_PARAM_STR(auth_passphrase) + Z_PARAM_STR(privacy_protocol) + Z_PARAM_STR(privacy_passphrase) Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str) Z_PARAM_OPTIONAL Z_PARAM_LONG(timeout) Z_PARAM_LONG(retries) ZEND_PARSE_PARAMETERS_END(); - timeout_argument_offset = 9; + timeout_arg_num = 9; + oid_arg_num = 8; } } else { if (st & SNMP_CMD_SET) { ZEND_PARSE_PARAMETERS_START(5, 7) - Z_PARAM_STR(a1) - Z_PARAM_STR(a2) + Z_PARAM_PATH_STR(hostname) + Z_PARAM_PATH_STR(community_or_security_name) Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str) Z_PARAM_ARRAY_HT_OR_STR(type_ht, type_str) Z_PARAM_ARRAY_HT_OR_STR(value_ht, value_str) @@ -1305,22 +1303,26 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) Z_PARAM_LONG(retries) ZEND_PARSE_PARAMETERS_END(); - timeout_argument_offset = 6; + timeout_arg_num = 6; + oid_arg_num = 3; + type_arg_num = 4; + value_arg_num = 5; } else { /* SNMP_CMD_GET * SNMP_CMD_GETNEXT * SNMP_CMD_WALK */ ZEND_PARSE_PARAMETERS_START(3, 5) - Z_PARAM_STR(a1) - Z_PARAM_STR(a2) + Z_PARAM_PATH_STR(hostname) + Z_PARAM_PATH_STR(community_or_security_name) Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str) Z_PARAM_OPTIONAL Z_PARAM_LONG(timeout) Z_PARAM_LONG(retries) ZEND_PARSE_PARAMETERS_END(); - timeout_argument_offset = 4; + timeout_arg_num = 4; + oid_arg_num = 3; } } } else { @@ -1330,6 +1332,8 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) Z_PARAM_ARRAY_HT_OR_STR(type_ht, type_str) Z_PARAM_ARRAY_HT_OR_STR(value_ht, value_str) ZEND_PARSE_PARAMETERS_END(); + type_arg_num = 2; + value_arg_num = 3; } else if (st & SNMP_CMD_WALK) { ZEND_PARSE_PARAMETERS_START(1, 4) Z_PARAM_ARRAY_HT_OR_STR(oid_ht, oid_str) @@ -1359,20 +1363,21 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version) } } - if (!php_snmp_parse_oid(getThis(), st, &objid_query, oid_str, oid_ht, type_str, type_ht, value_str, value_ht)) { + if (!php_snmp_parse_oid(getThis(), st, &objid_query, oid_str, oid_ht, type_str, type_ht, value_str, value_ht, + oid_arg_num, type_arg_num, value_arg_num)) { RETURN_FALSE; } if (session_less_mode) { - if (!snmp_session_init(&session, version, a1, a2, timeout, retries, timeout_argument_offset)) { + if (!snmp_session_init(&session, version, hostname, community_or_security_name, timeout, retries, 1, timeout_arg_num)) { php_free_objid_query(&objid_query, oid_ht, value_ht, st); snmp_session_free(&session); RETURN_FALSE; } - if (version == SNMP_VERSION_3 && !snmp_session_set_security(session, a3, a4, a5, a6, a7, NULL, NULL, 4)) { + if (version == SNMP_VERSION_3 && !snmp_session_set_security(session, security_level, auth_protocol, auth_passphrase, privacy_protocol, privacy_passphrase, NULL, NULL, 4, 0)) { php_free_objid_query(&objid_query, oid_ht, value_ht, st); snmp_session_free(&session); - /* Warning message sent already, just bail out */ + /* An error has already been emitted, just bail out. */ RETURN_FALSE; } } else { @@ -1645,7 +1650,7 @@ PHP_METHOD(SNMP, __construct) snmp_object = Z_SNMP_P(object); - if (zend_parse_parameters(ZEND_NUM_ARGS(), "lSS|ll", &version, &a1, &a2, &timeout, &retries) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "lPP|ll", &version, &a1, &a2, &timeout, &retries) == FAILURE) { RETURN_THROWS(); } @@ -1664,7 +1669,7 @@ PHP_METHOD(SNMP, __construct) snmp_session_free(&(snmp_object->session)); } - if (!snmp_session_init(&(snmp_object->session), version, a1, a2, timeout, retries, 4)) { + if (!snmp_session_init(&(snmp_object->session), version, a1, a2, timeout, retries, 2, 4)) { return; } snmp_object->max_oids = 0; @@ -1726,7 +1731,11 @@ PHP_METHOD(SNMP, setSecurity) { php_snmp_object *snmp_object; zval *object = ZEND_THIS; - zend_string *a1 = NULL, *a2 = NULL, *a3 = NULL, *a4 = NULL, *a5 = NULL, *a6 = NULL, *a7 = NULL; + zend_string *security_level = NULL, *auth_protocol = NULL, *auth_passphrase = NULL; + zend_string *privacy_protocol = NULL, *privacy_passphrase = NULL; + zend_string *context_name = NULL, *context_engine_id = NULL; + uint32_t auth_protocol_arg_num = 2; + uint32_t context_engine_id_arg_num = 7; snmp_object = Z_SNMP_P(object); if (!snmp_object->session) { @@ -1734,12 +1743,12 @@ PHP_METHOD(SNMP, setSecurity) RETURN_THROWS(); } - if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|SSSSSS", &a1, &a2, &a3, &a4,&a5, &a6, &a7) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|SSSSSS", &security_level, &auth_protocol, &auth_passphrase, &privacy_protocol, &privacy_passphrase, &context_name, &context_engine_id) == FAILURE) { RETURN_THROWS(); } - if (!snmp_session_set_security(snmp_object->session, a1, a2, a3, a4, a5, a6, a7, 2)) { - /* Warning message sent already, just bail out */ + if (!snmp_session_set_security(snmp_object->session, security_level, auth_protocol, auth_passphrase, privacy_protocol, privacy_passphrase, context_name, context_engine_id, auth_protocol_arg_num, context_engine_id_arg_num)) { + /* An error has already been emitted, just bail out. */ RETURN_FALSE; } RETURN_TRUE; diff --git a/ext/snmp/tests/gh16959.phpt b/ext/snmp/tests/gh16959.phpt index cabe0eb84b6c..f76fa61e1f73 100644 --- a/ext/snmp/tests/gh16959.phpt +++ b/ext/snmp/tests/gh16959.phpt @@ -66,5 +66,5 @@ array(4) { } Object of class stdClass could not be converted to string Object of class stdClass could not be converted to string -Type must be a single character -Type must be a single character +snmp2_set(): Argument #4 ($type) must be a single character +snmp2_set(): Argument #4 ($type) must be a single character diff --git a/ext/snmp/tests/ipv6.phpt b/ext/snmp/tests/ipv6.phpt index c305fb15d4b8..93274fd7054f 100644 --- a/ext/snmp/tests/ipv6.phpt +++ b/ext/snmp/tests/ipv6.phpt @@ -22,10 +22,12 @@ snmp_set_quick_print(false); snmp_set_valueretrieval(SNMP_VALUE_PLAIN); var_dump(snmpget($hostname6_port, $community, '.1.3.6.1.2.1.1.1.0')); -var_dump(snmpget('[dead:beef::', $community, '.1.3.6.1.2.1.1.1.0')); +try { + var_dump(snmpget('[dead:beef::', $community, '.1.3.6.1.2.1.1.1.0')); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} ?> --EXPECTF-- string(%d) "%s" - -Warning: snmpget(): Malformed IPv6 address, closing square bracket missing in %s on line %d -bool(false) +snmpget(): Argument #1 ($hostname) has a malformed IPv6 address, closing square bracket missing diff --git a/ext/snmp/tests/snmp-object-setSecurity_error.phpt b/ext/snmp/tests/snmp-object-setSecurity_error.phpt index cf4f92883777..576ec8380804 100644 --- a/ext/snmp/tests/snmp-object-setSecurity_error.phpt +++ b/ext/snmp/tests/snmp-object-setSecurity_error.phpt @@ -53,7 +53,11 @@ try { var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', '')); var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', 'ty')); -var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', 'test12345', 'context', 'dsa')); +try { + var_dump($session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', 'test12345', 'context', 'dsa')); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} var_dump($session->close()); @@ -76,7 +80,5 @@ bool(false) Warning: SNMP::setSecurity(): Error generating a key for privacy pass phrase 'ty': Generic error (The supplied password length is too short.) in %s on line %d bool(false) - -Warning: SNMP::setSecurity(): Bad engine ID value 'dsa' in %s on line %d -bool(false) +SNMP::setSecurity(): Argument #7 ($contextEngineId) must be a valid context engine ID bool(true) diff --git a/ext/snmp/tests/snmp2_get.phpt b/ext/snmp/tests/snmp2_get.phpt index 30500eb5ca9b..e2cd1ef1b459 100644 --- a/ext/snmp/tests/snmp2_get.phpt +++ b/ext/snmp/tests/snmp2_get.phpt @@ -54,7 +54,7 @@ var_dump(snmp2_get($hostname, $community, array('.1.3.6.1.2.1.1.1.0', '.1.3.6.1. --EXPECTF-- Checking error handling Empty OID array -Array of object IDs must not be empty +snmp2_get(): Argument #3 ($object_id) must not be empty when passed as an array Checking working Single OID string(%d) "%s" diff --git a/ext/snmp/tests/snmp2_set.phpt b/ext/snmp/tests/snmp2_set.phpt index 11b1d94419f5..da94fe21f498 100644 --- a/ext/snmp/tests/snmp2_set.phpt +++ b/ext/snmp/tests/snmp2_set.phpt @@ -128,14 +128,22 @@ var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $ol var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); echo "Multiple OID, single type in array, multiple value\n"; -$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries); -var_dump($z); +try { + $z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries); + var_dump($z); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); echo "Multiple OID & type, single value in array\n"; -$z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries); -var_dump($z); +try { + $z = snmp2_set($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries); + var_dump($z); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); @@ -167,7 +175,7 @@ var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $ol --EXPECTF-- Check error handing No type & no value (timeout & retries instead) -Type must be a single character +snmp2_set(): Argument #4 ($type) must be a single character No value (timeout instead), retries instead of timeout Warning: snmp2_set(): Could not add variable: OID='%s' type='q' value='%i': Bad variable type ("q") in %s on line %d @@ -216,23 +224,19 @@ Value must be of type string when object ID is a string bool(true) bool(true) Multiple OID, 1st wrong type -Type must be a single character +snmp2_set(): Argument #4 ($type) must be a single character bool(true) bool(true) Multiple OID, 2nd wrong type -Type must be a single character +snmp2_set(): Argument #4 ($type) must be a single character bool(true) bool(true) Multiple OID, single type in array, multiple value - -Warning: snmp2_set(): '%s': no type set in %s on line %d -bool(false) +snmp2_set(): Argument #4 ($type) must contain a type for object ID 'SNMPv2-MIB::sysLocation.0' bool(true) bool(true) Multiple OID & type, single value in array - -Warning: snmp2_set(): '%s': no value set in %s on line %d -bool(false) +snmp2_set(): Argument #5 ($value) must contain a value for object ID 'SNMPv2-MIB::sysLocation.0' bool(true) bool(true) Multiple OID, 1st bogus, single type, multiple value diff --git a/ext/snmp/tests/snmpset.phpt b/ext/snmp/tests/snmpset.phpt index ca935cecf5ec..a4f89e78da93 100644 --- a/ext/snmp/tests/snmpset.phpt +++ b/ext/snmp/tests/snmpset.phpt @@ -122,14 +122,22 @@ var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $ol var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); echo "Multiple OID, single type in array, multiple value\n"; -$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries); -var_dump($z); +try { + $z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s'), array($newvalue1, $newvalue2), $timeout, $retries); + var_dump($z); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); echo "Multiple OID & type, single value in array\n"; -$z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries); -var_dump($z); +try { + $z = snmpset($hostname, $communityWrite, array($oid1, $oid2), array('s', 's'), array($newvalue1), $timeout, $retries); + var_dump($z); +} catch (\ValueError $e) { + echo $e->getMessage() . \PHP_EOL; +} var_dump((snmpget($hostname, $communityWrite, $oid1, $timeout, $retries) === $oldvalue1)); var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $oldvalue2)); @@ -161,7 +169,7 @@ var_dump((snmpget($hostname, $communityWrite, $oid2, $timeout, $retries) === $ol --EXPECTF-- Check error handing No type & no value (timeout & retries instead) -Type must be a single character +snmpset(): Argument #4 ($type) must be a single character No value (timeout instead), retries instead of timeout Warning: snmpset(): Could not add variable: OID='%s' type='q' value='%i': Bad variable type ("q") in %s on line %d @@ -207,23 +215,19 @@ Value must be of type string when object ID is a string bool(true) bool(true) Multiple OID, 1st wrong type -Type must be a single character +snmpset(): Argument #4 ($type) must be a single character bool(true) bool(true) Multiple OID, 2nd wrong type -Type must be a single character +snmpset(): Argument #4 ($type) must be a single character bool(true) bool(true) Multiple OID, single type in array, multiple value - -Warning: snmpset(): '%s': no type set in %s on line %d -bool(false) +snmpset(): Argument #4 ($type) must contain a type for object ID 'SNMPv2-MIB::sysLocation.0' bool(true) bool(true) Multiple OID & type, single value in array - -Warning: snmpset(): '%s': no value set in %s on line %d -bool(false) +snmpset(): Argument #5 ($value) must contain a value for object ID 'SNMPv2-MIB::sysLocation.0' bool(true) bool(true) Multiple OID, 1st bogus, single type, multiple value diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 5e3675f875bd..1836ef3af7e8 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | @@ -278,7 +276,7 @@ static bool soap_check_zval_ref(zval *data, xmlNodePtr node) { if (Z_TYPE_P(data) == IS_OBJECT) { data = (zval*)Z_OBJ_P(data); } - if ((node_ptr = zend_hash_index_find_ptr(SOAP_GLOBAL(ref_map), (zend_ulong)data)) != NULL) { + if ((node_ptr = zend_hash_index_find_ptr(SOAP_GLOBAL(ref_map), (zend_ulong)(uintptr_t)data)) != NULL) { xmlAttrPtr attr = node_ptr->properties; char *id; smart_str prefix = {0}; @@ -324,7 +322,7 @@ static bool soap_check_zval_ref(zval *data, xmlNodePtr node) { smart_str_free(&prefix); return true; } else { - zend_hash_index_update_ptr(SOAP_GLOBAL(ref_map), (zend_ulong)data, node); + zend_hash_index_update_ptr(SOAP_GLOBAL(ref_map), (zend_ulong)(uintptr_t)data, node); } } return false; @@ -335,7 +333,7 @@ static bool soap_check_xml_ref(zval *data, xmlNodePtr node) zval *data_ptr; if (SOAP_GLOBAL(ref_map)) { - if ((data_ptr = zend_hash_index_find(SOAP_GLOBAL(ref_map), (zend_ulong)node)) != NULL) { + if ((data_ptr = zend_hash_index_find(SOAP_GLOBAL(ref_map), (zend_ulong)(uintptr_t)node)) != NULL) { if (!Z_REFCOUNTED_P(data) || !Z_REFCOUNTED_P(data_ptr) || Z_COUNTED_P(data) != Z_COUNTED_P(data_ptr)) { @@ -351,7 +349,7 @@ static bool soap_check_xml_ref(zval *data, xmlNodePtr node) static void soap_add_xml_ref(zval *data, xmlNodePtr node) { if (SOAP_GLOBAL(ref_map)) { - zend_hash_index_update(SOAP_GLOBAL(ref_map), (zend_ulong)node, data); + zend_hash_index_update(SOAP_GLOBAL(ref_map), (zend_ulong)(uintptr_t)node, data); } } diff --git a/ext/soap/php_encoding.h b/ext/soap/php_encoding.h index ef05c9ebe787..e01154e17456 100644 --- a/ext/soap/php_encoding.h +++ b/ext/soap/php_encoding.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c index 05a37bd1b9a3..1d030caf9d45 100644 --- a/ext/soap/php_http.c +++ b/ext/soap/php_http.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_http.h b/ext/soap/php_http.h index 7716e86720bd..a01ea35f9849 100644 --- a/ext/soap/php_http.h +++ b/ext/soap/php_http.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_packet_soap.c b/ext/soap/php_packet_soap.c index dfb4ed544bbf..6cf94b0a3b36 100644 --- a/ext/soap/php_packet_soap.c +++ b/ext/soap/php_packet_soap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_packet_soap.h b/ext/soap/php_packet_soap.h index 5a9fc62418a6..569b23949659 100644 --- a/ext/soap/php_packet_soap.h +++ b/ext/soap/php_packet_soap.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_schema.c b/ext/soap/php_schema.c index dc6816034dea..73d6691af262 100644 --- a/ext/soap/php_schema.c +++ b/ext/soap/php_schema.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_schema.h b/ext/soap/php_schema.h index 68035000e1e5..b92c8a8fb4c4 100644 --- a/ext/soap/php_schema.h +++ b/ext/soap/php_schema.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index ed659ca5193c..07c5dbf4f12e 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_sdl.h b/ext/soap/php_sdl.h index a05e84fcbe99..7c9d8ce7382b 100644 --- a/ext/soap/php_sdl.h +++ b/ext/soap/php_sdl.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_soap.h b/ext/soap/php_soap.h index 8ae2cebf0d6a..ebae8ca58a79 100644 --- a/ext/soap/php_soap.h +++ b/ext/soap/php_soap.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c index a2536b98f39b..d5daaef15983 100644 --- a/ext/soap/php_xml.c +++ b/ext/soap/php_xml.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/php_xml.h b/ext/soap/php_xml.h index c967ac09d738..4a6d76427dd1 100644 --- a/ext/soap/php_xml.h +++ b/ext/soap/php_xml.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 59e2bd416805..0c8e7070b359 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brad Lafountain | | Shane Caraveo | @@ -387,7 +385,7 @@ static PHP_INI_MH(OnUpdateCacheDir) if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) { char *p; - if (memchr(ZSTR_VAL(new_value), '\0', ZSTR_LEN(new_value)) != NULL) { + if (zend_str_has_nul_byte(new_value)) { return FAILURE; } diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index 1c735ef5e6d8..4cbd4e3325ac 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Gustavo Lopes | + +----------------------------------------------------------------------+ + */ + #ifdef __sun /* to enable 'new' ancillary data layout instead */ # define _XPG4_2 diff --git a/ext/sockets/conversions.h b/ext/sockets/conversions.h index 1f1fd29c5c05..1d3ce11463d8 100644 --- a/ext/sockets/conversions.h +++ b/ext/sockets/conversions.h @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Gustavo Lopes | + +----------------------------------------------------------------------+ + */ + #ifndef PHP_SOCK_CONVERSIONS_H #define PHP_SOCK_CONVERSIONS_H 1 diff --git a/ext/sockets/multicast.c b/ext/sockets/multicast.c index 522e6b346f66..88fcf21278d2 100644 --- a/ext/sockets/multicast.c +++ b/ext/sockets/multicast.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/sockets/multicast.h b/ext/sockets/multicast.h index f2232921c6b9..5a40147cdd6f 100644 --- a/ext/sockets/multicast.h +++ b/ext/sockets/multicast.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/sockets/php_sockets.h b/ext/sockets/php_sockets.h index 89c613ba4307..437d35b41032 100644 --- a/ext/sockets/php_sockets.h +++ b/ext/sockets/php_sockets.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Chris Vandomelen | | Sterling Hughes | diff --git a/ext/sockets/sendrecvmsg.c b/ext/sockets/sendrecvmsg.c index cd7fd4839fb0..cc268bd68b0a 100644 --- a/ext/sockets/sendrecvmsg.c +++ b/ext/sockets/sendrecvmsg.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ diff --git a/ext/sockets/sendrecvmsg.h b/ext/sockets/sendrecvmsg.h index fd68b178ce5c..f430affe6779 100644 --- a/ext/sockets/sendrecvmsg.h +++ b/ext/sockets/sendrecvmsg.h @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Gustavo Lopes | + +----------------------------------------------------------------------+ + */ + #ifndef PHP_SENDRECVMSG_H #define PHP_SENDRECVMSG_H 1 diff --git a/ext/sockets/sockaddr_conv.c b/ext/sockets/sockaddr_conv.c index 333ef2533a11..949639d475f2 100644 --- a/ext/sockets/sockaddr_conv.c +++ b/ext/sockets/sockaddr_conv.c @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Gustavo Lopes | + +----------------------------------------------------------------------+ + */ + #include #include #include "php_sockets.h" diff --git a/ext/sockets/sockaddr_conv.h b/ext/sockets/sockaddr_conv.h index 93104e6470fb..ebca73862ef8 100644 --- a/ext/sockets/sockaddr_conv.h +++ b/ext/sockets/sockaddr_conv.h @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Gustavo Lopes | + +----------------------------------------------------------------------+ + */ + #ifndef PHP_SOCKADR_CONV_H #define PHP_SOCKADR_CONV_H diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index 4582de4bc8ec..fa84a7877ad6 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Chris Vandomelen | | Sterling Hughes | diff --git a/ext/sockets/windows_common.h b/ext/sockets/windows_common.h index 0b8cdfe2e5d9..9c7e711ffe5b 100644 --- a/ext/sockets/windows_common.h +++ b/ext/sockets/windows_common.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ #ifndef WINDOWS_COMMON_H diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c index 62f44486a051..b6c3ae03f689 100644 --- a/ext/sodium/libsodium.c +++ b/ext/sodium/libsodium.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Frank Denis | +----------------------------------------------------------------------+ diff --git a/ext/sodium/php_libsodium.h b/ext/sodium/php_libsodium.h index 673541fe784c..8132472d684f 100644 --- a/ext/sodium/php_libsodium.h +++ b/ext/sodium/php_libsodium.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Frank Denis | +----------------------------------------------------------------------+ diff --git a/ext/sodium/sodium_pwhash.c b/ext/sodium/sodium_pwhash.c index 32e4f72634c3..ba48b0158cac 100644 --- a/ext/sodium/sodium_pwhash.c +++ b/ext/sodium/sodium_pwhash.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index a4f3284025f1..43fd04f7d021 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/php_spl.h b/ext/spl/php_spl.h index c2f7ebf9eee1..b1d4f4416a79 100644 --- a/ext/spl/php_spl.h +++ b/ext/spl/php_spl.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index 09d42b384e3a..737260ad6f0d 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_array.h b/ext/spl/spl_array.h index 86de7a955c5b..f99bb3f6fe88 100644 --- a/ext/spl/spl_array.h +++ b/ext/spl/spl_array.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index daaba27cbfc6..1468cec6ccf3 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ @@ -1813,21 +1811,24 @@ static zend_result spl_filesystem_file_read_ex(spl_filesystem_object *intern, bo } if (!buf) { - intern->u.file.current_line = ZSTR_EMPTY_ALLOC(); - } else { - if (!csv && SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_DROP_NEW_LINE)) { - if (line_len > 0 && buf[line_len - 1] == '\n') { + if (!silent) { + spl_filesystem_file_cannot_read(intern); + } + return FAILURE; + } + + if (!csv && SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_DROP_NEW_LINE)) { + if (line_len > 0 && buf[line_len - 1] == '\n') { + line_len--; + if (line_len > 0 && buf[line_len - 1] == '\r') { line_len--; - if (line_len > 0 && buf[line_len - 1] == '\r') { - line_len--; - } - buf[line_len] = '\0'; } + buf[line_len] = '\0'; } - - intern->u.file.current_line = zend_string_init(buf, line_len, /* persistent */ false); - efree(buf); } + + intern->u.file.current_line = zend_string_init(buf, line_len, /* persistent */ false); + efree(buf); intern->u.file.current_line_num += line_add; return SUCCESS; @@ -2093,10 +2094,17 @@ PHP_METHOD(SplFileObject, fgets) CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); - if (spl_filesystem_file_read_ex(intern, /* silent */ false, /* line_add */ 1, /* csv */ false) == FAILURE) { - RETURN_THROWS(); + if (intern->u.file.current_line) { + RETVAL_STR_COPY(intern->u.file.current_line); + spl_filesystem_file_free_line(intern); + intern->u.file.current_line_num++; + } else { + if (spl_filesystem_file_read_ex(intern, /* silent */ false, /* line_add */ 1, /* csv */ false) == FAILURE) { + RETURN_THROWS(); + } + RETVAL_STR_COPY(intern->u.file.current_line); + spl_filesystem_file_free_line(intern); } - RETURN_STR_COPY(intern->u.file.current_line); } /* }}} */ /* {{{ Return current line from file */ @@ -2142,6 +2150,12 @@ PHP_METHOD(SplFileObject, next) ZEND_PARSE_PARAMETERS_NONE(); + if (!intern->u.file.current_line && Z_ISUNDEF(intern->u.file.current_zval)) { + if (spl_filesystem_file_read_line(ZEND_THIS, intern, true) == FAILURE) { + return; + } + } + spl_filesystem_file_free_line(intern); if (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { spl_filesystem_file_read_line(ZEND_THIS, intern, true); @@ -2629,7 +2643,7 @@ PHP_METHOD(SplFileObject, seek) for (i = 0; i < line_pos; i++) { if (spl_filesystem_file_read_line(ZEND_THIS, intern, true) == FAILURE) { - return; + break; } } if (line_pos > 0 && !SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { @@ -2648,9 +2662,8 @@ PHP_METHOD(SplFileObject, __toString) if (!intern->u.file.current_line) { ZEND_ASSERT(Z_ISUNDEF(intern->u.file.current_zval)); - zend_result result = spl_filesystem_file_read_line(ZEND_THIS, intern, false); - if (UNEXPECTED(result != SUCCESS)) { - RETURN_THROWS(); + if (spl_filesystem_file_read_line(ZEND_THIS, intern, true) == FAILURE) { + RETURN_EMPTY_STRING(); } } diff --git a/ext/spl/spl_directory.h b/ext/spl/spl_directory.h index a2d1d8d85475..6d940e8aa8ef 100644 --- a/ext/spl/spl_directory.h +++ b/ext/spl/spl_directory.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index c72cae38a9ce..a4d89dc87bcf 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Etienne Kneuss | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_dllist.h b/ext/spl/spl_dllist.h index 1ade7c44a3f0..fb2204b2aca9 100644 --- a/ext/spl/spl_dllist.h +++ b/ext/spl/spl_dllist.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Etienne Kneuss | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_exceptions.c b/ext/spl/spl_exceptions.c index 79449f35d840..8ceba1f7a6a5 100644 --- a/ext/spl/spl_exceptions.c +++ b/ext/spl/spl_exceptions.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_exceptions.h b/ext/spl/spl_exceptions.h index 8c390f7646ec..be1de4f51d1b 100644 --- a/ext/spl/spl_exceptions.h +++ b/ext/spl/spl_exceptions.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c index 6f976923341b..82e09702219a 100644 --- a/ext/spl/spl_fixedarray.c +++ b/ext/spl/spl_fixedarray.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Antony Dovgal | | Etienne Kneuss | diff --git a/ext/spl/spl_fixedarray.h b/ext/spl/spl_fixedarray.h index a6cb838b9fc9..e0661a95d872 100644 --- a/ext/spl/spl_fixedarray.h +++ b/ext/spl/spl_fixedarray.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Antony Dovgal | | Etienne Kneuss | diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c index e3963aced7eb..2e04baa26dee 100644 --- a/ext/spl/spl_functions.c +++ b/ext/spl/spl_functions.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_functions.h b/ext/spl/spl_functions.h index 409ce9fcada6..1d5010030564 100644 --- a/ext/spl/spl_functions.h +++ b/ext/spl/spl_functions.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c index eef25b9e3593..642fe4b95f05 100644 --- a/ext/spl/spl_heap.c +++ b/ext/spl/spl_heap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Etienne Kneuss | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_heap.h b/ext/spl/spl_heap.h index ccc0dd706bfe..153af1171544 100644 --- a/ext/spl/spl_heap.h +++ b/ext/spl/spl_heap.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Etienne Kneuss | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 4f1a2a407bef..c77aa9c1cf4b 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h index e77e34fb20c8..5b60705e9b23 100644 --- a/ext/spl/spl_iterators.h +++ b/ext/spl/spl_iterators.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index 68f132069a7c..6e9ea0e1ba99 100644 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | | Etienne Kneuss | @@ -241,11 +239,25 @@ static zend_result spl_object_storage_detach(spl_SplObjectStorage *intern, zend_ return ret; } /* }}}*/ +/* TODO: make this an official Zend API? */ +#define SPL_SAFE_HASH_FOREACH_PTR(_ht, _ptr) do { \ + const HashTable *__ht = (_ht); \ + zval *_z = __ht->arPacked; \ + for (uint32_t _idx = 0; _idx < __ht->nNumUsed; _idx++, _z = ZEND_HASH_ELEMENT(__ht, _idx)) { \ + if (UNEXPECTED(Z_ISUNDEF_P(_z))) continue; \ + _ptr = Z_PTR_P(_z); + static void spl_object_storage_addall(spl_SplObjectStorage *intern, spl_SplObjectStorage *other) { /* {{{ */ spl_SplObjectStorageElement *element; - ZEND_HASH_FOREACH_PTR(&other->storage, element) { - spl_object_storage_attach(intern, element->obj, &element->inf); + SPL_SAFE_HASH_FOREACH_PTR(&other->storage, element) { + zval zv; + zend_object *obj = element->obj; + GC_ADDREF(obj); + ZVAL_COPY(&zv, &element->inf); + spl_object_storage_attach(intern, obj, &zv); + zval_ptr_dtor(&zv); + OBJ_RELEASE(obj); } ZEND_HASH_FOREACH_END(); intern->index = 0; @@ -626,10 +638,13 @@ PHP_METHOD(SplObjectStorage, removeAllExcept) other = Z_SPLOBJSTORAGE_P(obj); - ZEND_HASH_FOREACH_PTR(&intern->storage, element) { - if (!spl_object_storage_contains(other, element->obj)) { - spl_object_storage_detach(intern, element->obj); + SPL_SAFE_HASH_FOREACH_PTR(&intern->storage, element) { + zend_object *elem_obj = element->obj; + GC_ADDREF(elem_obj); + if (!spl_object_storage_contains(other, elem_obj)) { + spl_object_storage_detach(intern, elem_obj); } + OBJ_RELEASE(elem_obj); } ZEND_HASH_FOREACH_END(); zend_hash_internal_pointer_reset_ex(&intern->storage, &intern->pos); diff --git a/ext/spl/spl_observer.h b/ext/spl/spl_observer.h index b7c22b2dfca0..08d3126d9c8b 100644 --- a/ext/spl/spl_observer.h +++ b/ext/spl/spl_observer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt b/ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt index 0c21d0b905e9..7d0e3ae8d969 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt +++ b/ext/spl/tests/SplFileObject/SplFileObject_key_error001.phpt @@ -18,5 +18,5 @@ var_dump($s->key()); var_dump($s->valid()); ?> --EXPECT-- -int(14) +int(12) bool(false) diff --git a/ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt b/ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt index 8fc9b7fef0a5..0834dbc0524f 100644 --- a/ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt +++ b/ext/spl/tests/SplFileObject/SplFileObject_key_error002.phpt @@ -18,5 +18,5 @@ var_dump($s->key()); var_dump($s->valid()); ?> --EXPECT-- -int(13) +int(12) bool(false) diff --git a/ext/spl/tests/SplFileObject/bug81477.phpt b/ext/spl/tests/SplFileObject/bug81477.phpt index f7730a791aa0..421c74dc4d68 100644 --- a/ext/spl/tests/SplFileObject/bug81477.phpt +++ b/ext/spl/tests/SplFileObject/bug81477.phpt @@ -21,7 +21,6 @@ string(8) "baz,bat " string(10) "more,data " -string(0) "" --CLEAN-- rewind(); var_dump($file->fgetcsv()); ?> --EXPECT-- -array(1) { - [0]=> - NULL -} +bool(false) bool(false) diff --git a/ext/spl/tests/SplFileObject/gh8561.phpt b/ext/spl/tests/SplFileObject/gh8561.phpt new file mode 100644 index 000000000000..adf36afb8b29 --- /dev/null +++ b/ext/spl/tests/SplFileObject/gh8561.phpt @@ -0,0 +1,30 @@ +--TEST-- +GH-8561 (SplFileObject: key() and current() unsynchronized after fgets()) +--FILE-- +fwrite("line {$i}" . PHP_EOL); +} + +// Case 1: rewind + fgets, then key/current +$file->rewind(); +$file->fgets(); +echo "After rewind+fgets: key=" . $file->key() . " current=" . trim($file->current()) . "\n"; + +// Case 2: multiple fgets +$file->rewind(); +$file->fgets(); +$file->fgets(); +echo "After rewind+fgets+fgets: key=" . $file->key() . " current=" . trim($file->current()) . "\n"; + +// Case 3: current then fgets +$file->rewind(); +$file->current(); +$file->fgets(); +echo "After current+fgets: key=" . $file->key() . " current=" . trim($file->current()) . "\n"; +?> +--EXPECT-- +After rewind+fgets: key=1 current=line 1 +After rewind+fgets+fgets: key=2 current=line 2 +After current+fgets: key=1 current=line 1 diff --git a/ext/spl/tests/SplFileObject/gh8563.phpt b/ext/spl/tests/SplFileObject/gh8563.phpt new file mode 100644 index 000000000000..03891750f8bf --- /dev/null +++ b/ext/spl/tests/SplFileObject/gh8563.phpt @@ -0,0 +1,29 @@ +--TEST-- +GH-8563 (Different results for seek() on SplFileObject and SplTempFileObject) +--FILE-- +fwrite("line {$i}" . PHP_EOL); + $file_02->fwrite("line {$i}" . PHP_EOL); +} + +$file_01->rewind(); +$file_02->rewind(); + +$file_01->seek(10); +$file_02->seek(10); + +echo 'SplFileObject: ' . $file_01->key() . "\n"; +echo 'SplTempFileObject: ' . $file_02->key() . "\n"; +?> +--CLEAN-- + +--EXPECT-- +SplFileObject: 5 +SplTempFileObject: 5 diff --git a/ext/spl/tests/SplFileObject/gh8564.phpt b/ext/spl/tests/SplFileObject/gh8564.phpt new file mode 100644 index 000000000000..ff16893c4c6b --- /dev/null +++ b/ext/spl/tests/SplFileObject/gh8564.phpt @@ -0,0 +1,20 @@ +--TEST-- +GH-8564 (SplFileObject: next() moves to nonexistent indexes) +--FILE-- +fwrite("line {$i}" . PHP_EOL); +} + +$file->rewind(); +for ($i = 0; $i < 10; $file->next(), $i++); +echo "next() 10x: key=" . $file->key() . " valid=" . var_export($file->valid(), true) . "\n"; + +$file->rewind(); +$file->seek(10); +echo "seek(10): key=" . $file->key() . " valid=" . var_export($file->valid(), true) . "\n"; +?> +--EXPECT-- +next() 10x: key=5 valid=false +seek(10): key=5 valid=false diff --git a/ext/spl/tests/SplObjectStorage/concurrent_deletion.phpt b/ext/spl/tests/SplObjectStorage/concurrent_deletion.phpt new file mode 100644 index 000000000000..ae063f1c9b03 --- /dev/null +++ b/ext/spl/tests/SplObjectStorage/concurrent_deletion.phpt @@ -0,0 +1,46 @@ +--TEST-- +SplObjectStorage: Concurrent deletion during iteration +--CREDITS-- +cnitlrt +--FILE-- +removeAllExcept($other)); + +unset($victim, $other); +$victim = new SplObjectStorage(); +$other = new EvilStorage(); + +for ($i = 0; $i < 1024; $i++) { + $o = new stdClass(); + $victim[$o] = null; + $other[$o] = null; +} + +var_dump($other->addAll($victim)); +?> +--EXPECTF-- +int(%d) +int(1024) diff --git a/ext/spl/tests/SplObjectStorage/concurrent_deletion_addall.phpt b/ext/spl/tests/SplObjectStorage/concurrent_deletion_addall.phpt new file mode 100644 index 000000000000..af3fc381b562 --- /dev/null +++ b/ext/spl/tests/SplObjectStorage/concurrent_deletion_addall.phpt @@ -0,0 +1,43 @@ +--TEST-- +SplObjectStorage: Concurrent deletion during addAll +--CREDITS-- +cnitlrt +--FILE-- +addAll($storage); + +var_dump($evil, $storage); + +?> +--EXPECTF-- +object(EvilStorage)#%d (1) { + ["storage":"SplObjectStorage":private]=> + array(1) { + [0]=> + array(2) { + ["obj"]=> + object(stdClass)#%d (0) { + } + ["inf"]=> + string(3) "foo" + } + } +} +object(SplObjectStorage)#%d (1) { + ["storage":"SplObjectStorage":private]=> + array(0) { + } +} diff --git a/ext/spl/tests/SplObjectStorage/concurrent_deletion_removeexcept.phpt b/ext/spl/tests/SplObjectStorage/concurrent_deletion_removeexcept.phpt new file mode 100644 index 000000000000..b2ed211b304a --- /dev/null +++ b/ext/spl/tests/SplObjectStorage/concurrent_deletion_removeexcept.phpt @@ -0,0 +1,35 @@ +--TEST-- +SplObjectStorage: Concurrent deletion during removeAllExcept +--CREDITS-- +cnitlrt +--FILE-- +removeAllExcept($evil); + +var_dump($evil, $storage); + +?> +--EXPECTF-- +object(EvilStorage)#%d (1) { + ["storage":"SplObjectStorage":private]=> + array(0) { + } +} +object(SplObjectStorage)#%d (1) { + ["storage":"SplObjectStorage":private]=> + array(0) { + } +} diff --git a/ext/spl/tests/gh13685.phpt b/ext/spl/tests/gh13685.phpt index 0f679d0e93fc..2bdddec4584e 100644 --- a/ext/spl/tests/gh13685.phpt +++ b/ext/spl/tests/gh13685.phpt @@ -44,9 +44,9 @@ try { string(14) ""A", "B", "C" " string(13) ""D", "E", "F"" -Cannot read from file php://temp +string(0) "" --- Use csv control --- string(14) ""A", "B", "C" " string(13) ""D", "E", "F"" -Cannot read from file php://temp +string(0) "" diff --git a/ext/spl/tests/gh8562.phpt b/ext/spl/tests/gh8562.phpt new file mode 100644 index 000000000000..40b2554f5794 --- /dev/null +++ b/ext/spl/tests/gh8562.phpt @@ -0,0 +1,27 @@ +--TEST-- +GH-8562 (SplFileObject::current() returns wrong result after call to next()) +--FILE-- +fwrite("line {$i}" . PHP_EOL); +} + +$file->rewind(); +$file->next(); +echo "After rewind+next: key=" . $file->key() . " current=" . trim($file->current()) . "\n"; + +$file->rewind(); +$file->next(); +$file->next(); +echo "After rewind+next+next: key=" . $file->key() . " current=" . trim($file->current()) . "\n"; + +$file->rewind(); +$file->current(); +$file->next(); +echo "After current+next: key=" . $file->key() . " current=" . trim($file->current()) . "\n"; +?> +--EXPECT-- +After rewind+next: key=1 current=line 1 +After rewind+next+next: key=2 current=line 2 +After current+next: key=1 current=line 1 diff --git a/ext/sqlite3/php_sqlite3.h b/ext/sqlite3/php_sqlite3.h index 79f8cf436030..8a9cf3af1598 100644 --- a/ext/sqlite3/php_sqlite3.h +++ b/ext/sqlite3/php_sqlite3.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ diff --git a/ext/sqlite3/php_sqlite3_structs.h b/ext/sqlite3/php_sqlite3_structs.h index 5d9f69cc5770..a43b2f76ca32 100644 --- a/ext/sqlite3/php_sqlite3_structs.h +++ b/ext/sqlite3/php_sqlite3_structs.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 27d8cd17fbd5..7d73b9923695 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Scott MacVicar | +----------------------------------------------------------------------+ @@ -38,7 +36,7 @@ ZEND_DECLARE_MODULE_GLOBALS(sqlite3) static PHP_GINIT_FUNCTION(sqlite3); static int php_sqlite3_authorizer(void *autharg, int action, const char *arg1, const char *arg2, const char *arg3, const char *arg4); static void sqlite3_param_dtor(zval *data); -static int php_sqlite3_compare_stmt_free(php_sqlite3_stmt **stmt_obj_ptr, sqlite3_stmt *statement); +static int php_sqlite3_compare_stmt_free(php_sqlite3_stmt **stmt_obj_ptr, php_sqlite3_stmt *statement); static zend_always_inline void php_sqlite3_fetch_one(int n_cols, php_sqlite3_result *result_obj, zend_long mode, zval *result); #define SQLITE3_CHECK_INITIALIZED(db_obj, member, class_name) \ @@ -2120,7 +2118,7 @@ PHP_METHOD(SQLite3Result, finalize) /* We need to finalize an internal statement */ if (!result_obj->is_prepared_statement) { - zend_llist_del_element(&(result_obj->db_obj->free_list), &result_obj->stmt_obj, + zend_llist_del_element(&(result_obj->db_obj->free_list), result_obj->stmt_obj, (int (*)(void *, void *)) php_sqlite3_compare_stmt_free); } else { sqlite3_reset(result_obj->stmt_obj->stmt); @@ -2235,9 +2233,9 @@ static void php_sqlite3_free_list_dtor(void **item) } /* }}} */ -static int php_sqlite3_compare_stmt_free(php_sqlite3_stmt **stmt_obj_ptr, sqlite3_stmt *statement ) /* {{{ */ +static int php_sqlite3_compare_stmt_free(php_sqlite3_stmt **stmt_obj_ptr, php_sqlite3_stmt *statement ) /* {{{ */ { - return ((*stmt_obj_ptr)->initialised && statement == (*stmt_obj_ptr)->stmt); + return ((*stmt_obj_ptr)->initialised && statement == *stmt_obj_ptr); } /* }}} */ @@ -2351,7 +2349,7 @@ static void php_sqlite3_stmt_object_free_storage(zend_object *object) /* {{{ */ } if (intern->initialised) { - zend_llist_del_element(&(intern->db_obj->free_list), intern->stmt, + zend_llist_del_element(&(intern->db_obj->free_list), intern, (int (*)(void *, void *)) php_sqlite3_compare_stmt_free); } diff --git a/ext/sqlite3/tests/bug72668.phpt b/ext/sqlite3/tests/bug72668.phpt index 40ede8883cc2..7f33338eb5e6 100644 --- a/ext/sqlite3/tests/bug72668.phpt +++ b/ext/sqlite3/tests/bug72668.phpt @@ -12,20 +12,20 @@ $db = new SQLite3(':memory:'); $db->createFunction('my_udf_md5', 'my_udf_md5'); try { - $result = $db->query('SELECT my_udf_md5("test")'); + $result = $db->query("SELECT my_udf_md5('test')"); var_dump($result); } catch(\Exception $e) { echo "Exception: ".$e->getMessage(); } try { - $result = $db->querySingle('SELECT my_udf_md5("test")'); + $result = $db->querySingle("SELECT my_udf_md5('test')"); var_dump($result); } catch(\Exception $e) { echo "Exception: ".$e->getMessage(); } -$statement = $db->prepare('SELECT my_udf_md5("test")'); +$statement = $db->prepare("SELECT my_udf_md5('test')"); try { $result = $statement->execute(); var_dump($result); diff --git a/ext/sqlite3/tests/sqlite3_29_createfunction.phpt b/ext/sqlite3/tests/sqlite3_29_createfunction.phpt index ef28b3b62def..1a511ee13996 100644 --- a/ext/sqlite3/tests/sqlite3_29_createfunction.phpt +++ b/ext/sqlite3/tests/sqlite3_29_createfunction.phpt @@ -9,14 +9,14 @@ require_once(__DIR__ . '/new_db.inc'); $func = 'strtoupper'; var_dump($db->createfunction($func, $func)); -var_dump($db->querySingle('SELECT strtoupper("test")')); +var_dump($db->querySingle("SELECT strtoupper('test')")); $func2 = 'strtolower'; var_dump($db->createfunction($func2, $func2)); -var_dump($db->querySingle('SELECT strtolower("TEST")')); +var_dump($db->querySingle("SELECT strtolower('TEST')")); var_dump($db->createfunction($func, $func2)); -var_dump($db->querySingle('SELECT strtoupper("tEst")')); +var_dump($db->querySingle("SELECT strtoupper('tEst')")); ?> diff --git a/ext/sqlite3/tests/sqlite3_37_createfunction_flags.phpt b/ext/sqlite3/tests/sqlite3_37_createfunction_flags.phpt index 4297d622e939..962075bf1478 100644 --- a/ext/sqlite3/tests/sqlite3_37_createfunction_flags.phpt +++ b/ext/sqlite3/tests/sqlite3_37_createfunction_flags.phpt @@ -13,14 +13,14 @@ require_once(__DIR__ . '/new_db.inc'); $func = 'strtoupper'; var_dump($db->createfunction($func, $func, 1, SQLITE3_DETERMINISTIC)); -var_dump($db->querySingle('SELECT strtoupper("test")')); +var_dump($db->querySingle("SELECT strtoupper('test')")); $func2 = 'strtolower'; var_dump($db->createfunction($func2, $func2, 1, SQLITE3_DETERMINISTIC)); -var_dump($db->querySingle('SELECT strtolower("TEST")')); +var_dump($db->querySingle("SELECT strtolower('TEST')")); var_dump($db->createfunction($func, $func2, 1, SQLITE3_DETERMINISTIC)); -var_dump($db->querySingle('SELECT strtoupper("tEst")')); +var_dump($db->querySingle("SELECT strtoupper('tEst')")); ?> diff --git a/ext/sqlite3/tests/sqlite3_dqs.phpt b/ext/sqlite3/tests/sqlite3_dqs.phpt new file mode 100644 index 000000000000..1efa8ad475fe --- /dev/null +++ b/ext/sqlite3/tests/sqlite3_dqs.phpt @@ -0,0 +1,28 @@ +--TEST-- +SQLite3 DQS +--EXTENSIONS-- +sqlite3 +--SKIPIF-- +enableExceptions(true); + $db->exec('SELECT "test"'); +} catch (\SQLite3Exception) { + die('skip SQLite is lacking DQS'); +} +?> +--FILE-- +exec('CREATE TABLE test (s1 VARCHAR(255), s2 VARCHAR(255))'); +$db->exec('INSERT INTO test VALUES (\'test\', "test")'); +var_dump($db->prepare('SELECT * FROM test')->execute()->fetchArray(SQLITE3_ASSOC)); +?> +--EXPECT-- +array(2) { + ["s1"]=> + string(4) "test" + ["s2"]=> + string(4) "test" +} diff --git a/ext/sqlite3/tests/sqlite3_explain.phpt b/ext/sqlite3/tests/sqlite3_explain.phpt index 40648588733c..1f9d4fc940e4 100644 --- a/ext/sqlite3/tests/sqlite3_explain.phpt +++ b/ext/sqlite3/tests/sqlite3_explain.phpt @@ -14,7 +14,7 @@ if ($version <= 3043000) die("skip for sqlite3 < 3.43.0"); require_once(__DIR__ . '/new_db.inc'); $db->exec('CREATE TABLE test_explain (a string);'); -$stmt = $db->prepare('INSERT INTO test_explain VALUES ("first insert"), ("second_insert")'); +$stmt = $db->prepare("INSERT INTO test_explain VALUES ('first insert'), ('second_insert')"); $stmt->setExplain(Sqlite3Stmt::EXPLAIN_MODE_EXPLAIN); var_dump($stmt->explain() == Sqlite3Stmt::EXPLAIN_MODE_EXPLAIN); $r = $stmt->execute(); @@ -28,7 +28,7 @@ $result = []; while (($arr = $r->fetchArray(SQLITE3_ASSOC)) !== false) $result[] = $arr; var_dump($result); -$stmt = $db->prepare('INSERT INTO test_explain VALUES ("first insert"), ("second_insert")'); +$stmt = $db->prepare("INSERT INTO test_explain VALUES ('first insert'), ('second_insert')"); $stmt->setExplain(Sqlite3Stmt::EXPLAIN_MODE_PREPARED); $stmt->execute(); $stmts = $db->prepare('SELECT * FROM test_explain'); @@ -81,7 +81,7 @@ array(%d) { ["opcode"]=> string(%d) "%s" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(%d) ["p3"]=> @@ -102,7 +102,7 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(2) + int(%d) ["p3"]=> int(0) ["p4"]=> @@ -119,7 +119,7 @@ array(%d) { ["opcode"]=> string(5) "Yield" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(0) ["p3"]=> @@ -140,7 +140,7 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(2) + int(%d) ["p3"]=> int(0) ["p4"]=> @@ -157,7 +157,7 @@ array(%d) { ["opcode"]=> string(5) "Yield" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(0) ["p3"]=> @@ -176,7 +176,7 @@ array(%d) { ["opcode"]=> string(12) "EndCoroutine" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(0) ["p3"]=> @@ -214,7 +214,7 @@ array(%d) { ["opcode"]=> string(5) "Yield" ["p1"]=> - int(3) + int(%d) ["p2"]=> int(%d) ["p3"]=> @@ -235,7 +235,7 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(1) + int(%d) ["p3"]=> int(0) ["p4"]=> @@ -252,11 +252,11 @@ array(%d) { ["opcode"]=> string(10) "MakeRecord" ["p1"]=> - int(2) + int(%d) ["p2"]=> int(1) ["p3"]=> - int(4) + int(%d) ["p4"]=> string(1) "C" ["p5"]=> @@ -273,9 +273,9 @@ array(%d) { ["p1"]=> int(0) ["p2"]=> - int(4) + int(%d) ["p3"]=> - int(1) + int(%d) ["p4"]=> string(12) "test_explain" ["p5"]=> diff --git a/ext/sqlite3/tests/sqlite3_rename_column.phpt b/ext/sqlite3/tests/sqlite3_rename_column.phpt index 6b4e23bc7186..a3a4caef3ce6 100644 --- a/ext/sqlite3/tests/sqlite3_rename_column.phpt +++ b/ext/sqlite3/tests/sqlite3_rename_column.phpt @@ -14,7 +14,7 @@ if (SQLite3::version()['versionNumber'] < 3025000) { $db = new SQLite3(':memory:'); $db->exec('CREATE TABLE tbl (orig text)'); -$db->exec('insert into tbl values ("one"), ("two")'); +$db->exec("insert into tbl values ('one'), ('two')"); $res1 = $db->prepare('select * from tbl')->execute(); $res2 = $db->prepare('select * from tbl')->execute(); diff --git a/ext/sqlite3/tests/sqlite3_stmt_busy.phpt b/ext/sqlite3/tests/sqlite3_stmt_busy.phpt index 8110d374afe6..33eb759772be 100644 --- a/ext/sqlite3/tests/sqlite3_stmt_busy.phpt +++ b/ext/sqlite3/tests/sqlite3_stmt_busy.phpt @@ -12,7 +12,7 @@ if ($version['versionNumber'] < 3007004) die("skip"); require_once(__DIR__ . '/new_db.inc'); $db->exec('CREATE TABLE test_busy (a string);'); -$db->exec('INSERT INTO test_busy VALUES ("interleaved"), ("statements")'); +$db->exec("INSERT INTO test_busy VALUES ('interleaved'), ('statements')"); $st = $db->prepare('SELECT a FROM test_busy'); var_dump($st->busy()); $r = $st->execute(); diff --git a/ext/sqlite3/tests/sqlite3_trampoline_createfunction.phpt b/ext/sqlite3/tests/sqlite3_trampoline_createfunction.phpt index 81245f5b4bef..52d5b726415e 100644 --- a/ext/sqlite3/tests/sqlite3_trampoline_createfunction.phpt +++ b/ext/sqlite3/tests/sqlite3_trampoline_createfunction.phpt @@ -16,8 +16,8 @@ class TrampolineTest { $o = new TrampolineTest(); $callback = [$o, 'strtoupper']; var_dump($db->createfunction('strtoupper', $callback)); -var_dump($db->querySingle('SELECT strtoupper("test")')); -var_dump($db->querySingle('SELECT strtoupper("test")')); +var_dump($db->querySingle("SELECT strtoupper('test')")); +var_dump($db->querySingle("SELECT strtoupper('test')")); ?> --EXPECT-- diff --git a/ext/standard/array.c b/ext/standard/array.c index f391829c676a..e175b7b8d2f4 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -60,6 +58,7 @@ /* }}} */ ZEND_DECLARE_MODULE_GLOBALS(array) +PHPAPI zend_class_entry *sort_direction_ce; /* {{{ php_array_init_globals */ static void php_array_init_globals(zend_array_globals *array_globals) @@ -2817,7 +2816,7 @@ static uint8_t php_range_process_input(const zval *input, uint32_t arg_num, zend *dval = 0.0; return IS_STRING; } - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -4798,7 +4797,7 @@ PHP_FUNCTION(array_change_key_case) zend_string *string_key; zend_string *new_key; zend_ulong num_key; - zend_long change_to_upper=0; + zend_long change_to_upper = PHP_CASE_LOWER; ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_ARRAY(array) @@ -4806,13 +4805,18 @@ PHP_FUNCTION(array_change_key_case) Z_PARAM_LONG(change_to_upper) ZEND_PARSE_PARAMETERS_END(); + if (change_to_upper != PHP_CASE_LOWER && change_to_upper != PHP_CASE_UPPER) { + zend_argument_value_error(2, "must be either CASE_LOWER or CASE_UPPER"); + RETURN_THROWS(); + } + array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(array))); ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_key, string_key, entry) { if (!string_key) { entry = zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry); } else { - if (change_to_upper) { + if (change_to_upper == PHP_CASE_UPPER) { new_key = zend_string_toupper(string_key); } else { new_key = zend_string_tolower(string_key); diff --git a/ext/standard/assert.c b/ext/standard/assert.c index 501ea5508dd3..a976aeda1494 100644 --- a/ext/standard/assert.c +++ b/ext/standard/assert.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/standard/base64.c b/ext/standard/base64.c index 02b8fa421be8..5c3f876ef2b9 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | | Xinchen Hui | diff --git a/ext/standard/base64.h b/ext/standard/base64.h index 19ff0b60d252..a866541b727b 100644 --- a/ext/standard/base64.h +++ b/ext/standard/base64.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | | Xinchen Hui | diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index a7417f2a3903..5c6b1ce1d1d1 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -297,6 +295,7 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ assertion_error_ce = register_class_AssertionError(zend_ce_error); rounding_mode_ce = register_class_RoundingMode(); + sort_direction_ce = register_class_SortDirection(); BASIC_MINIT_SUBMODULE(var) BASIC_MINIT_SUBMODULE(file) @@ -697,7 +696,7 @@ PHP_FUNCTION(getenv) ZEND_PARSE_PARAMETERS_START(0, 2) Z_PARAM_OPTIONAL - Z_PARAM_STRING_OR_NULL(str, str_len) + Z_PARAM_PATH_OR_NULL(str, str_len) Z_PARAM_BOOL(local_only) ZEND_PARSE_PARAMETERS_END(); @@ -740,7 +739,7 @@ PHP_FUNCTION(putenv) #endif ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STRING(setting, setting_len) + Z_PARAM_PATH(setting, setting_len) ZEND_PARSE_PARAMETERS_END(); if (setting_len == 0 || setting[0] == '=') { @@ -1282,9 +1281,9 @@ static void add_config_entries(HashTable *hash, zval *return_value) /* {{{ */ zend_string *key; zval *zv; - ZEND_HASH_FOREACH_KEY_VAL(hash, h, key, zv) + ZEND_HASH_FOREACH_KEY_VAL(hash, h, key, zv) { add_config_entry(h, key, zv, return_value); - ZEND_HASH_FOREACH_END(); + } ZEND_HASH_FOREACH_END(); } /* }}} */ diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index 004279b9d1ae..6bd227eac5d2 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index 6d0c565fc2d4..1999c9b92be1 100644 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -90,6 +90,11 @@ */ const SORT_FLAG_CASE = UNKNOWN; +enum SortDirection { + case Ascending; + case Descending; +} + /** * @var int * @cvalue PHP_CASE_LOWER @@ -1636,7 +1641,10 @@ function in_array(mixed $needle, array $haystack, bool $strict = false): bool {} */ function array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false {} -/** @prefer-ref $array */ +/** + * @prefer-ref $array + * @forbid-dynamic-calls + */ function extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int {} /** @@ -1644,6 +1652,7 @@ function extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = "" * @param array|string $var_names * @return array * @refcount 1 + * @forbid-dynamic-calls */ function compact($var_name, ...$var_names): array {} @@ -1874,7 +1883,7 @@ function array_product(array $array): int|float {} function array_reduce(array $array, callable $callback, mixed $initial = null): mixed {} -function array_filter(array $array, ?callable $callback = null, int $mode = ARRAY_FILTER_USE_KEY): array {} +function array_filter(array $array, ?callable $callback = null, int $mode = ARRAY_FILTER_USE_VALUE): array {} function array_find(array $array, callable $callback): mixed {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index d0109fa27c96..e51a837ffa4d 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit basic_functions.stub.php instead. - * Stub hash: f5583557f058e4862750d1262296d7f59cb0eed0 + * Stub hash: 36b71aa7bbfe478a5e4af400b2822a77067efa2f * Has decl header: yes */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0) @@ -346,7 +346,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_filter, 0, 1, IS_ARRAY, 0) ZEND_ARG_TYPE_INFO(0, array, IS_ARRAY, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, callback, IS_CALLABLE, 1, "null") - ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "ARRAY_FILTER_USE_KEY") + ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "ARRAY_FILTER_USE_VALUE") ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_find, 0, 2, IS_MIXED, 0) @@ -2944,8 +2944,16 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(array_walk_recursive, arginfo_array_walk_recursive) ZEND_RAW_FENTRY("in_array", zif_in_array, arginfo_in_array, ZEND_ACC_COMPILE_TIME_EVAL, frameless_function_infos_in_array, NULL) ZEND_RAW_FENTRY("array_search", zif_array_search, arginfo_array_search, ZEND_ACC_COMPILE_TIME_EVAL, NULL, NULL) - ZEND_FE(extract, arginfo_extract) - ZEND_FE(compact, arginfo_compact) +#if (PHP_VERSION_ID >= 80600) + ZEND_RAW_FENTRY("extract", zif_extract, arginfo_extract, ZEND_FENTRY_FLAGS(0, ZEND_ACC2_FORBID_DYN_CALLS), NULL, NULL) +#elif (PHP_VERSION_ID >= 80400) + ZEND_RAW_FENTRY("extract", zif_extract, arginfo_extract, 0, NULL, NULL) +#endif +#if (PHP_VERSION_ID >= 80600) + ZEND_RAW_FENTRY("compact", zif_compact, arginfo_compact, ZEND_FENTRY_FLAGS(0, ZEND_ACC2_FORBID_DYN_CALLS), NULL, NULL) +#elif (PHP_VERSION_ID >= 80400) + ZEND_RAW_FENTRY("compact", zif_compact, arginfo_compact, 0, NULL, NULL) +#endif ZEND_FE(array_fill, arginfo_array_fill) ZEND_FE(array_fill_keys, arginfo_array_fill_keys) ZEND_FE(range, arginfo_range) @@ -3980,6 +3988,17 @@ static void register_basic_functions_symbols(int module_number) attribute_Deprecated_const_ASSERT_EXCEPTION_0->args[1].name = ZSTR_KNOWN(ZEND_STR_MESSAGE); } +static zend_class_entry *register_class_SortDirection(void) +{ + zend_class_entry *class_entry = zend_register_internal_enum("SortDirection", IS_UNDEF, NULL); + + zend_enum_add_case_cstr(class_entry, "Ascending", NULL); + + zend_enum_add_case_cstr(class_entry, "Descending", NULL); + + return class_entry; +} + static zend_class_entry *register_class___PHP_Incomplete_Class(void) { zend_class_entry ce, *class_entry; diff --git a/ext/standard/basic_functions_decl.h b/ext/standard/basic_functions_decl.h index 139b47f2444d..b3eb25c5d988 100644 --- a/ext/standard/basic_functions_decl.h +++ b/ext/standard/basic_functions_decl.h @@ -1,8 +1,13 @@ /* This is a generated file, edit basic_functions.stub.php instead. - * Stub hash: f5583557f058e4862750d1262296d7f59cb0eed0 */ + * Stub hash: 36b71aa7bbfe478a5e4af400b2822a77067efa2f */ -#ifndef ZEND_BASIC_FUNCTIONS_DECL_f5583557f058e4862750d1262296d7f59cb0eed0_H -#define ZEND_BASIC_FUNCTIONS_DECL_f5583557f058e4862750d1262296d7f59cb0eed0_H +#ifndef ZEND_BASIC_FUNCTIONS_DECL_36b71aa7bbfe478a5e4af400b2822a77067efa2f_H +#define ZEND_BASIC_FUNCTIONS_DECL_36b71aa7bbfe478a5e4af400b2822a77067efa2f_H + +typedef enum zend_enum_SortDirection { + ZEND_ENUM_SortDirection_Ascending = 1, + ZEND_ENUM_SortDirection_Descending = 2, +} zend_enum_SortDirection; typedef enum zend_enum_RoundingMode { ZEND_ENUM_RoundingMode_HalfAwayFromZero = 1, @@ -15,4 +20,4 @@ typedef enum zend_enum_RoundingMode { ZEND_ENUM_RoundingMode_PositiveInfinity = 8, } zend_enum_RoundingMode; -#endif /* ZEND_BASIC_FUNCTIONS_DECL_f5583557f058e4862750d1262296d7f59cb0eed0_H */ +#endif /* ZEND_BASIC_FUNCTIONS_DECL_36b71aa7bbfe478a5e4af400b2822a77067efa2f_H */ diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c index ec9e3a59e4b8..7534615a946b 100644 --- a/ext/standard/browscap.c +++ b/ext/standard/browscap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/ext/standard/crc32.c b/ext/standard/crc32.c index e99c3ca9f5a0..fdf9df37c337 100644 --- a/ext/standard/crc32.c +++ b/ext/standard/crc32.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/crc32.h b/ext/standard/crc32.h index 261acdeb1fec..97f2bc01a282 100644 --- a/ext/standard/crc32.h +++ b/ext/standard/crc32.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/crc32_x86.c b/ext/standard/crc32_x86.c index 0b655fd6a483..5a6debc6f410 100644 --- a/ext/standard/crc32_x86.c +++ b/ext/standard/crc32_x86.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Frank Du | +----------------------------------------------------------------------+ diff --git a/ext/standard/crc32_x86.h b/ext/standard/crc32_x86.h index 91b5ba80e691..c46775f1af22 100644 --- a/ext/standard/crc32_x86.h +++ b/ext/standard/crc32_x86.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Frank Du | +----------------------------------------------------------------------+ diff --git a/ext/standard/credits.c b/ext/standard/credits.c index 4e8722db4d66..2b38cbf3b4e9 100644 --- a/ext/standard/credits.c +++ b/ext/standard/credits.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | diff --git a/ext/standard/credits.h b/ext/standard/credits.h index a0c5d1e7d90c..2a346dd06ddd 100644 --- a/ext/standard/credits.h +++ b/ext/standard/credits.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c index 54687f6cdf30..d8a9905cfc13 100644 --- a/ext/standard/crypt.c +++ b/ext/standard/crypt.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Bakken | | Zeev Suraski | diff --git a/ext/standard/css.c b/ext/standard/css.c index 41efc028ff72..87387c9a3826 100644 --- a/ext/standard/css.c +++ b/ext/standard/css.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Colin Viebrock | +----------------------------------------------------------------------+ diff --git a/ext/standard/css.h b/ext/standard/css.h index 6771541f5fc5..59dbef62204c 100644 --- a/ext/standard/css.h +++ b/ext/standard/css.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Colin Viebrock | +----------------------------------------------------------------------+ diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c index 93f47f0f858b..b60182ee7f33 100644 --- a/ext/standard/datetime.c +++ b/ext/standard/datetime.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/ext/standard/dir.c b/ext/standard/dir.c index 730ef6154907..f313d5f539d1 100644 --- a/ext/standard/dir.c +++ b/ext/standard/dir.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ @@ -588,9 +586,13 @@ PHP_FUNCTION(scandir) n = php_stream_scandir(dirn, &namelist, context, (void *) php_stream_dirent_alphasort); } else if (flags == PHP_SCANDIR_SORT_NONE) { n = php_stream_scandir(dirn, &namelist, context, NULL); - } else { + } else if (flags == PHP_SCANDIR_SORT_DESCENDING) { n = php_stream_scandir(dirn, &namelist, context, (void *) php_stream_dirent_alphasortr); - } + } else { + zend_argument_value_error(2, "must be one of the SCANDIR_SORT_ASCENDING, SCANDIR_SORT_DESCENDING, or SCANDIR_SORT_NONE constants"); + RETURN_THROWS(); + } + if (n < 0) { php_error_docref(NULL, E_WARNING, "(errno %d): %s", errno, strerror(errno)); RETURN_FALSE; diff --git a/ext/standard/dl.c b/ext/standard/dl.c index 209b0c1d3b01..63f627e51d88 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brian Schaffner | | Shane Caraveo | diff --git a/ext/standard/dl.h b/ext/standard/dl.h index 58de973bf4b5..9354caa2ca8d 100644 --- a/ext/standard/dl.h +++ b/ext/standard/dl.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Brian Schaffner | | Shane Caraveo | diff --git a/ext/standard/dns.c b/ext/standard/dns.c index a574d8dd9aeb..b3fcc1d236af 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: The typical suspects | | Pollita | diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c index 8caf5813395c..c9ff67e47b1e 100644 --- a/ext/standard/dns_win32.c +++ b/ext/standard/dns_win32.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Pierre A. Joye | +----------------------------------------------------------------------+ diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 7bacc976eac5..0e5903420a3e 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | | Ilia Alshanetsky | diff --git a/ext/standard/exec.h b/ext/standard/exec.h index 1ad755363e3d..879334285020 100644 --- a/ext/standard/exec.h +++ b/ext/standard/exec.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/file.c b/ext/standard/file.c index 364985f786b7..1841c242b870 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Bakken | diff --git a/ext/standard/file.h b/ext/standard/file.h index f8faebd02829..3c6160fd4bb1 100644 --- a/ext/standard/file.h +++ b/ext/standard/file.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c index 01c392f39360..e41f6d1abb61 100644 --- a/ext/standard/filestat.c +++ b/ext/standard/filestat.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/ext/standard/filters.c b/ext/standard/filters.c index c909211788b0..90dd471cf848 100644 --- a/ext/standard/filters.c +++ b/ext/standard/filters.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: | | Wez Furlong (wez@thebrainroom.com) | diff --git a/ext/standard/flock_compat.c b/ext/standard/flock_compat.c index b7e1df7cbc98..6967c4358901 100644 --- a/ext/standard/flock_compat.c +++ b/ext/standard/flock_compat.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/standard/flock_compat.h b/ext/standard/flock_compat.h index af0739bf1528..cfb6d82ba085 100644 --- a/ext/standard/flock_compat.h +++ b/ext/standard/flock_compat.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c index b0fbfcc89099..4324e7c14dd7 100644 --- a/ext/standard/formatted_print.c +++ b/ext/standard/formatted_print.c @@ -1,16 +1,14 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ - | Author: Stig S�ther Bakken | + | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ */ diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c index 2b9e00a57554..0b27a13e624c 100644 --- a/ext/standard/fsock.c +++ b/ext/standard/fsock.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Paul Panotzki - Bunyip Information Systems | | Jim Winstead | diff --git a/ext/standard/fsock.h b/ext/standard/fsock.h index 3789a01b7ea0..849d5052238c 100644 --- a/ext/standard/fsock.h +++ b/ext/standard/fsock.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Paul Panotzki - Bunyip Information Systems | | Jim Winstead | diff --git a/ext/standard/ftok.c b/ext/standard/ftok.c index 98715b2ee8a0..7f8702adbf84 100644 --- a/ext/standard/ftok.c +++ b/ext/standard/ftok.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andrew Sitnikov | +----------------------------------------------------------------------+ diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index 92200e64f238..73407aaa401c 100644 --- a/ext/standard/ftp_fopen_wrapper.c +++ b/ext/standard/ftp_fopen_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jim Winstead | diff --git a/ext/standard/head.c b/ext/standard/head.c index 797d8d66c56a..69e8d1f794ff 100644 --- a/ext/standard/head.c +++ b/ext/standard/head.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/head.h b/ext/standard/head.h index 0272fec2dc21..07c947f8ad0b 100644 --- a/ext/standard/head.h +++ b/ext/standard/head.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/hrtime.c b/ext/standard/hrtime.c index 652531bd3ed4..216810b7df1b 100644 --- a/ext/standard/hrtime.c +++ b/ext/standard/hrtime.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Niklas Keller | | Author: Anatol Belski | diff --git a/ext/standard/html.c b/ext/standard/html.c index eaba9ddffc1d..c8920f497d75 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jaakko Hyvätti | diff --git a/ext/standard/html.h b/ext/standard/html.h index 40c595ba5d89..8576a5c8b9ce 100644 --- a/ext/standard/html.h +++ b/ext/standard/html.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/html_tables.h b/ext/standard/html_tables.h index 2d17d3fa44be..16f30283fdd4 100644 --- a/ext/standard/html_tables.h +++ b/ext/standard/html_tables.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/standard/html_tables/html_table_gen.php b/ext/standard/html_tables/html_table_gen.php index bc76f6f7e945..a3b2d8807d70 100755 --- a/ext/standard/html_tables/html_table_gen.php +++ b/ext/standard/html_tables/html_table_gen.php @@ -2,15 +2,13 @@ . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Gustavo Lopes | +----------------------------------------------------------------------+ @@ -22,15 +20,13 @@ $t = <<. | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/standard/http.c b/ext/standard/http.c index 9ce8d5e559a7..99509e7ceb04 100644 --- a/ext/standard/http.c +++ b/ext/standard/http.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ @@ -79,7 +77,7 @@ static void php_url_encode_scalar(zval *scalar, smart_str *form_str, scalar = zend_enum_fetch_case_value(Z_OBJ_P(scalar)); goto try_again; /* All possible types are either handled here or previously */ - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index 1891347e2a66..f3172180bed9 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jim Winstead | @@ -546,6 +544,10 @@ static php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, smart_str_appendl(&header, "\r\n", sizeof("\r\n")-1); if (php_stream_write(stream, ZSTR_VAL(header.s), ZSTR_LEN(header.s)) != ZSTR_LEN(header.s)) { + if (reset_ssl_peer_name) { + php_stream_context_unset_option(PHP_STREAM_CONTEXT(stream), "ssl", "peer_name"); + } + php_stream_wrapper_log_error(wrapper, options, "Cannot connect to HTTPS server through proxy"); php_stream_close(stream); stream = NULL; @@ -567,16 +569,18 @@ static php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, /* enable SSL transport layer */ if (stream) { + php_stream_context *old_context = PHP_STREAM_CONTEXT(stream); + if (php_stream_xport_crypto_setup(stream, STREAM_CRYPTO_METHOD_SSLv23_CLIENT, NULL) < 0 || php_stream_xport_crypto_enable(stream, 1) < 0) { php_stream_wrapper_log_error(wrapper, options, "Cannot connect to HTTPS server through proxy"); php_stream_close(stream); stream = NULL; } - } - if (reset_ssl_peer_name) { - php_stream_context_unset_option(PHP_STREAM_CONTEXT(stream), "ssl", "peer_name"); + if (reset_ssl_peer_name) { + php_stream_context_unset_option(old_context, "ssl", "peer_name"); + } } } diff --git a/ext/standard/image.c b/ext/standard/image.c index 08cf8983d029..869371842006 100644 --- a/ext/standard/image.c +++ b/ext/standard/image.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Marcus Boerger | diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c index 228e03fbe863..d794612f429d 100644 --- a/ext/standard/incomplete_class.c +++ b/ext/standard/incomplete_class.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/standard/info.c b/ext/standard/info.c index 952f0f92fe6e..dcb01bc08220 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | @@ -1021,35 +1019,78 @@ PHPAPI ZEND_COLD void php_print_info(int flag) if (flag & PHP_INFO_LICENSE) { if (!sapi_module.phpinfo_as_text) { - SECTION("PHP License"); + SECTION("License"); php_info_print_box_start(0); php_info_print("

\n"); - php_info_print("This program is free software; you can redistribute it and/or modify "); - php_info_print("it under the terms of the PHP License as published by the PHP Group "); - php_info_print("and included in the distribution in the file: LICENSE\n"); + php_info_print("PHP is free software. You may redistribute it and/or modify it under the "); + php_info_print("terms of the Modified BSD License (SPDX-License-Identifier: BSD-3-Clause).\n"); php_info_print("

\n"); - php_info_print("

"); - php_info_print("This program is distributed in the hope that it will be useful, "); - php_info_print("but WITHOUT ANY WARRANTY; without even the implied warranty of "); - php_info_print("MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); + php_info_print("

\n"); + php_info_print("Copyright © The PHP Group and Contributors.
\n"); + php_info_print("Copyright © Zend Technologies Ltd., a subsidiary company of Perforce Software, Inc.\n"); php_info_print("

\n"); - php_info_print("

"); - php_info_print("If you did not receive a copy of the PHP license, or have any questions about "); - php_info_print("PHP licensing, please contact license@php.net.\n"); + php_info_print("

\n"); + php_info_print("Redistribution and use in source and binary forms, with or without "); + php_info_print("modification, are permitted provided that the following conditions are met:\n"); + php_info_print("

\n"); + php_info_print("
    \n"); + php_info_print("
  1. Redistributions of source code must retain the above copyright notice, this "); + php_info_print("list of conditions and the following disclaimer.
  2. \n"); + php_info_print("
  3. Redistributions in binary form must reproduce the above copyright notice, "); + php_info_print("this list of conditions and the following disclaimer in the documentation "); + php_info_print("and/or other materials provided with the distribution.
  4. \n"); + php_info_print("
  5. Neither the name of the copyright holder nor the names of its "); + php_info_print("contributors may be used to endorse or promote products derived from "); + php_info_print("this software without specific prior written permission.
  6. \n"); + php_info_print("
\n"); + php_info_print("

\n"); + php_info_print("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" "); + php_info_print("AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE "); + php_info_print("IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE "); + php_info_print("DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE "); + php_info_print("FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL "); + php_info_print("DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR "); + php_info_print("SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER "); + php_info_print("CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, "); + php_info_print("OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE "); + php_info_print("OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"); php_info_print("

\n"); php_info_print_box_end(); } else { - php_info_print("\nPHP License\n"); - php_info_print("This program is free software; you can redistribute it and/or modify\n"); - php_info_print("it under the terms of the PHP License as published by the PHP Group\n"); - php_info_print("and included in the distribution in the file: LICENSE\n"); php_info_print("\n"); - php_info_print("This program is distributed in the hope that it will be useful,\n"); - php_info_print("but WITHOUT ANY WARRANTY; without even the implied warranty of\n"); - php_info_print("MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); + php_info_print("License\n"); + php_info_print("\n"); + php_info_print("PHP is free software. You may redistribute it and/or modify it under the\n"); + php_info_print("terms of the Modified BSD License (SPDX-License-Identifier: BSD-3-Clause).\n"); + php_info_print("\n"); + php_info_print("Copyright © The PHP Group and Contributors.\n"); + php_info_print("Copyright © Zend Technologies Ltd., a subsidiary company of\n"); + php_info_print(" Perforce Software, Inc.\n"); + php_info_print("\n"); + php_info_print("Redistribution and use in source and binary forms, with or without\n"); + php_info_print("modification, are permitted provided that the following conditions are met:\n"); + php_info_print("\n"); + php_info_print("1. Redistributions of source code must retain the above copyright notice, this\n"); + php_info_print(" list of conditions and the following disclaimer.\n"); + php_info_print("\n"); + php_info_print("2. Redistributions in binary form must reproduce the above copyright notice,\n"); + php_info_print(" this list of conditions and the following disclaimer in the documentation\n"); + php_info_print(" and/or other materials provided with the distribution.\n"); + php_info_print("\n"); + php_info_print("3. Neither the name of the copyright holder nor the names of its\n"); + php_info_print(" contributors may be used to endorse or promote products derived from\n"); + php_info_print(" this software without specific prior written permission.\n"); php_info_print("\n"); - php_info_print("If you did not receive a copy of the PHP license, or have any\n"); - php_info_print("questions about PHP licensing, please contact license@php.net.\n"); + php_info_print("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n"); + php_info_print("AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"); + php_info_print("IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n"); + php_info_print("DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n"); + php_info_print("FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n"); + php_info_print("DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n"); + php_info_print("SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n"); + php_info_print("CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n"); + php_info_print("OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n"); + php_info_print("OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"); } } diff --git a/ext/standard/info.h b/ext/standard/info.h index 380d2b6e042a..6d1603dd8346 100644 --- a/ext/standard/info.h +++ b/ext/standard/info.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | diff --git a/ext/standard/iptc.c b/ext/standard/iptc.c index 5482a3c6ff15..59db612a7337 100644 --- a/ext/standard/iptc.c +++ b/ext/standard/iptc.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/standard/levenshtein.c b/ext/standard/levenshtein.c index d4688dcb9c13..efc71d2a2828 100644 --- a/ext/standard/levenshtein.c +++ b/ext/standard/levenshtein.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Hartmut Holzgraefe | +----------------------------------------------------------------------+ diff --git a/ext/standard/link.c b/ext/standard/link.c index 24e3b515dc80..dfd92a0a8709 100644 --- a/ext/standard/link.c +++ b/ext/standard/link.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ @@ -88,7 +84,11 @@ PHP_FUNCTION(linkinfo) Z_PARAM_PATH(link, link_len) ZEND_PARSE_PARAMETERS_END(); - // TODO Check for empty string + if (UNEXPECTED(link_len == 0)) { + zend_argument_must_not_be_empty_error(1); + RETURN_THROWS(); + } + dirname = estrndup(link, link_len); zend_dirname(dirname, link_len); diff --git a/ext/standard/mail.c b/ext/standard/mail.c index c909c0ed55dd..6aac0d364cf0 100644 --- a/ext/standard/mail.c +++ b/ext/standard/mail.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/math.c b/ext/standard/math.c index a1d151209a70..66fbfeaa9428 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jim Winstead | | Stig Sæther Bakken | @@ -152,7 +150,7 @@ static inline double php_round_helper(double integral, double value, double expo return integral; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } // FIXME: GCC bug, branch is considered reachable. ZEND_UNREACHABLE(); @@ -261,7 +259,7 @@ PHP_FUNCTION(abs) } case IS_DOUBLE: RETURN_DOUBLE(fabs(Z_DVAL_P(value))); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -280,7 +278,7 @@ PHP_FUNCTION(ceil) RETURN_DOUBLE(zval_get_double(value)); case IS_DOUBLE: RETURN_DOUBLE(ceil(Z_DVAL_P(value))); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -299,7 +297,7 @@ PHP_FUNCTION(floor) RETURN_DOUBLE(zval_get_double(value)); case IS_DOUBLE: RETURN_DOUBLE(floor(Z_DVAL_P(value))); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -382,7 +380,7 @@ PHP_FUNCTION(round) case IS_DOUBLE: RETURN_DOUBLE(_php_math_round(zval_get_double(value), (int)places, (int)mode)); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } /* }}} */ @@ -1437,7 +1435,7 @@ PHP_FUNCTION(number_format) } RETURN_STR(_php_math_number_format_ex(Z_DVAL_P(num), dec_int, dec_point, dec_point_len, thousand_sep, thousand_sep_len)); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } /* }}} */ diff --git a/ext/standard/md5.c b/ext/standard/md5.c index 9d0f5f886a6b..204514053cf0 100644 --- a/ext/standard/md5.c +++ b/ext/standard/md5.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Alexander Peslyak (Solar Designer) | | Lachlan Roche | diff --git a/ext/standard/md5.h b/ext/standard/md5.h index 5444abf46aec..30faa0ac258a 100644 --- a/ext/standard/md5.h +++ b/ext/standard/md5.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Alexander Peslyak (Solar Designer) | | Rasmus Lerdorf | diff --git a/ext/standard/metaphone.c b/ext/standard/metaphone.c index 6b80f2e3a8e0..816e5d28220e 100644 --- a/ext/standard/metaphone.c +++ b/ext/standard/metaphone.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/standard/microtime.c b/ext/standard/microtime.c index ca8643eb5196..46e770dec3ee 100644 --- a/ext/standard/microtime.c +++ b/ext/standard/microtime.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Paul Panotzki - Bunyip Information Systems | +----------------------------------------------------------------------+ diff --git a/ext/standard/net.c b/ext/standard/net.c index 942d804d42a4..199db6e80943 100644 --- a/ext/standard/net.c +++ b/ext/standard/net.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/standard/pack.c b/ext/standard/pack.c index 55da64897a2e..1ab5d4858cbe 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Chris Schneider | +----------------------------------------------------------------------+ diff --git a/ext/standard/pageinfo.c b/ext/standard/pageinfo.c index c1cbc59bfaa1..3ddda25ef0b7 100644 --- a/ext/standard/pageinfo.c +++ b/ext/standard/pageinfo.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/ext/standard/pageinfo.h b/ext/standard/pageinfo.h index 029ce8b97981..5ce81685f9ec 100644 --- a/ext/standard/pageinfo.h +++ b/ext/standard/pageinfo.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/ext/standard/password.c b/ext/standard/password.c index a8aab315657c..a28ceb7e0ced 100644 --- a/ext/standard/password.c +++ b/ext/standard/password.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anthony Ferrara | | Charles R. Portwood II | diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h index 2205082e91df..ab6c8494dd4e 100644 --- a/ext/standard/php_array.h +++ b/ext/standard/php_array.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | @@ -63,6 +61,8 @@ PHPAPI bool php_array_pick_keys(php_random_algo_with_state engine, zval *input, #define ARRAY_FILTER_USE_BOTH 1 #define ARRAY_FILTER_USE_KEY 2 +extern PHPAPI zend_class_entry *sort_direction_ce; + ZEND_BEGIN_MODULE_GLOBALS(array) bucket_compare_func_t *multisort_func; bool compare_deprecation_thrown; diff --git a/ext/standard/php_assert.h b/ext/standard/php_assert.h index 103a770e7601..c26e1f11681c 100644 --- a/ext/standard/php_assert.h +++ b/ext/standard/php_assert.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_browscap.h b/ext/standard/php_browscap.h index 4fc4f66a9233..85225bca0244 100644 --- a/ext/standard/php_browscap.h +++ b/ext/standard/php_browscap.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_crypt.h b/ext/standard/php_crypt.h index b7111dfd21b1..19c20c4a6c16 100644 --- a/ext/standard/php_crypt.h +++ b/ext/standard/php_crypt.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Bakken | | Zeev Suraski | diff --git a/ext/standard/php_crypt_r.c b/ext/standard/php_crypt_r.c index bd30ce9ce8cb..15a1508be1cb 100644 --- a/ext/standard/php_crypt_r.c +++ b/ext/standard/php_crypt_r.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Pierre Alain Joye . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Pierre Alain Joye . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Thies C. Arntzen | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_dir_int.h b/ext/standard/php_dir_int.h index 06faf4e678f4..17fcbab7e1cb 100644 --- a/ext/standard/php_dir_int.h +++ b/ext/standard/php_dir_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/standard/php_dns.h b/ext/standard/php_dns.h index 4e04799cdb8a..5b0a29f32bd1 100644 --- a/ext/standard/php_dns.h +++ b/ext/standard/php_dns.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: The typical suspects | | Marcus Boerger | diff --git a/ext/standard/php_ext_syslog.h b/ext/standard/php_ext_syslog.h index fd7958fad292..44c5ad1c02f4 100644 --- a/ext/standard/php_ext_syslog.h +++ b/ext/standard/php_ext_syslog.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_filestat.h b/ext/standard/php_filestat.h index ef3c1cd60c72..c2ea6eed66e2 100644 --- a/ext/standard/php_filestat.h +++ b/ext/standard/php_filestat.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index ea33ba490434..89c2d9c49b0c 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jim Winstead | diff --git a/ext/standard/php_fopen_wrappers.h b/ext/standard/php_fopen_wrappers.h index 885e31ffa730..a7e027dcf89f 100644 --- a/ext/standard/php_fopen_wrappers.h +++ b/ext/standard/php_fopen_wrappers.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jim Winstead | diff --git a/ext/standard/php_http.h b/ext/standard/php_http.h index 9350be597ea1..6192d0e63cee 100644 --- a/ext/standard/php_http.h +++ b/ext/standard/php_http.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_image.h b/ext/standard/php_image.h index 6a4e0987d13d..ea57214bda0b 100644 --- a/ext/standard/php_image.h +++ b/ext/standard/php_image.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Marcus Boerger | diff --git a/ext/standard/php_incomplete_class.h b/ext/standard/php_incomplete_class.h index 07eabf60d5dc..fb49eaf1b693 100644 --- a/ext/standard/php_incomplete_class.h +++ b/ext/standard/php_incomplete_class.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_mail.h b/ext/standard/php_mail.h index bebb526699d0..f7320f1d0700 100644 --- a/ext/standard/php_mail.h +++ b/ext/standard/php_mail.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_math.h b/ext/standard/php_math.h index 9ebd600537fd..cb0b9db21599 100644 --- a/ext/standard/php_math.h +++ b/ext/standard/php_math.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jim Winstead | | Stig Sæther Bakken | diff --git a/ext/standard/php_math_round_mode.h b/ext/standard/php_math_round_mode.h index 9ab02de2c361..abc3c7e284a5 100644 --- a/ext/standard/php_math_round_mode.h +++ b/ext/standard/php_math_round_mode.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jim Winstead | | Stig Sæther Bakken | diff --git a/ext/standard/php_net.h b/ext/standard/php_net.h index 58739131232d..beabb12caac9 100644 --- a/ext/standard/php_net.h +++ b/ext/standard/php_net.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_password.h b/ext/standard/php_password.h index 5a6f3b2af5c9..6442b782c256 100644 --- a/ext/standard/php_password.h +++ b/ext/standard/php_password.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anthony Ferrara | | Charles R. Portwood II | diff --git a/ext/standard/php_standard.h b/ext/standard/php_standard.h index 5bc792362bbd..34715e966683 100644 --- a/ext/standard/php_standard.h +++ b/ext/standard/php_standard.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index ef62329ba8ed..86c331f8a7c5 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Sæther Bakken | diff --git a/ext/standard/php_uuencode.h b/ext/standard/php_uuencode.h index da3d601851d9..e3d810f1c95f 100644 --- a/ext/standard/php_uuencode.h +++ b/ext/standard/php_uuencode.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ilia Alshanetsky | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_var.h b/ext/standard/php_var.h index d70bbfed814a..8839a2f3df73 100644 --- a/ext/standard/php_var.h +++ b/ext/standard/php_var.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jani Lehtimäki | +----------------------------------------------------------------------+ diff --git a/ext/standard/php_versioning.h b/ext/standard/php_versioning.h index 307ac1234a8c..da3748079aa3 100644 --- a/ext/standard/php_versioning.h +++ b/ext/standard/php_versioning.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index a393a2a1f884..edccbeae5646 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ @@ -1024,7 +1022,7 @@ static zend_result redirect_proc_descriptor(descriptorspec_item *desc, int targe case 0: redirect_to = GetStdHandle(STD_INPUT_HANDLE); break; case 1: redirect_to = GetStdHandle(STD_OUTPUT_HANDLE); break; case 2: redirect_to = GetStdHandle(STD_ERROR_HANDLE); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } #endif } diff --git a/ext/standard/proc_open.h b/ext/standard/proc_open.h index 2dba712f995f..6a9e0533bfd2 100644 --- a/ext/standard/proc_open.h +++ b/ext/standard/proc_open.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/standard/quot_print.c b/ext/standard/quot_print.c index a7132df2f7fd..f4954a88f8fa 100644 --- a/ext/standard/quot_print.c +++ b/ext/standard/quot_print.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kirill Maximov | +----------------------------------------------------------------------+ diff --git a/ext/standard/quot_print.h b/ext/standard/quot_print.h index 11b829d974b8..faf515210695 100644 --- a/ext/standard/quot_print.h +++ b/ext/standard/quot_print.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Kirill Maximov (kir@rus.net) | +----------------------------------------------------------------------+ diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c index 408e5ede8881..980009c30640 100644 --- a/ext/standard/scanf.c +++ b/ext/standard/scanf.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Clayton Collie | +----------------------------------------------------------------------+ diff --git a/ext/standard/scanf.h b/ext/standard/scanf.h index d2ef2fc0f2e8..c60a2b664ad4 100644 --- a/ext/standard/scanf.h +++ b/ext/standard/scanf.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Clayton Collie | +----------------------------------------------------------------------+ diff --git a/ext/standard/sha1.c b/ext/standard/sha1.c index 95f2b54d0fd0..4832756f577a 100644 --- a/ext/standard/sha1.c +++ b/ext/standard/sha1.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stefan Esser | +----------------------------------------------------------------------+ diff --git a/ext/standard/sha1.h b/ext/standard/sha1.h index 046d6db2cc47..a1f4801736b1 100644 --- a/ext/standard/sha1.h +++ b/ext/standard/sha1.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stefan Esser | +----------------------------------------------------------------------+ diff --git a/ext/standard/soundex.c b/ext/standard/soundex.c index 5c45f4d3ef67..527ef9537af3 100644 --- a/ext/standard/soundex.c +++ b/ext/standard/soundex.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Bjørn Borud - Guardian Networks AS | +----------------------------------------------------------------------+ diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 506ce0dafed8..68f79783c6f8 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | | Sara Golemon | diff --git a/ext/standard/streamsfuncs.h b/ext/standard/streamsfuncs.h index 41058472473d..7d6f523bfcd0 100644 --- a/ext/standard/streamsfuncs.h +++ b/ext/standard/streamsfuncs.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/standard/string.c b/ext/standard/string.c index e479a9e7612e..ef9e66ab53f8 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Sæther Bakken | @@ -1591,6 +1589,16 @@ PHP_FUNCTION(pathinfo) Z_PARAM_LONG(opt) ZEND_PARSE_PARAMETERS_END(); + if (opt < PHP_PATHINFO_DIRNAME || opt > PHP_PATHINFO_ALL) { + zend_argument_value_error(2, "must be one of the PATHINFO_* constants"); + RETURN_THROWS(); + } + + if (opt < PHP_PATHINFO_ALL && (opt & (opt - 1))) { + zend_argument_value_error(2, "must be only one of the PATHINFO_* constants"); + RETURN_THROWS(); + } + have_basename = (opt & PHP_PATHINFO_BASENAME); array_init(&tmp); diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c index c5d73eb008ec..44b902bf50b8 100644 --- a/ext/standard/syslog.c +++ b/ext/standard/syslog.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ diff --git a/ext/standard/tests/array/array_change_key_case_flag_error.phpt b/ext/standard/tests/array/array_change_key_case_flag_error.phpt new file mode 100644 index 000000000000..e83a21815c99 --- /dev/null +++ b/ext/standard/tests/array/array_change_key_case_flag_error.phpt @@ -0,0 +1,14 @@ +--TEST-- +array_change_key_case(): invalid $case argument +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +ValueError: array_change_key_case(): Argument #2 ($case) must be either CASE_LOWER or CASE_UPPER diff --git a/ext/standard/tests/array/array_change_key_case_variation.phpt b/ext/standard/tests/array/array_change_key_case_variation.phpt deleted file mode 100644 index c221a3f34101..000000000000 --- a/ext/standard/tests/array/array_change_key_case_variation.phpt +++ /dev/null @@ -1,50 +0,0 @@ ---TEST-- -Test array_change_key_case() function - 2 ---FILE-- - 1, "two" => 2, "THREE" => 3, "FOUR" => "four"); - -/* use 'case' argument other than CASE_LOWER & CASE_UPPER */ -try { - var_dump(array_change_key_case($item, "CASE_UPPER")); -} catch (TypeError $e) { - echo $e->getMessage(), "\n"; -} -var_dump(array_change_key_case($item, 5)); - -/* when keys are different in terms of only case */ -/* should return one value key pair with key being in lowercase */ -var_dump( array_change_key_case( array("ONE" => 1, "one" => 3, "One" => 4) ) ); - -/* should return one value key pair with key being in uppercase */ -var_dump( array_change_key_case( array("ONE" => 1, "one" => 2, "One" => 3), CASE_UPPER ) ); -var_dump( array_change_key_case( array("ONE" => 1, "one" => 1, "One" => 2), 5 ) ); - -echo "end\n"; -?> ---EXPECT-- -array_change_key_case(): Argument #2 ($case) must be of type int, string given -array(4) { - ["ONE"]=> - int(1) - ["TWO"]=> - int(2) - ["THREE"]=> - int(3) - ["FOUR"]=> - string(4) "four" -} -array(1) { - ["one"]=> - int(4) -} -array(1) { - ["ONE"]=> - int(3) -} -array(1) { - ["ONE"]=> - int(2) -} -end diff --git a/ext/standard/tests/array/array_change_key_case_variation4.phpt b/ext/standard/tests/array/array_change_key_case_variation4.phpt deleted file mode 100644 index 82d211451638..000000000000 --- a/ext/standard/tests/array/array_change_key_case_variation4.phpt +++ /dev/null @@ -1,132 +0,0 @@ ---TEST-- -Test array_change_key_case() function : usage variations - different int values for $case ---FILE-- - 'un', 'TWO' => 'deux', 'three' => 'trois'); -for ($i = -5; $i <=5; $i += 1){ - echo "\n-- \$sort argument is $i --\n"; - $temp = $input; - var_dump(array_change_key_case($temp, $i)); -} - -echo "Done"; -?> ---EXPECT-- -*** Testing array_change_key_case() : usage variations *** - --- $sort argument is -5 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is -4 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is -3 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is -2 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is -1 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is 0 -- -array(3) { - ["one"]=> - string(2) "un" - ["two"]=> - string(4) "deux" - ["three"]=> - string(5) "trois" -} - --- $sort argument is 1 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is 2 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is 3 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is 4 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} - --- $sort argument is 5 -- -array(3) { - ["ONE"]=> - string(2) "un" - ["TWO"]=> - string(4) "deux" - ["THREE"]=> - string(5) "trois" -} -Done diff --git a/ext/standard/tests/array/array_map_foreach_optimization_006.phpt b/ext/standard/tests/array/array_map_foreach_optimization_006.phpt new file mode 100644 index 000000000000..e21e3e0a9a8b --- /dev/null +++ b/ext/standard/tests/array/array_map_foreach_optimization_006.phpt @@ -0,0 +1,84 @@ +--TEST-- +array_map(): foreach optimization - PFA +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.opt_debug_level=0x20000 +--FILE-- + +--EXPECTF-- +$_main: + ; (lines=%d, args=0, vars=%d, tmps=%d) + ; (after optimizer) + ; %s +0000 INIT_FCALL 2 %d string("range") +0001 SEND_VAL int(1) 1 +0002 SEND_VAL int(10) 2 +0003 T2 = DO_ICALL +0004 ASSIGN CV0($array) T2 +0005 TYPE_ASSERT 131079 string("array_map") CV0($array) +0006 T2 = INIT_ARRAY 0 (packed) NEXT +0007 V3 = FE_RESET_R CV0($array) 0015 +0008 T5 = FE_FETCH_R V3 T4 0015 +0009 INIT_FCALL 2 %d string("plusn") +0010 SEND_VAL T4 1 +0011 SEND_VAL int(2) 2 +0012 T4 = DO_UCALL +0013 T2 = ADD_ARRAY_ELEMENT T4 T5 +0014 JMP 0008 +0015 FE_FREE V3 +0016 ASSIGN CV1($foo) T2 +0017 INIT_FCALL 1 %d string("var_dump") +0018 SEND_VAR CV1($foo) 1 +0019 DO_ICALL +0020 RETURN int(1) +LIVE RANGES: + 2: 0007 - 0016 (tmp/var) + 3: 0008 - 0015 (loop) + 4: 0009 - 0010 (tmp/var) + 5: 0009 - 0013 (tmp/var) + +plusn: + ; (lines=4, args=2, vars=2, tmps=1) + ; (after optimizer) + ; %s +0000 CV0($x) = RECV 1 +0001 CV1($n) = RECV 2 +0002 T2 = ADD CV0($x) CV1($n) +0003 RETURN T2 +array(10) { + [0]=> + int(3) + [1]=> + int(4) + [2]=> + int(5) + [3]=> + int(6) + [4]=> + int(7) + [5]=> + int(8) + [6]=> + int(9) + [7]=> + int(10) + [8]=> + int(11) + [9]=> + int(12) +} diff --git a/ext/standard/tests/array/array_map_foreach_optimization_007.phpt b/ext/standard/tests/array/array_map_foreach_optimization_007.phpt new file mode 100644 index 000000000000..67654b9e7640 --- /dev/null +++ b/ext/standard/tests/array/array_map_foreach_optimization_007.phpt @@ -0,0 +1,109 @@ +--TEST-- +array_map(): foreach optimization - unoptimizable PFA +--EXTENSIONS-- +opcache +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.opt_debug_level=0x20000 +--FILE-- + +--EXPECTF-- +$_main: + ; (lines=%d, args=0, vars=%d, tmps=%d) + ; (after optimizer) + ; %s +0000 INIT_FCALL 2 %d string("range") +0001 SEND_VAL int(1) 1 +0002 SEND_VAL int(10) 2 +0003 T2 = DO_ICALL +0004 ASSIGN CV0($array) T2 +0005 INIT_FCALL 2 %d string("array_map") +0006 INIT_FCALL 0 %d string("plusn") +0007 SEND_VAL int(2) string("n") +0008 T2 = CALLABLE_CONVERT_PARTIAL 2 +0009 SEND_VAL T2 1 +0010 SEND_VAR CV0($array) 2 +0011 T2 = DO_ICALL +0012 ASSIGN CV1($foo) T2 +0013 INIT_FCALL 1 %d string("var_dump") +0014 SEND_VAR CV1($foo) 1 +0015 DO_ICALL +0016 RETURN int(1) + +plusn: + ; (lines=4, args=2, vars=2, tmps=1) + ; (after optimizer) + ; %s +0000 CV0($x) = RECV 1 +0001 CV1($n) = RECV 2 +0002 T2 = ADD CV0($x) CV1($n) +0003 RETURN T2 + +$_main: + ; (lines=4, args=0, vars=1, tmps=1) + ; (after optimizer) + ; %s:1-9 +0000 T1 = DECLARE_LAMBDA_FUNCTION 0 +0001 BIND_LEXICAL T1 CV0($n) +0002 FREE T1 +0003 RETURN int(1) +LIVE RANGES: + 1: 0001 - 0002 (tmp/var) + +{closure:pfa:%s:9}: + ; (lines=18, args=1, vars=2, tmps=2) + ; (after optimizer) + ; %s:9-9 +0000 CV0($x) = RECV 1 +0001 BIND_STATIC CV1($n) +0002 T3 = FUNC_NUM_ARGS +0003 T2 = IS_SMALLER_OR_EQUAL T3 int(1) +0004 JMPZ T2 0010 +0005 INIT_FCALL 2 %d string("plusn") +0006 SEND_VAR CV0($x) 1 +0007 SEND_VAR CV1($n) 2 +0008 T2 = DO_UCALL +0009 RETURN T2 +0010 INIT_FCALL 2 %d string("plusn") +0011 SEND_VAR CV0($x) 1 +0012 SEND_VAR CV1($n) 2 +0013 T2 = FUNC_GET_ARGS int(1) +0014 SEND_UNPACK T2 +0015 CHECK_UNDEF_ARGS +0016 T2 = DO_UCALL +0017 RETURN T2 +array(10) { + [0]=> + int(3) + [1]=> + int(4) + [2]=> + int(5) + [3]=> + int(6) + [4]=> + int(7) + [5]=> + int(8) + [6]=> + int(9) + [7]=> + int(10) + [8]=> + int(11) + [9]=> + int(12) +} diff --git a/ext/standard/tests/dir/scandir_invalid_flag.phpt b/ext/standard/tests/dir/scandir_invalid_flag.phpt new file mode 100644 index 000000000000..76838dc869b8 --- /dev/null +++ b/ext/standard/tests/dir/scandir_invalid_flag.phpt @@ -0,0 +1,12 @@ +--TEST-- +Provide wrong flags to scandir() +--FILE-- +getMessage() . "\n"; +} +?> +--EXPECT-- +scandir(): Argument #2 ($sorting_order) must be one of the SCANDIR_SORT_ASCENDING, SCANDIR_SORT_DESCENDING, or SCANDIR_SORT_NONE constants diff --git a/ext/standard/tests/dir/scandir_variation9-win32-mb.phpt b/ext/standard/tests/dir/scandir_variation9-win32-mb.phpt deleted file mode 100644 index 44d8b6daa5f9..000000000000 --- a/ext/standard/tests/dir/scandir_variation9-win32-mb.phpt +++ /dev/null @@ -1,71 +0,0 @@ ---TEST-- -Test scandir() function : usage variations - different ints as $sorting_order arg ---SKIPIF-- - ---FILE-- - ---CLEAN-- - ---EXPECT-- -*** Testing scandir() : usage variations *** -array(4) { - [0]=> - string(45) "私はガラスを食べられますfile2.tmp" - [1]=> - string(45) "私はガラスを食べられますfile1.tmp" - [2]=> - string(2) ".." - [3]=> - string(1) "." -} -array(4) { - [0]=> - string(45) "私はガラスを食べられますfile2.tmp" - [1]=> - string(45) "私はガラスを食べられますfile1.tmp" - [2]=> - string(2) ".." - [3]=> - string(1) "." -} -array(4) { - [0]=> - string(1) "." - [1]=> - string(2) ".." - [2]=> - string(45) "私はガラスを食べられますfile1.tmp" - [3]=> - string(45) "私はガラスを食べられますfile2.tmp" -} diff --git a/ext/standard/tests/dir/scandir_variation9.phpt b/ext/standard/tests/dir/scandir_variation9.phpt deleted file mode 100644 index 56e5575e5590..000000000000 --- a/ext/standard/tests/dir/scandir_variation9.phpt +++ /dev/null @@ -1,65 +0,0 @@ ---TEST-- -Test scandir() function : usage variations - different ints as $sorting_order arg ---FILE-- - ---CLEAN-- - ---EXPECT-- -*** Testing scandir() : usage variations *** -array(4) { - [0]=> - string(9) "file2.tmp" - [1]=> - string(9) "file1.tmp" - [2]=> - string(2) ".." - [3]=> - string(1) "." -} -array(4) { - [0]=> - string(9) "file2.tmp" - [1]=> - string(9) "file1.tmp" - [2]=> - string(2) ".." - [3]=> - string(1) "." -} -array(4) { - [0]=> - string(1) "." - [1]=> - string(2) ".." - [2]=> - string(9) "file1.tmp" - [3]=> - string(9) "file2.tmp" -} diff --git a/ext/standard/tests/file/pathinfo_variation3.phpt b/ext/standard/tests/file/pathinfo_variation3.phpt index aa1494b57997..86f88677d813 100644 --- a/ext/standard/tests/file/pathinfo_variation3.phpt +++ b/ext/standard/tests/file/pathinfo_variation3.phpt @@ -15,15 +15,37 @@ var_dump(pathinfo($testfile, PATHINFO_BASENAME)); var_dump(pathinfo($testfile, PATHINFO_FILENAME)); var_dump(pathinfo($testfile, PATHINFO_EXTENSION)); var_dump(pathinfo($testfile, PATHINFO_DIRNAME)); -var_dump(pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_DIRNAME)); -var_dump(pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_BASENAME)); -var_dump(pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_FILENAME)); -var_dump(pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_BASENAME)); -var_dump(pathinfo($testfile, PATHINFO_FILENAME|PATHINFO_DIRNAME)); -var_dump(pathinfo($testfile, PATHINFO_FILENAME|PATHINFO_BASENAME)); -var_dump(pathinfo($testfile, PATHINFO_DIRNAME|PATHINFO_EXTENSION)); -var_dump(pathinfo($testfile, PATHINFO_DIRNAME|PATHINFO_BASENAME)); +try { + pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_DIRNAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_FILENAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo($testfile, PATHINFO_EXTENSION|PATHINFO_DIRNAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo($testfile, PATHINFO_FILENAME|PATHINFO_BASENAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo($testfile, PATHINFO_DIRNAME|PATHINFO_EXTENSION); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo($testfile, PATHINFO_DIRNAME|PATHINFO_BASENAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} ?> --EXPECTF-- @@ -62,11 +84,9 @@ string(6) "inet.h" string(4) "inet" string(1) "h" string(17) "/usr/include/arpa" -string(17) "/usr/include/arpa" -string(6) "inet.h" -string(1) "h" -string(6) "inet.h" -string(17) "/usr/include/arpa" -string(6) "inet.h" -string(17) "/usr/include/arpa" -string(17) "/usr/include/arpa" +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt index f4035f8f40a2..c8420ea86fb2 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error1.phpt @@ -27,8 +27,11 @@ var_dump( symlink($filename, false) ); // false as linkname echo "\n*** Testing linkinfo() for error conditions ***\n"; //invalid arguments -var_dump( linkinfo('') ); // empty string as linkname -var_dump( linkinfo(false) ); // boolean false as linkname +try { + var_dump(linkinfo('')); // empty string as linkname +} catch (ValueError $e) { + echo $e->getMessage() . "\n"; +} echo "Done\n"; ?> @@ -53,10 +56,5 @@ Warning: symlink(): %s in %s on line %d bool(false) *** Testing linkinfo() for error conditions *** - -Warning: linkinfo(): %s in %s on line %d -int(-1) - -Warning: linkinfo(): %s in %s on line %d -int(-1) +linkinfo(): Argument #1 ($path) must not be empty Done diff --git a/ext/standard/tests/filters/user_filter_seek_01.phpt b/ext/standard/tests/filters/user_filter_seek_01.phpt index cb4e9fe72267..31ec95ca6aa6 100644 --- a/ext/standard/tests/filters/user_filter_seek_01.phpt +++ b/ext/standard/tests/filters/user_filter_seek_01.phpt @@ -1,5 +1,7 @@ --TEST-- php_user_filter with seek method - always seekable (stateless filter) +--EXTENSIONS-- +ctype --FILE-- getMessage() . "\n"; + } +} + +$var_name = 'PHP_PUTENV_NUL_TEST'; + +foreach ([ + $var_name . "\0SUFFIX=value", + $var_name . "=va\0lue", +] as $assignment) { + try { + putenv($assignment); + } catch (ValueError $exception) { + echo $exception->getMessage() . "\n"; + } +} + +var_dump(getenv($var_name)); + +?> +--EXPECT-- +getenv(): Argument #1 ($name) must not contain any null bytes +getenv(): Argument #1 ($name) must not contain any null bytes +putenv(): Argument #1 ($assignment) must not contain any null bytes +putenv(): Argument #1 ($assignment) must not contain any null bytes +bool(false) diff --git a/ext/standard/tests/http/http_response_header_deprecated_dynamic_fetch.phpt b/ext/standard/tests/http/http_response_header_deprecated_dynamic_fetch.phpt new file mode 100644 index 000000000000..e6b90355a4c3 --- /dev/null +++ b/ext/standard/tests/http/http_response_header_deprecated_dynamic_fetch.phpt @@ -0,0 +1,16 @@ +--TEST-- +$http_response_header dynamic fetch should warn +--FILE-- + +--EXPECTF-- +Deprecated: The predefined locally scoped $http_response_header variable is deprecated, call http_get_last_response_headers() instead in %s on line %d +string(2) "OK" diff --git a/ext/standard/tests/math/pi_basic.phpt b/ext/standard/tests/math/pi_basic.phpt index 10814ae8e819..acb95ceb62e7 100644 --- a/ext/standard/tests/math/pi_basic.phpt +++ b/ext/standard/tests/math/pi_basic.phpt @@ -7,7 +7,7 @@ precision=14 echo pi(), "\n"; echo M_PI, "\n"; // N.B pi() ignores all specified arguments no error -// messages are produced if arguments are spcified. +// messages are produced if arguments are specified. ?> --EXPECT-- 3.1415926535898 diff --git a/ext/standard/tests/strings/pathinfo.phpt b/ext/standard/tests/strings/pathinfo.phpt index 2bbea73588cb..1ff42a66121c 100644 --- a/ext/standard/tests/strings/pathinfo.phpt +++ b/ext/standard/tests/strings/pathinfo.phpt @@ -14,14 +14,48 @@ var_dump(pathinfo(__FILE__, PATHINFO_BASENAME)); var_dump(pathinfo(__FILE__, PATHINFO_FILENAME)); var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION)); var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME)); -var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_DIRNAME)); -var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_BASENAME)); -var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME)); -var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_BASENAME)); -var_dump(pathinfo(__FILE__, PATHINFO_FILENAME|PATHINFO_DIRNAME)); -var_dump(pathinfo(__FILE__, PATHINFO_FILENAME|PATHINFO_BASENAME)); -var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME|PATHINFO_EXTENSION)); -var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME|PATHINFO_BASENAME)); + +try { + pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_DIRNAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_DIRNAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo(__FILE__, PATHINFO_FILENAME|PATHINFO_BASENAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo(__FILE__, PATHINFO_DIRNAME|PATHINFO_EXTENSION); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo(__FILE__, PATHINFO_DIRNAME|PATHINFO_BASENAME); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + pathinfo(__FILE__, PATHINFO_DIRNAME-1); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} +try { + pathinfo(__FILE__, PATHINFO_ALL+1); +} catch (\ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} echo "Done\n"; ?> @@ -94,12 +128,12 @@ string(12) "pathinfo.php" string(8) "pathinfo" string(3) "php" string(%d) "%s%estrings" -string(%d) "%s%estrings" -string(12) "pathinfo.php" -string(3) "php" -string(12) "pathinfo.php" -string(%d) "%s%estrings" -string(12) "pathinfo.php" -string(%d) "%s%estrings" -string(%d) "%s%estrings" +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be only one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be one of the PATHINFO_* constants +pathinfo(): Argument #2 ($flags) must be one of the PATHINFO_* constants Done diff --git a/ext/standard/type.c b/ext/standard/type.c index a228e899046f..7546216e5049 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ @@ -105,7 +103,7 @@ PHP_FUNCTION(settype) convert_to_long(ptr); } else if (zend_string_equals_ci(type, ZSTR_KNOWN(ZEND_STR_FLOAT))) { convert_to_double(ptr); - } else if (zend_string_equals_ci(type, ZSTR_KNOWN(ZEND_STR_DOUBLE))) { /* deprecated */ + } else if (zend_string_equals_ci(type, ZSTR_KNOWN(ZEND_STR_DOUBLE))) { convert_to_double(ptr); } else if (zend_string_equals_ci(type, ZSTR_KNOWN(ZEND_STR_STRING))) { convert_to_string(ptr); @@ -151,8 +149,7 @@ PHP_FUNCTION(intval) ZEND_PARSE_PARAMETERS_END(); if (Z_TYPE_P(num) != IS_STRING || base == 10) { - RETVAL_LONG(zval_get_long(num)); - return; + RETURN_LONG(zval_get_long(num)); } diff --git a/ext/standard/uniqid.c b/ext/standard/uniqid.c index c0b9555ccefd..267851cd73ac 100644 --- a/ext/standard/uniqid.c +++ b/ext/standard/uniqid.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ diff --git a/ext/standard/url.c b/ext/standard/url.c index 4ddf7f80c64f..089dca315f43 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/ext/standard/url.h b/ext/standard/url.h index 3885ecece578..f807ed67cf9b 100644 --- a/ext/standard/url.h +++ b/ext/standard/url.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/ext/standard/url_scanner_ex.h b/ext/standard/url_scanner_ex.h index e6b296324298..c39b71eebf8c 100644 --- a/ext/standard/url_scanner_ex.h +++ b/ext/standard/url_scanner_ex.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re index f2adb8c864bd..af605b8886cc 100644 --- a/ext/standard/url_scanner_ex.re +++ b/ext/standard/url_scanner_ex.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | | Yasuo Ohgaki | diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c index ac21e083efbb..816a798c4b00 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: | | Wez Furlong (wez@thebrainroom.com) | diff --git a/ext/standard/uuencode.c b/ext/standard/uuencode.c index 0389fdd9f979..af70e3a2aa2c 100644 --- a/ext/standard/uuencode.c +++ b/ext/standard/uuencode.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Ilia Alshanetsky | +----------------------------------------------------------------------+ diff --git a/ext/standard/var.c b/ext/standard/var.c index fc8b2f4f3784..7bf4e17a4cb5 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jani Lehtimäki | | Thies C. Arntzen | diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index 353c7086d430..d5019d94dc0c 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c index 6995569fbf87..75968ca577fd 100644 --- a/ext/standard/versioning.c +++ b/ext/standard/versioning.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ diff --git a/ext/sysvmsg/php_sysvmsg.h b/ext/sysvmsg/php_sysvmsg.h index e3be3ed32e31..c82cb09934da 100644 --- a/ext/sysvmsg/php_sysvmsg.h +++ b/ext/sysvmsg/php_sysvmsg.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/sysvmsg/sysvmsg.c b/ext/sysvmsg/sysvmsg.c index 65d29d12c0f9..c86404fc5c45 100644 --- a/ext/sysvmsg/sysvmsg.c +++ b/ext/sysvmsg/sysvmsg.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/ext/sysvsem/php_sysvsem.h b/ext/sysvsem/php_sysvsem.h index 05d420bf42a4..c40d6dde5f1c 100644 --- a/ext/sysvsem/php_sysvsem.h +++ b/ext/sysvsem/php_sysvsem.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Tom May | +----------------------------------------------------------------------+ diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c index ce624ab4b237..e29283ea3f6e 100644 --- a/ext/sysvsem/sysvsem.c +++ b/ext/sysvsem/sysvsem.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Tom May | | Gavin Sherry | diff --git a/ext/sysvshm/php_sysvshm.h b/ext/sysvshm/php_sysvshm.h index 9576349e06d8..b47a70c4e5e1 100644 --- a/ext/sysvshm/php_sysvshm.h +++ b/ext/sysvshm/php_sysvshm.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Christian Cartus | +----------------------------------------------------------------------+ diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index 7f064c50a294..29f153b19662 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Christian Cartus | +----------------------------------------------------------------------+ diff --git a/ext/tidy/php_tidy.h b/ext/tidy/php_tidy.h index 2c31a92a8370..9449580a7ace 100644 --- a/ext/tidy/php_tidy.h +++ b/ext/tidy/php_tidy.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: John Coggeshall | +----------------------------------------------------------------------+ diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index 6b5d1061d512..ba22c06ef494 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: John Coggeshall | +----------------------------------------------------------------------+ @@ -705,7 +703,7 @@ static void php_tidy_create_node(INTERNAL_FUNCTION_PARAMETERS, tidy_base_nodetyp node = tidyGetBody(obj->ptdoc->doc); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if (!node) { diff --git a/ext/tokenizer/php_tokenizer.h b/ext/tokenizer/php_tokenizer.h index edc715de8d71..3acdebc4ac66 100644 --- a/ext/tokenizer/php_tokenizer.h +++ b/ext/tokenizer/php_tokenizer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andrei Zmievski | +----------------------------------------------------------------------+ diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index e594bc62ab38..fdbdd5ddfb61 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andrei Zmievski | +----------------------------------------------------------------------+ diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c index 0900c51d3d95..87b15b8bb345 100644 --- a/ext/tokenizer/tokenizer_data.c +++ b/ext/tokenizer/tokenizer_data.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Johannes Schlueter | +----------------------------------------------------------------------+ diff --git a/ext/tokenizer/tokenizer_data_gen.php b/ext/tokenizer/tokenizer_data_gen.php index 79753b6e81a5..0119b0cc0237 100755 --- a/ext/tokenizer/tokenizer_data_gen.php +++ b/ext/tokenizer/tokenizer_data_gen.php @@ -39,15 +39,13 @@ $result = <<. | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Johannes Schlueter | +----------------------------------------------------------------------+ diff --git a/ext/uri/php_uri.c b/ext/uri/php_uri.c index 2adece125530..a9e20d09996f 100644 --- a/ext/uri/php_uri.c +++ b/ext/uri/php_uri.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ diff --git a/ext/uri/php_uri.h b/ext/uri/php_uri.h index 1ec3617b096c..2c8516585c0f 100644 --- a/ext/uri/php_uri.h +++ b/ext/uri/php_uri.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ diff --git a/ext/uri/php_uri_common.c b/ext/uri/php_uri_common.c index da73bc59bf9c..5d87b7847b34 100644 --- a/ext/uri/php_uri_common.c +++ b/ext/uri/php_uri_common.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ @@ -38,7 +36,7 @@ static zend_string *get_known_string_by_property_name(php_uri_property_name prop return ZSTR_KNOWN(ZEND_STR_QUERY); case PHP_URI_PROPERTY_NAME_FRAGMENT: return ZSTR_KNOWN(ZEND_STR_FRAGMENT); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } diff --git a/ext/uri/php_uri_common.h b/ext/uri/php_uri_common.h index 2ae76cb2ee4d..f081fd6b6fd0 100644 --- a/ext/uri/php_uri_common.h +++ b/ext/uri/php_uri_common.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ @@ -182,7 +180,7 @@ static inline const php_uri_property_handler *php_uri_parser_property_handler_by return &parser->property_handler.query; case PHP_URI_PROPERTY_NAME_FRAGMENT: return &parser->property_handler.fragment; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } diff --git a/ext/uri/tests/008.phpt b/ext/uri/tests/008.phpt index e13130bb4c46..133f225aabf4 100644 --- a/ext/uri/tests/008.phpt +++ b/ext/uri/tests/008.phpt @@ -39,12 +39,12 @@ function callWhatWgGetters($url) var_dump($url->getFragment()); } -$uri = Uri\Rfc3986\Uri::parse("https://username:password@www.google.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists"); +$uri = Uri\Rfc3986\Uri::parse("https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists"); callRfc3986Getters($uri); echo "\n"; -$url = Uri\WhatWg\Url::parse("https://username:password@www.google.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists"); +$url = Uri\WhatWg\Url::parse("https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists"); callWhatWgGetters($url); ?> @@ -57,8 +57,8 @@ string(8) "password" string(8) "password" string(17) "username:password" string(17) "username:password" -string(14) "www.google.com" -string(14) "www.google.com" +string(15) "www.example.com" +string(15) "www.example.com" int(8080) string(30) "/pathname1/pathname2/pathname3" string(30) "/pathname1/pathname2/pathname3" @@ -70,8 +70,8 @@ string(11) "hash-exists" string(5) "https" string(8) "username" string(8) "password" -string(14) "www.google.com" -string(14) "www.google.com" +string(15) "www.example.com" +string(15) "www.example.com" int(8080) string(30) "/pathname1/pathname2/pathname3" string(10) "query=true" diff --git a/ext/uri/tests/031.phpt b/ext/uri/tests/031.phpt index a761cf8a4d99..ae84596b54e0 100644 --- a/ext/uri/tests/031.phpt +++ b/ext/uri/tests/031.phpt @@ -5,7 +5,7 @@ uri --FILE-- getMessage() . "\n"; } -$url1 = new Uri\WhatWg\Url("https://username:password@www.google.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists"); +$url1 = new Uri\WhatWg\Url("https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists"); $serializedUrl1 = serialize($url1); $url2 = unserialize($serializedUrl1); @@ -123,7 +123,7 @@ try { ?> --EXPECTF-- -string(163) "O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";s:98:"https://username:password@www.google.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists";}i:1;a:0:{}}" +string(164) "O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";s:99:"https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists";}i:1;a:0:{}}" object(Uri\Rfc3986\Uri)#%d (%d) { ["scheme"]=> string(5) "https" @@ -132,7 +132,7 @@ object(Uri\Rfc3986\Uri)#%d (%d) { ["password"]=> string(8) "password" ["host"]=> - string(14) "www.google.com" + string(15) "www.example.com" ["port"]=> int(8080) ["path"]=> @@ -150,7 +150,7 @@ Invalid serialization data for Uri\Rfc3986\Uri object Invalid serialization data for Uri\Rfc3986\Uri object Invalid serialization data for Uri\Rfc3986\Uri object Invalid serialization data for Uri\Rfc3986\Uri object -string(162) "O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";s:98:"https://username:password@www.google.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists";}i:1;a:0:{}}" +string(163) "O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";s:99:"https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists";}i:1;a:0:{}}" object(Uri\WhatWg\Url)#%d (%d) { ["scheme"]=> string(5) "https" @@ -159,7 +159,7 @@ object(Uri\WhatWg\Url)#%d (%d) { ["password"]=> string(8) "password" ["host"]=> - string(14) "www.google.com" + string(15) "www.example.com" ["port"]=> int(8080) ["path"]=> diff --git a/ext/uri/tests/032.phpt b/ext/uri/tests/032.phpt index b3e670223883..070d9dd01893 100644 --- a/ext/uri/tests/032.phpt +++ b/ext/uri/tests/032.phpt @@ -5,10 +5,10 @@ uri --FILE-- diff --git a/ext/uri/tests/033.phpt b/ext/uri/tests/033.phpt index 65e8ab26a2dd..dcfaa31c07ba 100644 --- a/ext/uri/tests/033.phpt +++ b/ext/uri/tests/033.phpt @@ -5,11 +5,11 @@ uri --FILE-- diff --git a/ext/uri/uri_parser_php_parse_url.c b/ext/uri/uri_parser_php_parse_url.c index 8cee29e8f0c6..ba0e2a2296a7 100644 --- a/ext/uri/uri_parser_php_parse_url.c +++ b/ext/uri/uri_parser_php_parse_url.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | | Tim Düsterhus | @@ -34,7 +32,7 @@ static zend_string *decode_component(zend_string *in, php_uri_component_read_mod return out; } - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } diff --git a/ext/uri/uri_parser_php_parse_url.h b/ext/uri/uri_parser_php_parse_url.h index 6cf532db8352..2dd2660fe153 100644 --- a/ext/uri/uri_parser_php_parse_url.h +++ b/ext/uri/uri_parser_php_parse_url.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | | Tim Düsterhus | diff --git a/ext/uri/uri_parser_rfc3986.c b/ext/uri/uri_parser_rfc3986.c index 5f1edbefe2bb..172d7f08f144 100644 --- a/ext/uri/uri_parser_rfc3986.c +++ b/ext/uri/uri_parser_rfc3986.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ @@ -103,7 +101,7 @@ ZEND_ATTRIBUTE_NONNULL static UriUriA *get_uri_for_reading(php_uri_parser_rfc398 ZEND_FALLTHROUGH; case PHP_URI_COMPONENT_READ_MODE_NORMALIZED_UNICODE: return get_normalized_uri(uriparser_uris); - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } diff --git a/ext/uri/uri_parser_rfc3986.h b/ext/uri/uri_parser_rfc3986.h index 4d88478b6063..21f938c370ad 100644 --- a/ext/uri/uri_parser_rfc3986.h +++ b/ext/uri/uri_parser_rfc3986.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ diff --git a/ext/uri/uri_parser_whatwg.c b/ext/uri/uri_parser_whatwg.c index 9d5e87fd4cf4..d140357c18ed 100644 --- a/ext/uri/uri_parser_whatwg.c +++ b/ext/uri/uri_parser_whatwg.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ @@ -196,7 +194,7 @@ static const char *fill_errors(zval *errors) error_str = "FileInvalidWindowsDriveLetterHost"; ZVAL_FALSE(&failure); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } zval error_type; @@ -374,7 +372,7 @@ static zend_result php_uri_parser_whatwg_host_read(void *uri, php_uri_component_ case PHP_URI_COMPONENT_READ_MODE_RAW: ZVAL_STRINGL(retval, (const char *) lexbor_uri->host.u.domain.data, lexbor_uri->host.u.domain.length); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } else { ZVAL_NULL(retval); @@ -615,7 +613,7 @@ static zend_string *php_uri_parser_whatwg_to_string(void *uri, php_uri_recomposi case PHP_URI_RECOMPOSITION_MODE_NORMALIZED_ASCII: lxb_url_serialize(lexbor_uri, serialize_to_smart_str_callback, &uri_str, exclude_fragment); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return smart_str_extract(&uri_str); diff --git a/ext/uri/uri_parser_whatwg.h b/ext/uri/uri_parser_whatwg.h index e8bbb585fd66..3e9e2824e42b 100644 --- a/ext/uri/uri_parser_whatwg.h +++ b/ext/uri/uri_parser_whatwg.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Máté Kocsis | +----------------------------------------------------------------------+ diff --git a/ext/xml/compat.c b/ext/xml/compat.c index 7e37bf1e412c..10bfa19af7af 100644 --- a/ext/xml/compat.c +++ b/ext/xml/compat.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/ext/xml/expat_compat.h b/ext/xml/expat_compat.h index a7faffbac504..721bad71080b 100644 --- a/ext/xml/expat_compat.h +++ b/ext/xml/expat_compat.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/ext/xml/php_xml.h b/ext/xml/php_xml.h index 8be95fa7aa8f..982f39933d17 100644 --- a/ext/xml/php_xml.h +++ b/ext/xml/php_xml.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Thies C. Arntzen | diff --git a/ext/xml/xml.c b/ext/xml/xml.c index 968fe4695467..d9df7920bb92 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stig Sæther Bakken | | Thies C. Arntzen | diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index 8e35ad9d6b0d..18a2612d9ede 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rob Richards | +----------------------------------------------------------------------+ @@ -102,7 +100,7 @@ static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handl case IS_LONG: ZVAL_LONG(rv, retint); break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return SUCCESS; @@ -755,7 +753,7 @@ PHP_METHOD(XMLReader, moveToAttributeNo) } /* }}} */ -/* {{{ Positions reader at attribute spcified by name and namespaceURI. +/* {{{ Positions reader at attribute specified by name and namespaceURI. Returns TRUE on success and FALSE on failure */ PHP_METHOD(XMLReader, moveToAttributeNs) { diff --git a/ext/xmlreader/php_xmlreader.h b/ext/xmlreader/php_xmlreader.h index b14b033a0eea..74d11c6bdbea 100644 --- a/ext/xmlreader/php_xmlreader.h +++ b/ext/xmlreader/php_xmlreader.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rob Richards | +----------------------------------------------------------------------+ diff --git a/ext/xmlreader/tests/expand.phpt b/ext/xmlreader/tests/expand.phpt index 9d4545d16897..5244121f6502 100644 --- a/ext/xmlreader/tests/expand.phpt +++ b/ext/xmlreader/tests/expand.phpt @@ -1,5 +1,5 @@ --TEST-- -XMLReader: Expand into existing DOM documet +XMLReader: Expand into existing DOM document --EXTENSIONS-- xmlreader dom diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index 0c65305c6827..838d5fdc481d 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rob Richards | | Pierre-A. Joye | @@ -432,7 +430,7 @@ PHP_FUNCTION(xmlwriter_write_element) } /* }}} */ -/* {{{ Write full namesapced element tag - returns FALSE on error */ +/* {{{ Write full namespaced element tag - returns FALSE on error */ PHP_FUNCTION(xmlwriter_write_element_ns) { xmlTextWriterPtr ptr; diff --git a/ext/xmlwriter/php_xmlwriter.h b/ext/xmlwriter/php_xmlwriter.h index e9a4dcb2aa49..6a0ae1c37abc 100644 --- a/ext/xmlwriter/php_xmlwriter.h +++ b/ext/xmlwriter/php_xmlwriter.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Rob Richards | | Pierre-A. Joye | diff --git a/ext/xmlwriter/tests/bug39504.phpt b/ext/xmlwriter/tests/bug39504.phpt index 0cb509d37dd5..eafcd375da93 100644 --- a/ext/xmlwriter/tests/bug39504.phpt +++ b/ext/xmlwriter/tests/bug39504.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #39504 (xmlwriter_write_dtd_entity() creates Attlist tag, not enity) +Bug #39504 (xmlwriter_write_dtd_entity() creates Attlist tag, not entity) --EXTENSIONS-- xmlwriter --FILE-- diff --git a/ext/xsl/php_xsl.c b/ext/xsl/php_xsl.c index ca7fe0fc1517..474d167905df 100644 --- a/ext/xsl/php_xsl.c +++ b/ext/xsl/php_xsl.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Christian Stocker | +----------------------------------------------------------------------+ @@ -325,7 +323,6 @@ PHP_MSHUTDOWN_FUNCTION(xsl) xsltUnregisterExtModuleFunction ((const xmlChar *) "function", (const xmlChar *) "http://php.net/xsl"); xsltSetGenericErrorFunc(NULL, NULL); - xsltCleanupGlobals(); return SUCCESS; } diff --git a/ext/xsl/php_xsl.h b/ext/xsl/php_xsl.h index e0171ce9590c..54f19e866269 100644 --- a/ext/xsl/php_xsl.h +++ b/ext/xsl/php_xsl.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c index fe7ed9cd2bb4..230c7bd39cc2 100644 --- a/ext/xsl/xsltprocessor.c +++ b/ext/xsl/xsltprocessor.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | diff --git a/ext/zend_test/fiber.c b/ext/zend_test/fiber.c index 199d1b28b8cd..da6f4c962d85 100644 --- a/ext/zend_test/fiber.c +++ b/ext/zend_test/fiber.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Aaron Piotrowski | +----------------------------------------------------------------------+ diff --git a/ext/zend_test/fiber.h b/ext/zend_test/fiber.h index ad5a4c7b3342..801d0a78af16 100644 --- a/ext/zend_test/fiber.h +++ b/ext/zend_test/fiber.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Aaron Piotrowski | +----------------------------------------------------------------------+ diff --git a/ext/zend_test/iterators.c b/ext/zend_test/iterators.c index 47ea017d892a..0171a91708e9 100644 --- a/ext/zend_test/iterators.c +++ b/ext/zend_test/iterators.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/zend_test/iterators.h b/ext/zend_test/iterators.h index cef09109e239..070259094da8 100644 --- a/ext/zend_test/iterators.h +++ b/ext/zend_test/iterators.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/zend_test/object_handlers.c b/ext/zend_test/object_handlers.c index 15e362605f8e..a5038dcba6dd 100644 --- a/ext/zend_test/object_handlers.c +++ b/ext/zend_test/object_handlers.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: George Peter Banyard | +----------------------------------------------------------------------+ diff --git a/ext/zend_test/object_handlers.h b/ext/zend_test/object_handlers.h index 528e047360f9..fa188d923667 100644 --- a/ext/zend_test/object_handlers.h +++ b/ext/zend_test/object_handlers.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: George Peter Banyard | +----------------------------------------------------------------------+ diff --git a/ext/zend_test/observer.c b/ext/zend_test/observer.c index 85c7d82da0e8..3a8b07778d5e 100644 --- a/ext/zend_test/observer.c +++ b/ext/zend_test/observer.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ @@ -334,7 +330,8 @@ static ZEND_INI_MH(zend_test_observer_OnUpdateCommaList) } if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN) { ZEND_HASH_FOREACH_STR_KEY(*p, funcname) { - if ((func = zend_hash_find_ptr(EG(function_table), funcname))) { + if ((func = zend_hash_find_ptr(EG(function_table), funcname)) + && RUN_TIME_CACHE(&func->common)) { void *old_handler; zend_observer_remove_begin_handler(func, observer_begin, (zend_observer_fcall_begin_handler *)&old_handler); zend_observer_remove_end_handler(func, observer_end, (zend_observer_fcall_end_handler *)&old_handler); @@ -357,7 +354,11 @@ static ZEND_INI_MH(zend_test_observer_OnUpdateCommaList) zend_string_release(str); if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN) { ZEND_HASH_FOREACH_STR_KEY(*p, funcname) { - if ((func = zend_hash_find_ptr(EG(function_table), funcname))) { + if ((func = zend_hash_find_ptr(EG(function_table), funcname)) + && RUN_TIME_CACHE(&func->common) && *ZEND_OBSERVER_DATA(func)) { + void *old_handler; + zend_observer_remove_begin_handler(func, observer_begin, (zend_observer_fcall_begin_handler *)&old_handler); + zend_observer_remove_end_handler(func, observer_end, (zend_observer_fcall_end_handler *)&old_handler); zend_observer_add_begin_handler(func, observer_begin); zend_observer_add_end_handler(func, observer_end); } diff --git a/ext/zend_test/observer.h b/ext/zend_test/observer.h index dd19fae2c527..28809a095cbe 100644 --- a/ext/zend_test/observer.h +++ b/ext/zend_test/observer.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/zend_test/php_test.h b/ext/zend_test/php_test.h index 7ec6f5431234..e3cf4b4284ba 100644 --- a/ext/zend_test/php_test.h +++ b/ext/zend_test/php_test.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/ext/zend_test/test.c b/ext/zend_test/test.c index 0faf65f36437..96f8db83c116 100644 --- a/ext/zend_test/test.c +++ b/ext/zend_test/test.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ @@ -69,6 +65,7 @@ static zend_class_entry *zend_test_forbid_dynamic_call; static zend_class_entry *zend_test_ns_foo_class; static zend_class_entry *zend_test_ns_unlikely_compile_error_class; static zend_class_entry *zend_test_ns_not_unlikely_compile_error_class; +static zend_class_entry *zend_test_ns_bar_class; static zend_class_entry *zend_test_ns2_foo_class; static zend_class_entry *zend_test_ns2_ns_foo_class; static zend_class_entry *zend_test_unit_enum; @@ -347,7 +344,7 @@ static ZEND_FUNCTION(zend_number_or_string) RETURN_DOUBLE(Z_DVAL_P(input)); case IS_STRING: RETURN_STR_COPY(Z_STR_P(input)); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -371,7 +368,7 @@ static ZEND_FUNCTION(zend_number_or_string_or_null) RETURN_DOUBLE(Z_DVAL_P(input)); case IS_STRING: RETURN_STR_COPY(Z_STR_P(input)); - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } } @@ -1571,6 +1568,7 @@ PHP_MINIT_FUNCTION(zend_test) zend_test_ns_foo_class = register_class_ZendTestNS_Foo(); zend_test_ns_unlikely_compile_error_class = register_class_ZendTestNS_UnlikelyCompileError(); zend_test_ns_not_unlikely_compile_error_class = register_class_ZendTestNS_NotUnlikelyCompileError(); + zend_test_ns_bar_class = register_class_ZendTestNS_Bar(); zend_test_ns2_foo_class = register_class_ZendTestNS2_Foo(); zend_test_ns2_ns_foo_class = register_class_ZendTestNS2_ZendSubNS_Foo(); diff --git a/ext/zend_test/test.stub.php b/ext/zend_test/test.stub.php index e102082c6a95..653630ed73b7 100644 --- a/ext/zend_test/test.stub.php +++ b/ext/zend_test/test.stub.php @@ -187,7 +187,9 @@ class ZendTestClassWithPropertyAttribute { } final class ZendTestForbidDynamicCall { + /** @forbid-dynamic-calls */ public function call(): void {} + /** @forbid-dynamic-calls */ public static function callStatic(): void {} } @@ -363,6 +365,8 @@ class Foo { public function method(): int {} } + interface Bar {} + class UnlikelyCompileError { /* This method signature would create a compile error due to the string * "ZendTestNS\UnlikelyCompileError" in the generated macro call */ @@ -378,11 +382,20 @@ public function method(): ?NotUnlikelyCompileError {} namespace ZendTestNS2 { + use ZendTestNS\Foo as FooAlias; + use ZendTestNS\UnlikelyCompileError; + use ZendTestNS\{NotUnlikelyCompileError}; + /** @var string */ const ZEND_CONSTANT_A = "namespaced"; class Foo { public ZendSubNS\Foo $foo; + public ZendSubNS\Foo&\ZendTestNS\Bar $intersectionProp; + public ZendSubNS\Foo|\ZendTestNS\Bar $unionProp; + public FooAlias $fooAlias; + public UnlikelyCompileError $unlProp; + public NotUnlikelyCompileError $notUnlProp; public function method(): void {} } diff --git a/ext/zend_test/test_arginfo.h b/ext/zend_test/test_arginfo.h index 30297234fc87..adcae16cdf61 100644 --- a/ext/zend_test/test_arginfo.h +++ b/ext/zend_test/test_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit test.stub.php instead. - * Stub hash: 46178f5fa88681da91d831250f2f00c45e914624 + * Stub hash: e1fb73f5a5f455a3a1eb871e670f26b671da0407 * Has decl header: yes */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_trigger_bailout, 0, 0, IS_NEVER, 0) @@ -590,8 +590,16 @@ static const zend_function_entry class_ZendTestChildClassWithMethodWithParameter }; static const zend_function_entry class_ZendTestForbidDynamicCall_methods[] = { +#if (PHP_VERSION_ID >= 80600) + ZEND_ME(ZendTestForbidDynamicCall, call, arginfo_class_ZendTestForbidDynamicCall_call, ZEND_FENTRY_FLAGS(ZEND_ACC_PUBLIC, ZEND_ACC2_FORBID_DYN_CALLS)) +#elif (PHP_VERSION_ID >= 80000) ZEND_ME(ZendTestForbidDynamicCall, call, arginfo_class_ZendTestForbidDynamicCall_call, ZEND_ACC_PUBLIC) +#endif +#if (PHP_VERSION_ID >= 80600) + ZEND_ME(ZendTestForbidDynamicCall, callStatic, arginfo_class_ZendTestForbidDynamicCall_callStatic, ZEND_FENTRY_FLAGS(ZEND_ACC_PUBLIC|ZEND_ACC_STATIC, ZEND_ACC2_FORBID_DYN_CALLS)) +#elif (PHP_VERSION_ID >= 80000) ZEND_ME(ZendTestForbidDynamicCall, callStatic, arginfo_class_ZendTestForbidDynamicCall_callStatic, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) +#endif ZEND_FE_END }; @@ -1294,6 +1302,16 @@ static zend_class_entry *register_class_ZendTestNS_Foo(void) return class_entry; } +static zend_class_entry *register_class_ZendTestNS_Bar(void) +{ + zend_class_entry ce, *class_entry; + + INIT_NS_CLASS_ENTRY(ce, "ZendTestNS", "Bar", NULL); + class_entry = zend_register_internal_interface(&ce); + + return class_entry; +} + static zend_class_entry *register_class_ZendTestNS_UnlikelyCompileError(void) { zend_class_entry ce, *class_entry; @@ -1340,6 +1358,53 @@ static zend_class_entry *register_class_ZendTestNS2_Foo(void) zend_declare_typed_property(class_entry, property_foo_name, &property_foo_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_foo_class_ZendTestNS2_ZendSubNS_Foo, 0, 0)); zend_string_release_ex(property_foo_name, true); + zval property_intersectionProp_default_value; + ZVAL_UNDEF(&property_intersectionProp_default_value); + zend_string *property_intersectionProp_name = zend_string_init("intersectionProp", sizeof("intersectionProp") - 1, true); + zend_string *property_intersectionProp_class_ZendTestNS2_ZendSubNS_Foo = zend_string_init("ZendTestNS2\\ZendSubNS\\Foo", sizeof("ZendTestNS2\\ZendSubNS\\Foo") - 1, 1); + zend_string *property_intersectionProp_class_ZendTestNS_Bar = zend_string_init("ZendTestNS\\Bar", sizeof("ZendTestNS\\Bar") - 1, 1); + zend_type_list *property_intersectionProp_type_list = malloc(ZEND_TYPE_LIST_SIZE(2)); + property_intersectionProp_type_list->num_types = 2; + property_intersectionProp_type_list->types[0] = (zend_type) ZEND_TYPE_INIT_CLASS(property_intersectionProp_class_ZendTestNS2_ZendSubNS_Foo, 0, 0); + property_intersectionProp_type_list->types[1] = (zend_type) ZEND_TYPE_INIT_CLASS(property_intersectionProp_class_ZendTestNS_Bar, 0, 0); + zend_type property_intersectionProp_type = ZEND_TYPE_INIT_INTERSECTION(property_intersectionProp_type_list, 0); + zend_declare_typed_property(class_entry, property_intersectionProp_name, &property_intersectionProp_default_value, ZEND_ACC_PUBLIC, NULL, property_intersectionProp_type); + zend_string_release_ex(property_intersectionProp_name, true); + + zval property_unionProp_default_value; + ZVAL_UNDEF(&property_unionProp_default_value); + zend_string *property_unionProp_name = zend_string_init("unionProp", sizeof("unionProp") - 1, true); + zend_string *property_unionProp_class_ZendTestNS2_ZendSubNS_Foo = zend_string_init("ZendTestNS2\\ZendSubNS\\Foo", sizeof("ZendTestNS2\\ZendSubNS\\Foo") - 1, 1); + zend_string *property_unionProp_class_ZendTestNS_Bar = zend_string_init("ZendTestNS\\Bar", sizeof("ZendTestNS\\Bar") - 1, 1); + zend_type_list *property_unionProp_type_list = malloc(ZEND_TYPE_LIST_SIZE(2)); + property_unionProp_type_list->num_types = 2; + property_unionProp_type_list->types[0] = (zend_type) ZEND_TYPE_INIT_CLASS(property_unionProp_class_ZendTestNS2_ZendSubNS_Foo, 0, 0); + property_unionProp_type_list->types[1] = (zend_type) ZEND_TYPE_INIT_CLASS(property_unionProp_class_ZendTestNS_Bar, 0, 0); + zend_type property_unionProp_type = ZEND_TYPE_INIT_UNION(property_unionProp_type_list, 0); + zend_declare_typed_property(class_entry, property_unionProp_name, &property_unionProp_default_value, ZEND_ACC_PUBLIC, NULL, property_unionProp_type); + zend_string_release_ex(property_unionProp_name, true); + + zval property_fooAlias_default_value; + ZVAL_UNDEF(&property_fooAlias_default_value); + zend_string *property_fooAlias_name = zend_string_init("fooAlias", sizeof("fooAlias") - 1, true); + zend_string *property_fooAlias_class_ZendTestNS_Foo = zend_string_init("ZendTestNS\\Foo", sizeof("ZendTestNS\\Foo")-1, 1); + zend_declare_typed_property(class_entry, property_fooAlias_name, &property_fooAlias_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_fooAlias_class_ZendTestNS_Foo, 0, 0)); + zend_string_release_ex(property_fooAlias_name, true); + + zval property_unlProp_default_value; + ZVAL_UNDEF(&property_unlProp_default_value); + zend_string *property_unlProp_name = zend_string_init("unlProp", sizeof("unlProp") - 1, true); + zend_string *property_unlProp_class_ZendTestNS_UnlikelyCompileError = zend_string_init("ZendTestNS\\\125nlikelyCompileError", sizeof("ZendTestNS\\\125nlikelyCompileError")-1, 1); + zend_declare_typed_property(class_entry, property_unlProp_name, &property_unlProp_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_unlProp_class_ZendTestNS_UnlikelyCompileError, 0, 0)); + zend_string_release_ex(property_unlProp_name, true); + + zval property_notUnlProp_default_value; + ZVAL_UNDEF(&property_notUnlProp_default_value); + zend_string *property_notUnlProp_name = zend_string_init("notUnlProp", sizeof("notUnlProp") - 1, true); + zend_string *property_notUnlProp_class_ZendTestNS_NotUnlikelyCompileError = zend_string_init("ZendTestNS\\\116otUnlikelyCompileError", sizeof("ZendTestNS\\\116otUnlikelyCompileError")-1, 1); + zend_declare_typed_property(class_entry, property_notUnlProp_name, &property_notUnlProp_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_notUnlProp_class_ZendTestNS_NotUnlikelyCompileError, 0, 0)); + zend_string_release_ex(property_notUnlProp_name, true); + return class_entry; } diff --git a/ext/zend_test/test_decl.h b/ext/zend_test/test_decl.h index ed0874f51e72..ba6aab902280 100644 --- a/ext/zend_test/test_decl.h +++ b/ext/zend_test/test_decl.h @@ -1,8 +1,8 @@ /* This is a generated file, edit test.stub.php instead. - * Stub hash: 46178f5fa88681da91d831250f2f00c45e914624 */ + * Stub hash: e1fb73f5a5f455a3a1eb871e670f26b671da0407 */ -#ifndef ZEND_TEST_DECL_46178f5fa88681da91d831250f2f00c45e914624_H -#define ZEND_TEST_DECL_46178f5fa88681da91d831250f2f00c45e914624_H +#ifndef ZEND_TEST_DECL_e1fb73f5a5f455a3a1eb871e670f26b671da0407_H +#define ZEND_TEST_DECL_e1fb73f5a5f455a3a1eb871e670f26b671da0407_H typedef enum zend_enum_ZendTestUnitEnum { ZEND_ENUM_ZendTestUnitEnum_Foo = 1, @@ -27,4 +27,4 @@ typedef enum zend_enum_ZendTestEnumWithInterface { ZEND_ENUM_ZendTestEnumWithInterface_Bar = 2, } zend_enum_ZendTestEnumWithInterface; -#endif /* ZEND_TEST_DECL_46178f5fa88681da91d831250f2f00c45e914624_H */ +#endif /* ZEND_TEST_DECL_e1fb73f5a5f455a3a1eb871e670f26b671da0407_H */ diff --git a/ext/zend_test/test_legacy_arginfo.h b/ext/zend_test/test_legacy_arginfo.h index 3dcdad8ff6c7..b42d524d7a8a 100644 --- a/ext/zend_test/test_legacy_arginfo.h +++ b/ext/zend_test/test_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit test.stub.php instead. - * Stub hash: 46178f5fa88681da91d831250f2f00c45e914624 + * Stub hash: e1fb73f5a5f455a3a1eb871e670f26b671da0407 * Has decl header: yes */ ZEND_BEGIN_ARG_INFO_EX(arginfo_zend_trigger_bailout, 0, 0, 0) @@ -517,8 +517,16 @@ static const zend_function_entry class_ZendTestChildClassWithMethodWithParameter }; static const zend_function_entry class_ZendTestForbidDynamicCall_methods[] = { +#if (PHP_VERSION_ID >= 80600) + ZEND_ME(ZendTestForbidDynamicCall, call, arginfo_class_ZendTestForbidDynamicCall_call, ZEND_FENTRY_FLAGS(ZEND_ACC_PUBLIC, ZEND_ACC2_FORBID_DYN_CALLS)) +#elif (PHP_VERSION_ID >= 70000) ZEND_ME(ZendTestForbidDynamicCall, call, arginfo_class_ZendTestForbidDynamicCall_call, ZEND_ACC_PUBLIC) +#endif +#if (PHP_VERSION_ID >= 80600) + ZEND_ME(ZendTestForbidDynamicCall, callStatic, arginfo_class_ZendTestForbidDynamicCall_callStatic, ZEND_FENTRY_FLAGS(ZEND_ACC_PUBLIC|ZEND_ACC_STATIC, ZEND_ACC2_FORBID_DYN_CALLS)) +#elif (PHP_VERSION_ID >= 70000) ZEND_ME(ZendTestForbidDynamicCall, callStatic, arginfo_class_ZendTestForbidDynamicCall_callStatic, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) +#endif ZEND_FE_END }; @@ -1029,6 +1037,16 @@ static zend_class_entry *register_class_ZendTestNS_Foo(void) return class_entry; } +static zend_class_entry *register_class_ZendTestNS_Bar(void) +{ + zend_class_entry ce, *class_entry; + + INIT_NS_CLASS_ENTRY(ce, "ZendTestNS", "Bar", NULL); + class_entry = zend_register_internal_interface(&ce); + + return class_entry; +} + static zend_class_entry *register_class_ZendTestNS_UnlikelyCompileError(void) { zend_class_entry ce, *class_entry; @@ -1074,6 +1092,36 @@ static zend_class_entry *register_class_ZendTestNS2_Foo(void) zend_declare_property_ex(class_entry, property_foo_name, &property_foo_default_value, ZEND_ACC_PUBLIC, NULL); zend_string_release_ex(property_foo_name, true); + zval property_intersectionProp_default_value; + ZVAL_NULL(&property_intersectionProp_default_value); + zend_string *property_intersectionProp_name = zend_string_init("intersectionProp", sizeof("intersectionProp") - 1, true); + zend_declare_property_ex(class_entry, property_intersectionProp_name, &property_intersectionProp_default_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release_ex(property_intersectionProp_name, true); + + zval property_unionProp_default_value; + ZVAL_NULL(&property_unionProp_default_value); + zend_string *property_unionProp_name = zend_string_init("unionProp", sizeof("unionProp") - 1, true); + zend_declare_property_ex(class_entry, property_unionProp_name, &property_unionProp_default_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release_ex(property_unionProp_name, true); + + zval property_fooAlias_default_value; + ZVAL_NULL(&property_fooAlias_default_value); + zend_string *property_fooAlias_name = zend_string_init("fooAlias", sizeof("fooAlias") - 1, true); + zend_declare_property_ex(class_entry, property_fooAlias_name, &property_fooAlias_default_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release_ex(property_fooAlias_name, true); + + zval property_unlProp_default_value; + ZVAL_NULL(&property_unlProp_default_value); + zend_string *property_unlProp_name = zend_string_init("unlProp", sizeof("unlProp") - 1, true); + zend_declare_property_ex(class_entry, property_unlProp_name, &property_unlProp_default_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release_ex(property_unlProp_name, true); + + zval property_notUnlProp_default_value; + ZVAL_NULL(&property_notUnlProp_default_value); + zend_string *property_notUnlProp_name = zend_string_init("notUnlProp", sizeof("notUnlProp") - 1, true); + zend_declare_property_ex(class_entry, property_notUnlProp_name, &property_notUnlProp_default_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release_ex(property_notUnlProp_name, true); + return class_entry; } diff --git a/ext/zend_test/tests/gen_stub_test_01.phpt b/ext/zend_test/tests/gen_stub_test_01.phpt index 0f5d525322d6..0cda0651bee3 100644 --- a/ext/zend_test/tests/gen_stub_test_01.phpt +++ b/ext/zend_test/tests/gen_stub_test_01.phpt @@ -18,11 +18,31 @@ var_dump($foo); object(ZendTestNS2\Foo)#%d (%d) { ["foo"]=> uninitialized(ZendTestNS2\ZendSubNS\Foo) + ["intersectionProp"]=> + uninitialized(ZendTestNS2\ZendSubNS\Foo&ZendTestNS\Bar) + ["unionProp"]=> + uninitialized(ZendTestNS2\ZendSubNS\Foo|ZendTestNS\Bar) + ["fooAlias"]=> + uninitialized(ZendTestNS\Foo) + ["unlProp"]=> + uninitialized(ZendTestNS\UnlikelyCompileError) + ["notUnlProp"]=> + uninitialized(ZendTestNS\NotUnlikelyCompileError) } object(ZendTestNS2\Foo)#%d (%d) { ["foo"]=> object(ZendTestNS2\ZendSubNS\Foo)#%d (%d) { } + ["intersectionProp"]=> + uninitialized(ZendTestNS2\ZendSubNS\Foo&ZendTestNS\Bar) + ["unionProp"]=> + uninitialized(ZendTestNS2\ZendSubNS\Foo|ZendTestNS\Bar) + ["fooAlias"]=> + uninitialized(ZendTestNS\Foo) + ["unlProp"]=> + uninitialized(ZendTestNS\UnlikelyCompileError) + ["notUnlProp"]=> + uninitialized(ZendTestNS\NotUnlikelyCompileError) } object(ZendTestNS\UnlikelyCompileError)#%d (%d) { } diff --git a/ext/zend_test/tests/gh16811.phpt b/ext/zend_test/tests/gh16811.phpt new file mode 100644 index 000000000000..1b2b8ece9aa1 --- /dev/null +++ b/ext/zend_test/tests/gh16811.phpt @@ -0,0 +1,18 @@ +--TEST-- +GH-16811 (Segmentation fault in zend observer) +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.show_output=1 +zend_test.observer.observe_function_names=a,d +--FILE-- + +--EXPECTF-- + + + +string(3) "a,d" diff --git a/ext/zend_test/tests/gh16811_observe_all.phpt b/ext/zend_test/tests/gh16811_observe_all.phpt new file mode 100644 index 000000000000..466aa0c6d4a4 --- /dev/null +++ b/ext/zend_test/tests/gh16811_observe_all.phpt @@ -0,0 +1,17 @@ +--TEST-- +GH-16811 (Assertion failure adding duplicate observer handler) +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.show_output=0 +--FILE-- + +--EXPECT-- +Done diff --git a/ext/zend_test/zend_mm_custom_handlers.c b/ext/zend_test/zend_mm_custom_handlers.c index 2130065109ef..76628f8881b5 100644 --- a/ext/zend_test/zend_mm_custom_handlers.c +++ b/ext/zend_test/zend_mm_custom_handlers.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Florian Engelhardt | +----------------------------------------------------------------------+ diff --git a/ext/zend_test/zend_mm_custom_handlers.h b/ext/zend_test/zend_mm_custom_handlers.h index 7e0c8021e7e2..1db32562320b 100644 --- a/ext/zend_test/zend_mm_custom_handlers.h +++ b/ext/zend_test/zend_mm_custom_handlers.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Florian Engelhardt | +----------------------------------------------------------------------+ diff --git a/ext/zip/config.m4 b/ext/zip/config.m4 index 29ae030d37b6..590be44f6501 100644 --- a/ext/zip/config.m4 +++ b/ext/zip/config.m4 @@ -49,7 +49,7 @@ if test "$PHP_ZIP" != "no"; then AC_DEFINE([HAVE_ZIP], [1], [Define to 1 if the PHP extension 'zip' is available.]) - PHP_NEW_EXTENSION([zip], [php_zip.c zip_stream.c], [$ext_shared]) + PHP_NEW_EXTENSION([zip], [php_zip.c zip_source.c zip_stream.c], [$ext_shared]) PHP_ADD_EXTENSION_DEP(zip, pcre) PHP_SUBST([ZIP_SHARED_LIBADD]) diff --git a/ext/zip/config.w32 b/ext/zip/config.w32 index 3f05d8454c1e..8dd22c7761cf 100644 --- a/ext/zip/config.w32 +++ b/ext/zip/config.w32 @@ -8,7 +8,7 @@ if (PHP_ZIP != "no") { (PHP_ZIP_SHARED && CHECK_LIB("libzip.lib", "zip", PHP_ZIP) || CHECK_LIB("libzip_a.lib", "zip", PHP_ZIP) && CHECK_LIB("libbz2_a.lib", "zip", PHP_ZIP) && CHECK_LIB("zlib_a.lib", "zip", PHP_ZIP) && CHECK_LIB("liblzma_a.lib", "zip", PHP_ZIP)) ) { - EXTENSION('zip', 'php_zip.c zip_stream.c'); + EXTENSION('zip', 'php_zip.c zip_source.c zip_stream.c'); ADD_EXTENSION_DEP('zip', 'pcre'); if (get_define("LIBS_ZIP").match("libzip_a(?:_debug)?\.lib")) { diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 805527b7d848..1a65a1e87220 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Piere-Alain Joye | +----------------------------------------------------------------------+ @@ -575,28 +573,6 @@ static char * php_zipobj_get_zip_comment(ze_zip_object *obj, int *len) /* {{{ */ } /* }}} */ -/* Add a string to the list of buffers to be released when the object is destroyed.*/ -static void php_zipobj_add_buffer(ze_zip_object *obj, zend_string *str) /* {{{ */ -{ - size_t pos = obj->buffers_cnt++; - obj->buffers = safe_erealloc(obj->buffers, sizeof(*obj->buffers), obj->buffers_cnt, 0); - obj->buffers[pos] = zend_string_copy(str); -} -/* }}} */ - -static void php_zipobj_release_buffers(ze_zip_object *obj) /* {{{ */ -{ - if (obj->buffers_cnt > 0) { - for (size_t i = 0; i < obj->buffers_cnt; i++) { - zend_string_release(obj->buffers[i]); - } - efree(obj->buffers); - obj->buffers = NULL; - } - obj->buffers_cnt = 0; -} -/* }}} */ - /* Close and free the zip_t */ static bool php_zipobj_close(ze_zip_object *obj) /* {{{ */ { @@ -630,8 +606,6 @@ static bool php_zipobj_close(ze_zip_object *obj) /* {{{ */ obj->filename_len = 0; } - php_zipobj_release_buffers(obj); - obj->za = NULL; return success; } @@ -700,16 +674,18 @@ int php_zip_glob(zend_string *spattern, zend_long flags, zval *return_value) /* /* now catch the FreeBSD style of "no matches" */ if (!globbuf.gl_pathc || !globbuf.gl_pathv) { + php_globfree(&globbuf); return 0; } /* we assume that any glob pattern will match files from one directory only so checking the dirname of the first match should be sufficient */ if (ZIP_OPENBASEDIR_CHECKPATH(globbuf.gl_pathv[0])) { + php_globfree(&globbuf); return -1; } - array_init(return_value); + array_init_size(return_value, (uint32_t)globbuf.gl_pathc); for (size_t n = 0; n < globbuf.gl_pathc; n++) { /* we need to do this every time since PHP_GLOB_ONLYDIR does not guarantee that * all directories will be filtered. GNU libc documentation states the @@ -788,7 +764,7 @@ int php_zip_pcre(zend_string *regexp, char *path, int path_len, zval *return_val return -1; } - array_init(return_value); + array_init_size(return_value, (uint32_t)files_cnt); /* only the files, directories are ignored */ for (i = 0; i < files_cnt; i++) { @@ -1531,10 +1507,12 @@ PHP_METHOD(ZipArchive, openString) ze_zip_object *ze_obj = Z_ZIP_P(self); + php_zipobj_close(ze_obj); + zip_error_t err; zip_error_init(&err); - zip_source_t * zip_source = zip_source_buffer_create(ZSTR_VAL(buffer), ZSTR_LEN(buffer), 0, &err); + zip_source_t * zip_source = php_zip_create_string_source(buffer, NULL, &err); if (!zip_source) { ze_obj->err_zip = zip_error_code_zip(&err); @@ -1543,8 +1521,6 @@ PHP_METHOD(ZipArchive, openString) RETURN_LONG(ze_obj->err_zip); } - php_zipobj_close(ze_obj); - struct zip *intern = zip_open_from_source(zip_source, ZIP_RDONLY, &err); if (!intern) { ze_obj->err_zip = zip_error_code_zip(&err); @@ -1554,7 +1530,6 @@ PHP_METHOD(ZipArchive, openString) RETURN_LONG(ze_obj->err_zip); } - php_zipobj_add_buffer(ze_obj, buffer); ze_obj->za = intern; zip_error_fini(&err); RETURN_TRUE; @@ -1597,7 +1572,7 @@ PHP_METHOD(ZipArchive, close) } /* }}} */ -/* {{{ close the zip archive */ +/* {{{ get the number of entries */ PHP_METHOD(ZipArchive, count) { struct zip *intern; @@ -1911,9 +1886,7 @@ PHP_METHOD(ZipArchive, addFromString) ZIP_FROM_OBJECT(intern, self); ze_obj = Z_ZIP_P(self); - php_zipobj_add_buffer(ze_obj, buffer); - - zs = zip_source_buffer(intern, ZSTR_VAL(buffer), ZSTR_LEN(buffer), 0); + zs = php_zip_create_string_source(buffer, NULL, NULL); if (zs == NULL) { RETURN_FALSE; diff --git a/ext/zip/php_zip.h b/ext/zip/php_zip.h index 486d117398c8..4c7661256538 100644 --- a/ext/zip/php_zip.h +++ b/ext/zip/php_zip.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierre-Alain Joye | +----------------------------------------------------------------------+ @@ -68,11 +66,9 @@ typedef struct _ze_zip_read_rsrc { /* Extends zend object */ typedef struct _ze_zip_object { struct zip *za; - zend_string **buffers; HashTable *prop_handler; char *filename; size_t filename_len; - size_t buffers_cnt; zip_int64_t last_id; int err_zip; int err_sys; @@ -96,6 +92,8 @@ php_stream *php_stream_zip_open(struct zip *arch, struct zip_stat *sb, const cha extern const php_stream_wrapper php_stream_zip_wrapper; +zip_source_t * php_zip_create_string_source(zend_string *str, zend_string **dest, zip_error_t *err); + #define LIBZIP_ATLEAST(m,n,p) (((m<<16) + (n<<8) + p) <= ((LIBZIP_VERSION_MAJOR<<16) + (LIBZIP_VERSION_MINOR<<8) + LIBZIP_VERSION_MICRO)) #endif /* PHP_ZIP_H */ diff --git a/ext/zip/tests/gh21698.phpt b/ext/zip/tests/gh21698.phpt new file mode 100644 index 000000000000..d77b2152e72f --- /dev/null +++ b/ext/zip/tests/gh21698.phpt @@ -0,0 +1,21 @@ +--TEST-- +GH-21698 (ZipArchive::addGlob memory leak when open_basedir rejects the match) +--EXTENSIONS-- +zip +--FILE-- +open($zipfile, ZipArchive::CREATE | ZipArchive::OVERWRITE); + +ini_set('open_basedir', '/nonexistent_dir_for_gh21698'); +var_dump($zip->addGlob(__FILE__, 0, [])); +$zip->close(); +?> +--CLEAN-- + +--EXPECTF-- +Warning: ZipArchive::addGlob(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d +bool(false) diff --git a/ext/zip/zip_source.c b/ext/zip/zip_source.c new file mode 100644 index 000000000000..48b35862b903 --- /dev/null +++ b/ext/zip/zip_source.c @@ -0,0 +1,204 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Author: Tim Starling | + +----------------------------------------------------------------------+ +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif +#include "php.h" +#include "php_zip.h" + +typedef struct _php_zip_string_source { + /* The current string being read from */ + zend_string *in_str; + /* The offset into in_str of the current read position */ + size_t in_offset; + /* The modification time returned in stat calls */ + time_t mtime; + /* The current string being written to */ + zend_string *out_str; + /* The offset into out_str of the current write position */ + size_t out_offset; + /* A place to copy the result to when the archive is closed, or NULL */ + zend_string **dest; + /* The error to be returned when libzip asks for the last error code */ + zip_error_t error; +} php_zip_string_source; + +/* The source callback function, see https://libzip.org/documentation/zip_source_function.html + * This is similar to read_data() in libzip's zip_source_buffer.c */ +static zip_int64_t php_zip_string_cb(void *userdata, void *data, zip_uint64_t len, zip_source_cmd_t cmd) +{ + php_zip_string_source *ctx = userdata; + switch (cmd) { + case ZIP_SOURCE_SUPPORTS: + return zip_source_make_command_bitmap( + ZIP_SOURCE_FREE, +#if LIBZIP_VERSION_MAJOR > 1 || LIBZIP_VERSION_MINOR >= 10 + ZIP_SOURCE_SUPPORTS_REOPEN, +#endif + ZIP_SOURCE_OPEN, + ZIP_SOURCE_READ, + ZIP_SOURCE_CLOSE, + ZIP_SOURCE_STAT, + ZIP_SOURCE_ERROR, + ZIP_SOURCE_SEEK, + ZIP_SOURCE_TELL, + ZIP_SOURCE_BEGIN_WRITE, + ZIP_SOURCE_WRITE, + ZIP_SOURCE_COMMIT_WRITE, + ZIP_SOURCE_ROLLBACK_WRITE, + ZIP_SOURCE_SEEK_WRITE, + ZIP_SOURCE_TELL_WRITE, + ZIP_SOURCE_REMOVE, + -1 + ); + + case ZIP_SOURCE_FREE: + zend_string_release(ctx->out_str); + zend_string_release(ctx->in_str); + efree(ctx); + return 0; + + /* Read ops */ + + case ZIP_SOURCE_OPEN: + ctx->in_offset = 0; + return 0; + + case ZIP_SOURCE_READ: { + size_t remaining = ZSTR_LEN(ctx->in_str) - ctx->in_offset; + len = MIN(len, remaining); + if (len) { + memcpy(data, ZSTR_VAL(ctx->in_str) + ctx->in_offset, len); + ctx->in_offset += len; + } + return len; + } + + case ZIP_SOURCE_CLOSE: + return 0; + + case ZIP_SOURCE_STAT: { + zip_stat_t *st; + if (len < sizeof(*st)) { + zip_error_set(&ctx->error, ZIP_ER_INVAL, 0); + return -1; + } + + st = (zip_stat_t *)data; + zip_stat_init(st); + st->mtime = ctx->mtime; + st->size = ZSTR_LEN(ctx->in_str); + st->comp_size = st->size; + st->comp_method = ZIP_CM_STORE; + st->encryption_method = ZIP_EM_NONE; + st->valid = ZIP_STAT_MTIME | ZIP_STAT_SIZE | ZIP_STAT_COMP_SIZE | ZIP_STAT_COMP_METHOD | ZIP_STAT_ENCRYPTION_METHOD; + + return sizeof(*st); + } + + case ZIP_SOURCE_ERROR: + return zip_error_to_data(&ctx->error, data, len); + + /* Seekable read ops */ + + case ZIP_SOURCE_SEEK: { + zip_int64_t new_offset = zip_source_seek_compute_offset( + ctx->in_offset, ZSTR_LEN(ctx->in_str), data, len, &ctx->error); + if (new_offset < 0) { + return -1; + } + ctx->in_offset = (size_t)new_offset; + return 0; + } + + case ZIP_SOURCE_TELL: + if (ctx->in_offset > ZIP_INT64_MAX) { + zip_error_set(&ctx->error, ZIP_ER_TELL, EOVERFLOW); + return -1; + } + return (zip_int64_t)ctx->in_offset; + + /* Write ops */ + + case ZIP_SOURCE_BEGIN_WRITE: + zend_string_release(ctx->out_str); + ctx->out_str = ZSTR_EMPTY_ALLOC(); + return 0; + + case ZIP_SOURCE_WRITE: + if (ctx->out_offset > SIZE_MAX - len) { + zip_error_set(&ctx->error, ZIP_ER_MEMORY, 0); + return -1; + } + if (ctx->out_offset + len > ZSTR_LEN(ctx->out_str)) { + ctx->out_str = zend_string_realloc(ctx->out_str, ctx->out_offset + len, false); + } + memcpy(ZSTR_VAL(ctx->out_str) + ctx->out_offset, data, len); + ctx->out_offset += len; + return len; + + case ZIP_SOURCE_COMMIT_WRITE: + ZSTR_VAL(ctx->out_str)[ZSTR_LEN(ctx->out_str)] = '\0'; + zend_string_release(ctx->in_str); + ctx->in_str = ctx->out_str; + ctx->out_str = ZSTR_EMPTY_ALLOC(); + if (ctx->dest) { + *(ctx->dest) = zend_string_copy(ctx->in_str); + } + return 0; + + case ZIP_SOURCE_ROLLBACK_WRITE: + zend_string_release(ctx->out_str); + ctx->out_str = ZSTR_EMPTY_ALLOC(); + return 0; + + case ZIP_SOURCE_SEEK_WRITE: { + zip_int64_t new_offset = zip_source_seek_compute_offset( + ctx->out_offset, ZSTR_LEN(ctx->out_str), data, len, &ctx->error); + if (new_offset < 0) { + return -1; + } + ctx->out_offset = new_offset; + return 0; + } + + case ZIP_SOURCE_TELL_WRITE: + if (ctx->out_offset > ZIP_INT64_MAX) { + zip_error_set(&ctx->error, ZIP_ER_TELL, EOVERFLOW); + return -1; + } + return (zip_int64_t)ctx->out_offset; + + case ZIP_SOURCE_REMOVE: + zend_string_release(ctx->in_str); + ctx->in_str = ZSTR_EMPTY_ALLOC(); + ctx->in_offset = 0; + return 0; + + default: + zip_error_set(&ctx->error, ZIP_ER_OPNOTSUPP, 0); + return -1; + } +} + +zip_source_t * php_zip_create_string_source(zend_string *str, zend_string **dest, zip_error_t *err) +{ + php_zip_string_source *ctx = ecalloc(1, sizeof(php_zip_string_source)); + ctx->in_str = zend_string_copy(str); + ctx->out_str = ZSTR_EMPTY_ALLOC(); + ctx->dest = dest; + ctx->mtime = time(NULL); + return zip_source_function_create(php_zip_string_cb, (void*)ctx, err); +} diff --git a/ext/zip/zip_stream.c b/ext/zip/zip_stream.c index 9d6fb733575b..d4c24bd24e13 100644 --- a/ext/zip/zip_stream.c +++ b/ext/zip/zip_stream.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Piere-Alain Joye | +----------------------------------------------------------------------+ diff --git a/ext/zlib/php_zlib.h b/ext/zlib/php_zlib.h index b7a9484cd28f..c7286d5c858a 100644 --- a/ext/zlib/php_zlib.h +++ b/ext/zlib/php_zlib.h @@ -1,17 +1,15 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | - | Stefan R�hrich | + | Stefan Röhrich | | Michael Wallner | +----------------------------------------------------------------------+ */ diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index ef792b374b11..dbbaf1a24157 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stefan Röhrich | @@ -925,7 +923,7 @@ PHP_FUNCTION(inflate_init) efree(ctx->inflateDict); ctx->inflateDict = NULL; break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } } } @@ -1022,7 +1020,7 @@ PHP_FUNCTION(inflate_add) zend_string_release_ex(out, 0); php_error_docref(NULL, E_WARNING, "Dictionary does not match expected dictionary (incorrect adler32 hash)"); RETURN_FALSE; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } break; } else { diff --git a/ext/zlib/zlib_filter.c b/ext/zlib/zlib_filter.c index 69c9a85465e8..b6393feb9083 100644 --- a/ext/zlib/zlib_filter.c +++ b/ext/zlib/zlib_filter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sara Golemon (pollita@php.net) | +----------------------------------------------------------------------+ diff --git a/ext/zlib/zlib_fopen_wrapper.c b/ext/zlib/zlib_fopen_wrapper.c index 7420c0cc6ff2..aebf368a16ed 100644 --- a/ext/zlib/zlib_fopen_wrapper.c +++ b/ext/zlib/zlib_fopen_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong , based on work by: | | Hartmut Holzgraefe | diff --git a/gcovr.cfg b/gcovr.cfg new file mode 100644 index 000000000000..7ee4cff356e8 --- /dev/null +++ b/gcovr.cfg @@ -0,0 +1,23 @@ +print-summary = yes + +exclude-throw-branches = yes +exclude-unreachable-branches = yes + +exclude = ext/bcmath/libbcmath/.* +exclude = ext/date/lib/.* +exclude = ext/fileinfo/libmagic/.* +exclude = ext/gd/libgd/.* +exclude = ext/hash/sha3/.* +exclude = ext/lexbor/lexbor/.* +exclude = ext/mbstring/libmbfl/.* +exclude = ext/opcache/jit/ir/.* +exclude = ext/pcre/pcre2lib/.* +exclude = ext/uri/uriparser/.* +exclude = Zend/Optimizer/ssa_integrity\.c +exclude = Zend/Optimizer/zend_dump\.c + +# These patterns have implicit ^/$ anchors. +exclude-lines-by-pattern = .*\b(ZEND_PARSE_PARAMETERS_(START|END|NONE)|Z_PARAM_).* +exclude-lines-by-pattern = \s*(default:\s*)?ZEND_UNREACHABLE\(\);\s* +exclude-lines-by-pattern = \s*if \(ctx->debug_level & ZEND_DUMP_\w+\) \{\s* +exclude-lines-by-pattern = \s*zend_dump_op_array\(.*\);\s* diff --git a/main/SAPI.c b/main/SAPI.c index 2fd7e18adcea..144f727dd1fe 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Original design: Shane Caraveo | | Authors: Andi Gutmans | diff --git a/main/SAPI.h b/main/SAPI.h index 9196982f5495..e62f686603c4 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/main/build-defs.h.in b/main/build-defs.h.in index 72cd9c30fb74..2c62998fc586 100644 --- a/main/build-defs.h.in +++ b/main/build-defs.h.in @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | +----------------------------------------------------------------------+ diff --git a/main/explicit_bzero.c b/main/explicit_bzero.c index c49bdede6624..541c9f408e9a 100644 --- a/main/explicit_bzero.c +++ b/main/explicit_bzero.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/fastcgi.c b/main/fastcgi.c index 3488d6e21eae..a4853d8f0535 100644 --- a/main/fastcgi.c +++ b/main/fastcgi.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/main/fastcgi.h b/main/fastcgi.h index 8a1c0516a9c7..c1e7deb181f6 100644 --- a/main/fastcgi.h +++ b/main/fastcgi.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | +----------------------------------------------------------------------+ diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index b6f32ce309dc..a9e159efc8bf 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jim Winstead | diff --git a/main/fopen_wrappers.h b/main/fopen_wrappers.h index 1a1289836ba3..f92c7d6fd443 100644 --- a/main/fopen_wrappers.h +++ b/main/fopen_wrappers.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Jim Winstead | +----------------------------------------------------------------------+ diff --git a/main/getopt.c b/main/getopt.c index 65ce94ae9bb0..516d1c41022b 100644 --- a/main/getopt.c +++ b/main/getopt.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/http_status_codes.h b/main/http_status_codes.h index f29921122d57..e39ba21daf15 100644 --- a/main/http_status_codes.h +++ b/main/http_status_codes.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Andrea Faulds | +----------------------------------------------------------------------+ diff --git a/main/internal_functions.c.in b/main/internal_functions.c.in index cef0a438c682..de22e2237dbe 100644 --- a/main/internal_functions.c.in +++ b/main/internal_functions.c.in @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/main/main.c b/main/main.c index bb5b700fe7ae..cc3f1cae2586 100644 --- a/main/main.c +++ b/main/main.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Rasmus Lerdorf | @@ -147,7 +145,7 @@ PHPAPI char *php_get_version(sapi_module_struct *sapi_module) " GCOV" #endif ); - smart_string_appends(&version_info, "Copyright (c) The PHP Group\n"); + smart_string_appends(&version_info, "Copyright © The PHP Group and Contributors\n"); const char *build_provider = php_build_provider(); if (build_provider) { diff --git a/main/network.c b/main/network.c index 54dbf2b8e580..f652cf555ffb 100644 --- a/main/network.c +++ b/main/network.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Venaas | | Streams work by Wez Furlong | diff --git a/main/output.c b/main/output.c index 98684955e394..72b42301a724 100644 --- a/main/output.c +++ b/main/output.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Zeev Suraski | | Thies C. Arntzen | diff --git a/main/php.h b/main/php.h index 32222cfca94e..44076b2c294d 100644 --- a/main/php.h +++ b/main/php.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/main/php_compat.h b/main/php_compat.h index 2f9f4c1c89e6..68bc4e7550f8 100644 --- a/main/php_compat.h +++ b/main/php_compat.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/php_content_types.c b/main/php_content_types.c index f01841986728..c727d0ed3314 100644 --- a/main/php_content_types.c +++ b/main/php_content_types.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/php_content_types.h b/main/php_content_types.h index 6aab33e29421..e734bb1963cd 100644 --- a/main/php_content_types.h +++ b/main/php_content_types.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/php_getopt.h b/main/php_getopt.h index 0238881113a7..6f457f3a58da 100644 --- a/main/php_getopt.h +++ b/main/php_getopt.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/php_globals.h b/main/php_globals.h index 893bf25d26cb..f6f57e0045c8 100644 --- a/main/php_globals.h +++ b/main/php_globals.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/main/php_ini.c b/main/php_ini.c index 4bac70e88778..9925eafad1fd 100644 --- a/main/php_ini.c +++ b/main/php_ini.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/main/php_ini.h b/main/php_ini.h index 4253ce43fbe1..ffc2c36186c9 100644 --- a/main/php_ini.h +++ b/main/php_ini.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/main/php_ini_builder.c b/main/php_ini_builder.c index d214a340343f..1063d014bc2a 100644 --- a/main/php_ini_builder.c +++ b/main/php_ini_builder.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Max Kellermann | +----------------------------------------------------------------------+ diff --git a/main/php_ini_builder.h b/main/php_ini_builder.h index 7f5be81c10ac..0ad70b6f68a7 100644 --- a/main/php_ini_builder.h +++ b/main/php_ini_builder.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Max Kellermann | +----------------------------------------------------------------------+ diff --git a/main/php_main.h b/main/php_main.h index bd28a0dee1d7..de2ace1c25ed 100644 --- a/main/php_main.h +++ b/main/php_main.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | diff --git a/main/php_memory_streams.h b/main/php_memory_streams.h index 0b7f51ee6d90..cf83ba8e084e 100644 --- a/main/php_memory_streams.h +++ b/main/php_memory_streams.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/php_network.h b/main/php_network.h index 6700ab42dd3f..e6d3009a6c82 100644 --- a/main/php_network.h +++ b/main/php_network.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Venaas | +----------------------------------------------------------------------+ diff --git a/main/php_odbc_utils.c b/main/php_odbc_utils.c index 5cba835f81e3..d3b18f2bd642 100644 --- a/main/php_odbc_utils.c +++ b/main/php_odbc_utils.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Calvin Buckley | +----------------------------------------------------------------------+ diff --git a/main/php_odbc_utils.h b/main/php_odbc_utils.h index 183957d6dd12..78353b49a814 100644 --- a/main/php_odbc_utils.h +++ b/main/php_odbc_utils.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Calvin Buckley | +----------------------------------------------------------------------+ diff --git a/main/php_open_temporary_file.c b/main/php_open_temporary_file.c index 3a410eb7fa2d..ffc1c754d9e6 100644 --- a/main/php_open_temporary_file.c +++ b/main/php_open_temporary_file.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/main/php_open_temporary_file.h b/main/php_open_temporary_file.h index 1d8764a7487e..d9d8d8069190 100644 --- a/main/php_open_temporary_file.h +++ b/main/php_open_temporary_file.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/main/php_output.h b/main/php_output.h index 896f1e0a8fea..f0a26824936a 100644 --- a/main/php_output.h +++ b/main/php_output.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michael Wallner | +----------------------------------------------------------------------+ diff --git a/main/php_reentrancy.h b/main/php_reentrancy.h index 5a78df078698..f11ef17acb71 100644 --- a/main/php_reentrancy.h +++ b/main/php_reentrancy.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/main/php_scandir.c b/main/php_scandir.c index 7bf91bdf7f33..848a0cf96168 100644 --- a/main/php_scandir.c +++ b/main/php_scandir.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Shane Caraveo | | Ilia Alshanetsky | diff --git a/main/php_scandir.h b/main/php_scandir.h index ec5565914247..76d27feb15ca 100644 --- a/main/php_scandir.h +++ b/main/php_scandir.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Shane Caraveo | | Ilia Alshanetsky | diff --git a/main/php_streams.h b/main/php_streams.h index 1c52539cfcae..d248de7a8168 100644 --- a/main/php_streams.h +++ b/main/php_streams.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong (wez@thebrainroom.com) | +----------------------------------------------------------------------+ diff --git a/main/php_syslog.c b/main/php_syslog.c index 975a0423df17..a92b2518caab 100644 --- a/main/php_syslog.c +++ b/main/php_syslog.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Philip Prindeville | +----------------------------------------------------------------------+ diff --git a/main/php_syslog.h b/main/php_syslog.h index f2682d74f238..d3ff747311ac 100644 --- a/main/php_syslog.h +++ b/main/php_syslog.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/php_ticks.c b/main/php_ticks.c index 4c1e5113e965..c71082dfa2d1 100644 --- a/main/php_ticks.c +++ b/main/php_ticks.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Bakken | +----------------------------------------------------------------------+ diff --git a/main/php_ticks.h b/main/php_ticks.h index 998f4364e5e9..43801a74e89d 100644 --- a/main/php_ticks.h +++ b/main/php_ticks.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Bakken | +----------------------------------------------------------------------+ diff --git a/main/php_variables.c b/main/php_variables.c index 971e1c77ea9f..7453014fa2cc 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | diff --git a/main/php_variables.h b/main/php_variables.h index 5cb43890bd75..27a45e8daa3c 100644 --- a/main/php_variables.h +++ b/main/php_variables.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Zeev Suraski | diff --git a/main/reentrancy.c b/main/reentrancy.c index bd050ff9ac68..a611841a397a 100644 --- a/main/reentrancy.c +++ b/main/reentrancy.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/main/rfc1867.c b/main/rfc1867.c index 161a0e4e487f..0f55a380a85e 100644 --- a/main/rfc1867.c +++ b/main/rfc1867.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Jani Taskinen | diff --git a/main/rfc1867.h b/main/rfc1867.h index bb690f15aa3e..cbe39c7b4f62 100644 --- a/main/rfc1867.h +++ b/main/rfc1867.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/safe_bcmp.c b/main/safe_bcmp.c index f52dbee5bafe..2a7d3b55945b 100644 --- a/main/safe_bcmp.c +++ b/main/safe_bcmp.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: David Carlier | +----------------------------------------------------------------------+ diff --git a/main/snprintf.c b/main/snprintf.c index e9938c79659f..44c70dd86479 100644 --- a/main/snprintf.c +++ b/main/snprintf.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/snprintf.h b/main/snprintf.h index d61ee5e39a69..b123810a77c0 100644 --- a/main/snprintf.h +++ b/main/snprintf.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Stig Sæther Bakken | | Marcus Boerger | diff --git a/main/spprintf.c b/main/spprintf.c index 0dd7f1552e1c..7249c17cdda0 100644 --- a/main/spprintf.c +++ b/main/spprintf.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/spprintf.h b/main/spprintf.h index 4da224845b3b..c1d2377d25a5 100644 --- a/main/spprintf.h +++ b/main/spprintf.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/streams/cast.c b/main/streams/cast.c index 4dc8ddb5f6a3..10c93cbb3ffb 100644 --- a/main/streams/cast.c +++ b/main/streams/cast.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/filter.c b/main/streams/filter.c index 2260bae82335..9ec144195693 100644 --- a/main/streams/filter.c +++ b/main/streams/filter.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/glob_wrapper.c b/main/streams/glob_wrapper.c index fb056ce889fa..c7f1145de200 100644 --- a/main/streams/glob_wrapper.c +++ b/main/streams/glob_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/streams/memory.c b/main/streams/memory.c index 9cb94542df6f..44336f0e3e2b 100644 --- a/main/streams/memory.c +++ b/main/streams/memory.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/streams/mmap.c b/main/streams/mmap.c index 6ed9c057969b..e3831636bcd4 100644 --- a/main/streams/mmap.c +++ b/main/streams/mmap.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/php_stream_context.h b/main/streams/php_stream_context.h index cc001cced154..9373182f7c2e 100644 --- a/main/streams/php_stream_context.h +++ b/main/streams/php_stream_context.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/php_stream_filter_api.h b/main/streams/php_stream_filter_api.h index cb4fdb5fd7f7..a61bc48815f5 100644 --- a/main/streams/php_stream_filter_api.h +++ b/main/streams/php_stream_filter_api.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | | With suggestions from: | diff --git a/main/streams/php_stream_glob_wrapper.h b/main/streams/php_stream_glob_wrapper.h index 04de00a593dd..c9c7fdcf2463 100644 --- a/main/streams/php_stream_glob_wrapper.h +++ b/main/streams/php_stream_glob_wrapper.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/main/streams/php_stream_mmap.h b/main/streams/php_stream_mmap.h index d477aa79481e..0f85e0269f47 100644 --- a/main/streams/php_stream_mmap.h +++ b/main/streams/php_stream_mmap.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/php_stream_plain_wrapper.h b/main/streams/php_stream_plain_wrapper.h index ce1a6e3876d1..f44edcb16a97 100644 --- a/main/streams/php_stream_plain_wrapper.h +++ b/main/streams/php_stream_plain_wrapper.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/php_stream_transport.h b/main/streams/php_stream_transport.h index 96675af6daea..0125035aaa69 100644 --- a/main/streams/php_stream_transport.h +++ b/main/streams/php_stream_transport.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/php_stream_userspace.h b/main/streams/php_stream_userspace.h index 18e0f4028f2c..5b82a88d41a6 100644 --- a/main/streams/php_stream_userspace.h +++ b/main/streams/php_stream_userspace.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/php_streams_int.h b/main/streams/php_streams_int.h index 7580088fba31..abf68aeacb80 100644 --- a/main/streams/php_streams_int.h +++ b/main/streams/php_streams_int.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c index 74d8877a7f38..69258158fbe3 100644 --- a/main/streams/plain_wrapper.c +++ b/main/streams/plain_wrapper.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/streams.c b/main/streams/streams.c index 26f147632cef..31d1eda16790 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | | Borrowed code from: | diff --git a/main/streams/transports.c b/main/streams/transports.c index 83297d9a06ce..0a18d10f7433 100644 --- a/main/streams/transports.c +++ b/main/streams/transports.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/streams/userspace.c b/main/streams/userspace.c index f5e25aa96c77..335ef3aa4f27 100644 --- a/main/streams/userspace.c +++ b/main/streams/userspace.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Wez Furlong | | Sara Golemon | diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index f21944313d32..77977a557fc6 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/main/strlcat.c b/main/strlcat.c index b514a7e0d5d5..9590fd19229c 100644 --- a/main/strlcat.c +++ b/main/strlcat.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/main/strlcpy.c b/main/strlcpy.c index 9ca99311aa42..f7e563967377 100644 --- a/main/strlcpy.c +++ b/main/strlcpy.c @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/php.ini-development b/php.ini-development index 6f93f440112e..ee75459ea56c 100644 --- a/php.ini-development +++ b/php.ini-development @@ -1386,13 +1386,6 @@ session.gc_divisor = 1000 ; https://php.net/session.gc-maxlifetime session.gc_maxlifetime = 1440 -; NOTE: If you are using the subdirectory option for storing session files -; (see session.save_path above), then garbage collection does *not* -; happen automatically. You will need to do your own garbage -; collection through a shell script, cron entry, or some other method. -; For example, the following script is the equivalent of setting -; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): -; find /path/to/sessions -cmin +24 -type f | xargs rm ; Check HTTP Referer to invalidate externally stored URLs containing ids. ; HTTP_REFERER has to contain this substring for the session to be diff --git a/php.ini-production b/php.ini-production index 9aafad21e9c7..b10e2ba9944a 100644 --- a/php.ini-production +++ b/php.ini-production @@ -1388,13 +1388,6 @@ session.gc_divisor = 1000 ; https://php.net/session.gc-maxlifetime session.gc_maxlifetime = 1440 -; NOTE: If you are using the subdirectory option for storing session files -; (see session.save_path above), then garbage collection does *not* -; happen automatically. You will need to do your own garbage -; collection through a shell script, cron entry, or some other method. -; For example, the following script is the equivalent of setting -; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): -; find /path/to/sessions -cmin +24 -type f | xargs rm ; Check HTTP Referer to invalidate externally stored URLs containing ids. ; HTTP_REFERER has to contain this substring for the session to be diff --git a/run-extra-tests.php b/run-extra-tests.php index 725f2b58c373..16dfac69d13a 100755 --- a/run-extra-tests.php +++ b/run-extra-tests.php @@ -2,15 +2,13 @@ . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/run-tests.php b/run-tests.php index 68d2cb69256d..c08d07cdd7c1 100755 --- a/run-tests.php +++ b/run-tests.php @@ -2,15 +2,13 @@ . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Ilia Alshanetsky | | Preston L. Bannister | @@ -304,6 +302,7 @@ function main(): void 'zend.exception_ignore_args=0', 'zend.exception_string_param_max_len=15', 'short_open_tag=0', + 'date.timezone=UTC', ]; $no_file_cache = '-d opcache.file_cache= -d opcache.file_cache_only=0'; diff --git a/sapi/apache2handler/apache_config.c b/sapi/apache2handler/apache_config.c index a31ba68f9281..1f9447e62938 100644 --- a/sapi/apache2handler/apache_config.c +++ b/sapi/apache2handler/apache_config.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/sapi/apache2handler/mod_php.c b/sapi/apache2handler/mod_php.c index c7308fe2df60..9228b3ec049c 100644 --- a/sapi/apache2handler/mod_php.c +++ b/sapi/apache2handler/mod_php.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Parts based on Apache 1.3 SAPI module by | diff --git a/sapi/apache2handler/php_apache.h b/sapi/apache2handler/php_apache.h index c49dd2970880..18b4e5a75910 100644 --- a/sapi/apache2handler/php_apache.h +++ b/sapi/apache2handler/php_apache.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ diff --git a/sapi/apache2handler/php_functions.c b/sapi/apache2handler/php_functions.c index c2b15af86a60..1baa1f5225e0 100644 --- a/sapi/apache2handler/php_functions.c +++ b/sapi/apache2handler/php_functions.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sascha Schumann | +----------------------------------------------------------------------+ @@ -179,10 +177,10 @@ PHP_FUNCTION(apache_request_headers) ctx = SG(server_context); arr = apr_table_elts(ctx->r->headers_in); - APR_ARRAY_FOREACH_OPEN(arr, key, val) + APR_ARRAY_FOREACH_OPEN(arr, key, val) { if (!val) val = ""; add_assoc_string(return_value, key, val); - APR_ARRAY_FOREACH_CLOSE() + } APR_ARRAY_FOREACH_CLOSE(); } /* }}} */ @@ -200,10 +198,10 @@ PHP_FUNCTION(apache_response_headers) ctx = SG(server_context); arr = apr_table_elts(ctx->r->headers_out); - APR_ARRAY_FOREACH_OPEN(arr, key, val) + APR_ARRAY_FOREACH_OPEN(arr, key, val) { if (!val) val = ""; add_assoc_string(return_value, key, val); - APR_ARRAY_FOREACH_CLOSE() + } APR_ARRAY_FOREACH_CLOSE(); } /* }}} */ @@ -411,12 +409,12 @@ PHP_MINFO_FUNCTION(apache) SECTION("Apache Environment"); php_info_print_table_start(); php_info_print_table_header(2, "Variable", "Value"); - APR_ARRAY_FOREACH_OPEN(arr, key, val) + APR_ARRAY_FOREACH_OPEN(arr, key, val) { if (!val) { val = ""; } php_info_print_table_row(2, key, val); - APR_ARRAY_FOREACH_CLOSE() + } APR_ARRAY_FOREACH_CLOSE(); php_info_print_table_end(); @@ -426,21 +424,21 @@ PHP_MINFO_FUNCTION(apache) php_info_print_table_row(2, "HTTP Request", ((php_struct *) SG(server_context))->r->the_request); arr = apr_table_elts(((php_struct *) SG(server_context))->r->headers_in); - APR_ARRAY_FOREACH_OPEN(arr, key, val) + APR_ARRAY_FOREACH_OPEN(arr, key, val) { if (!val) { val = ""; } php_info_print_table_row(2, key, val); - APR_ARRAY_FOREACH_CLOSE() + } APR_ARRAY_FOREACH_CLOSE(); php_info_print_table_colspan_header(2, "HTTP Response Headers"); arr = apr_table_elts(((php_struct *) SG(server_context))->r->headers_out); - APR_ARRAY_FOREACH_OPEN(arr, key, val) + APR_ARRAY_FOREACH_OPEN(arr, key, val) { if (!val) { val = ""; } php_info_print_table_row(2, key, val); - APR_ARRAY_FOREACH_CLOSE() + } APR_ARRAY_FOREACH_CLOSE(); php_info_print_table_end(); } diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index 2387d24741a4..83b3f02fb743 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Sascha Schumann | | Parts based on Apache 1.3 SAPI module by | @@ -269,14 +267,14 @@ php_apache_sapi_register_variables(zval *track_vars_array) char *key, *val; size_t new_val_len; - APR_ARRAY_FOREACH_OPEN(arr, key, val) + APR_ARRAY_FOREACH_OPEN(arr, key, val) { if (!val) { val = ""; } if (sapi_module.input_filter(PARSE_SERVER, key, &val, strlen(val), &new_val_len)) { php_register_variable_safe(key, val, new_val_len, track_vars_array); } - APR_ARRAY_FOREACH_CLOSE() + } APR_ARRAY_FOREACH_CLOSE(); if (sapi_module.input_filter(PARSE_SERVER, "PHP_SELF", &ctx->r->uri, strlen(ctx->r->uri), &new_val_len)) { php_register_variable_safe("PHP_SELF", ctx->r->uri, new_val_len, track_vars_array); diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 213870db54f1..f49507827e2d 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Bakken | diff --git a/sapi/cgi/tests/001.phpt b/sapi/cgi/tests/001.phpt index c990a77efaee..00fc656f75bc 100644 --- a/sapi/cgi/tests/001.phpt +++ b/sapi/cgi/tests/001.phpt @@ -16,6 +16,6 @@ echo "Done\n"; ?> --EXPECTF-- string(%d) "PHP %s (cgi%s (built: %s -Copyright (c) The PHP Group -%AZend Engine v%s, Copyright (c) Zend Technologies%A" +Copyright © The PHP Group and Contributors +%AZend Engine v%s, Copyright © Zend by Perforce%A" Done diff --git a/sapi/cli/cli.h b/sapi/cli/cli.h index 85b55af3845d..2f6ef95052ce 100644 --- a/sapi/cli/cli.h +++ b/sapi/cli/cli.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Johannes Schlueter | +----------------------------------------------------------------------+ diff --git a/sapi/cli/generate_mime_type_map.php b/sapi/cli/generate_mime_type_map.php index c48766b0a3e5..d1a841268a97 100755 --- a/sapi/cli/generate_mime_type_map.php +++ b/sapi/cli/generate_mime_type_map.php @@ -57,15 +57,13 @@ echo <<
. | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Moriyoshi Koizumi | +----------------------------------------------------------------------+ diff --git a/sapi/cli/mime_type_map.h b/sapi/cli/mime_type_map.h index 505ae862d054..689e522dbaea 100644 --- a/sapi/cli/mime_type_map.h +++ b/sapi/cli/mime_type_map.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Moriyoshi Koizumi | +----------------------------------------------------------------------+ diff --git a/sapi/cli/php.1.in b/sapi/cli/php.1.in index 797ef3242b6a..30626015ce77 100644 --- a/sapi/cli/php.1.in +++ b/sapi/cli/php.1.in @@ -456,17 +456,9 @@ contributors all around the world. .SH VERSION INFORMATION This manpage describes \fBphp\fP, version @PHP_VERSION@. .SH COPYRIGHT -Copyright \(co The PHP Group +Copyright \(co The PHP Group and Contributors .LP -This source file is subject to version 3.01 of the PHP license, -that is bundled with this package in the file LICENSE, and is -available through the world-wide-web at the following url: -.PD 0 -.P -.B https://www.php.net/license/3_01.txt -.PD 1 -.P -If you did not receive a copy of the PHP license and are unable to -obtain it through the world-wide-web, please send a note to -.B license@php.net -so we can mail you a copy immediately. +This source file is subject to the Modified BSD License that is +bundled with this package in the file LICENSE, and is available +through the World Wide Web at +.B https://www.php.net/license/ diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c index d1781eab671c..9a05f8e68547 100644 --- a/sapi/cli/php_cli.c +++ b/sapi/cli/php_cli.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Edin Kadribasic | | Marcus Boerger | @@ -1056,13 +1054,25 @@ static int do_cli(int argc, char **argv) /* {{{ */ } ZVAL_STRING(&arg, reflection_what); - object_init_ex(&ref, pce); memset(&execute_data, 0, sizeof(zend_execute_data)); execute_data.func = (zend_function *) &zend_pass_function; EG(current_execute_data) = &execute_data; - zend_call_known_instance_method_with_1_params( - pce->constructor, Z_OBJ(ref), NULL, &arg); + // Avoid deprecation warnings from ReflectionMethod::__construct() + // with one argument + if (pce == reflection_method_ptr) { + zend_function *create_from_method = zend_hash_str_find_ptr( + &(pce->function_table), + "createfrommethodname", + strlen( "createFromMethodName" ) + ); + zend_call_known_function( + create_from_method, NULL, pce, &ref, 1, &arg, NULL); + } else { + object_init_ex(&ref, pce); + zend_call_known_instance_method_with_1_params( + pce->constructor, Z_OBJ(ref), NULL, &arg); + } if (EG(exception)) { zval rv; diff --git a/sapi/cli/php_cli_process_title.c b/sapi/cli/php_cli_process_title.c index e6740576f6aa..5f682cb4cc93 100644 --- a/sapi/cli/php_cli_process_title.c +++ b/sapi/cli/php_cli_process_title.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Keyur Govande (kgovande@gmail.com) | +----------------------------------------------------------------------+ diff --git a/sapi/cli/php_cli_process_title.h b/sapi/cli/php_cli_process_title.h index 9527b4b4b6d4..3cb8c8b46162 100644 --- a/sapi/cli/php_cli_process_title.h +++ b/sapi/cli/php_cli_process_title.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Keyur Govande (kgovande@gmail.com) | +----------------------------------------------------------------------+ diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 65d6d5a898de..0dfbe2d3db2a 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Moriyoshi Koizumi | | Xinchen Hui | @@ -2648,7 +2646,7 @@ static zend_result php_cli_server_recv_event_read_request(php_cli_server *server case 0: php_cli_server_poller_add(&server->poller, POLLIN, client->sock); return SUCCESS; - EMPTY_SWITCH_DEFAULT_CASE(); + default: ZEND_UNREACHABLE(); } /* Under ASAN the compiler somehow doesn't realise that the switch block always returns */ return FAILURE; diff --git a/sapi/cli/php_cli_server.h b/sapi/cli/php_cli_server.h index 2440a5b59996..6477ab180fb2 100644 --- a/sapi/cli/php_cli_server.h +++ b/sapi/cli/php_cli_server.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Moriyoshi Koizumi | +----------------------------------------------------------------------+ diff --git a/sapi/cli/ps_title.h b/sapi/cli/ps_title.h index 7436c2b25a94..99c9a290ee54 100644 --- a/sapi/cli/ps_title.h +++ b/sapi/cli/ps_title.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Keyur Govande | +----------------------------------------------------------------------+ diff --git a/sapi/cli/tests/001.phpt b/sapi/cli/tests/001.phpt index bb85ad434357..8038c3e78b76 100644 --- a/sapi/cli/tests/001.phpt +++ b/sapi/cli/tests/001.phpt @@ -13,6 +13,6 @@ echo "Done\n"; ?> --EXPECTF-- string(%d) "PHP %s (cli) (built: %s)%s -Copyright (c) The PHP Group -%AZend Engine v%s, Copyright (c) Zend Technologies%A" +Copyright © The PHP Group and Contributors +%AZend Engine v%s, Copyright © Zend by Perforce%A" Done diff --git a/sapi/cli/tests/004.phpt b/sapi/cli/tests/004.phpt index c88b85480bdb..b6e0e74fa6ff 100644 --- a/sapi/cli/tests/004.phpt +++ b/sapi/cli/tests/004.phpt @@ -12,6 +12,9 @@ $php = getenv('TEST_PHP_EXECUTABLE_ESCAPED'); var_dump(shell_exec("$php -n --rf unknown")); var_dump(shell_exec("$php -n --rf echo")); var_dump(shell_exec("$php -n --rf phpinfo")); +// Regression tests for https://github.com/php/php-src/issues/21754 +var_dump(shell_exec("$php -n --rf ReflectionMethod::__construct")); +var_dump(shell_exec("$php -n --rf ReflectionMethod::missing")); echo "Done\n"; ?> @@ -28,5 +31,16 @@ string(155) "Function [ function phpinfo ] { - Return [ true ] } +" +string(213) "Method [ public method __construct ] { + + - Parameters [2] { + Parameter #0 [ object|string $objectOrMethod ] + Parameter #1 [ ?string $method = null ] + } +} + +" +string(61) "Exception: Method ReflectionMethod::missing() does not exist " Done diff --git a/sapi/cli/tests/019.phpt b/sapi/cli/tests/019.phpt index 481ea2228b34..4045c648ab0a 100644 --- a/sapi/cli/tests/019.phpt +++ b/sapi/cli/tests/019.phpt @@ -21,16 +21,38 @@ echo "\nDone\n"; phpinfo() PHP Version => %s %a -PHP License -This program is free software; you can redistribute it and/or modify -it under the terms of the PHP License as published by the PHP Group -and included in the distribution in the file: LICENSE +License -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +PHP is free software. You may redistribute it and/or modify it under the +terms of the Modified BSD License (SPDX-License-Identifier: BSD-3-Clause). -If you did not receive a copy of the PHP license, or have any -questions about PHP licensing, please contact license@php.net. +Copyright © The PHP Group and Contributors. +Copyright © Zend Technologies Ltd., a subsidiary company of + Perforce Software, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Done diff --git a/sapi/cli/tests/bug80092.phpt b/sapi/cli/tests/bug80092.phpt index eac60e7e3778..a05620f1975d 100644 --- a/sapi/cli/tests/bug80092.phpt +++ b/sapi/cli/tests/bug80092.phpt @@ -41,6 +41,6 @@ foreach (explode("\n", $output) as $line) { --EXPECTF-- preloaded PHP %s -Copyright (c) The PHP Group +Copyright © The PHP Group and Contributors %AZend Engine %s %A with Zend OPcache %a diff --git a/sapi/embed/php_embed.c b/sapi/embed/php_embed.c index 06cd1fb0763b..75249f97fc87 100644 --- a/sapi/embed/php_embed.c +++ b/sapi/embed/php_embed.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Edin Kadribasic | +----------------------------------------------------------------------+ diff --git a/sapi/embed/php_embed.h b/sapi/embed/php_embed.h index 3a4844629dea..9cd582a939a5 100644 --- a/sapi/embed/php_embed.h +++ b/sapi/embed/php_embed.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Edin Kadribasic | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/epoll.c b/sapi/fpm/fpm/events/epoll.c index 0a6eadb6aebe..2de3b463ae59 100644 --- a/sapi/fpm/fpm/events/epoll.c +++ b/sapi/fpm/fpm/events/epoll.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/epoll.h b/sapi/fpm/fpm/events/epoll.h index f20480c687c2..8b3d1867c0b1 100644 --- a/sapi/fpm/fpm/events/epoll.h +++ b/sapi/fpm/fpm/events/epoll.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/kqueue.c b/sapi/fpm/fpm/events/kqueue.c index 21939d341418..22b9d1a8d3ab 100644 --- a/sapi/fpm/fpm/events/kqueue.c +++ b/sapi/fpm/fpm/events/kqueue.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/kqueue.h b/sapi/fpm/fpm/events/kqueue.h index 1f68d44369ba..4690b065dfce 100644 --- a/sapi/fpm/fpm/events/kqueue.h +++ b/sapi/fpm/fpm/events/kqueue.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/poll.c b/sapi/fpm/fpm/events/poll.c index 30ebbc785d94..10085e83faa8 100644 --- a/sapi/fpm/fpm/events/poll.c +++ b/sapi/fpm/fpm/events/poll.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/poll.h b/sapi/fpm/fpm/events/poll.h index d9859160985c..24fa512eda9e 100644 --- a/sapi/fpm/fpm/events/poll.h +++ b/sapi/fpm/fpm/events/poll.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/port.c b/sapi/fpm/fpm/events/port.c index 73cf24c82c2c..848ac8e84afb 100644 --- a/sapi/fpm/fpm/events/port.c +++ b/sapi/fpm/fpm/events/port.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/port.h b/sapi/fpm/fpm/events/port.h index 65a29e8eac14..5768c891bdac 100644 --- a/sapi/fpm/fpm/events/port.h +++ b/sapi/fpm/fpm/events/port.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/select.c b/sapi/fpm/fpm/events/select.c index 66e8107f07c6..f6132b025747 100644 --- a/sapi/fpm/fpm/events/select.c +++ b/sapi/fpm/fpm/events/select.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/events/select.h b/sapi/fpm/fpm/events/select.h index 12f10220f5fb..e4cafde1ed9b 100644 --- a/sapi/fpm/fpm/events/select.h +++ b/sapi/fpm/fpm/events/select.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Jerome Loyet | +----------------------------------------------------------------------+ diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index 83b00eb4c4d3..3a8435f9e6cc 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf | | Stig Bakken | diff --git a/sapi/fpm/php-fpm.8.in b/sapi/fpm/php-fpm.8.in index 941b911ed08f..6a46c9419e67 100644 --- a/sapi/fpm/php-fpm.8.in +++ b/sapi/fpm/php-fpm.8.in @@ -203,21 +203,13 @@ contributors all around the world. .SH VERSION INFORMATION This manpage describes \fBphp-fpm\fP, version @PHP_VERSION@. .SH COPYRIGHT -Copyright \(co The PHP Group +Copyright \(co The PHP Group and Contributors .PD 0 .P -Copyright (c) 2007-2009, Andrei Nigmatulin +Copyright \(co 2007-2009, Andrei Nigmatulin .PD 1 .LP -This source file is subject to version 3.01 of the PHP license, -that is bundled with this package in the file LICENSE, and is -available through the world-wide-web at the following url: -.PD 0 -.P -.B https://www.php.net/license/3_01.txt -.PD 1 -.P -If you did not receive a copy of the PHP license and are unable to -obtain it through the world-wide-web, please send a note to -.B license@php.net -so we can mail you a copy immediately. +This source file is subject to the Modified BSD License that is +bundled with this package in the file LICENSE, and is available +through the World Wide Web at +.B https://www.php.net/license/ diff --git a/sapi/fpm/status.html.in b/sapi/fpm/status.html.in index 31824234a3e8..aee7e5530597 100644 --- a/sapi/fpm/status.html.in +++ b/sapi/fpm/status.html.in @@ -2,7 +2,7 @@ diff --git a/sapi/fpm/tests/main-version.phpt b/sapi/fpm/tests/main-version.phpt index 8c7dbe78c92e..29a7cbf4568f 100644 --- a/sapi/fpm/tests/main-version.phpt +++ b/sapi/fpm/tests/main-version.phpt @@ -15,6 +15,6 @@ echo "Done\n"; ?> --EXPECTF-- string(%d) "PHP %s (fpm%s (built: %s -Copyright (c) The PHP Group -%AZend Engine v%s, Copyright (c) Zend Technologies%A" +Copyright © The PHP Group and Contributors +%AZend Engine v%s, Copyright © Zend by Perforce%A" Done diff --git a/sapi/fuzzer/fuzzer-execute-common.h b/sapi/fuzzer/fuzzer-execute-common.h index 81b38df40da0..463ee37f65c4 100644 --- a/sapi/fuzzer/fuzzer-execute-common.h +++ b/sapi/fuzzer/fuzzer-execute-common.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-execute.c b/sapi/fuzzer/fuzzer-execute.c index aa456a175f54..be8707ef1f79 100644 --- a/sapi/fuzzer/fuzzer-execute.c +++ b/sapi/fuzzer/fuzzer-execute.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-exif.c b/sapi/fuzzer/fuzzer-exif.c index b3b263dd53aa..66de0735a727 100644 --- a/sapi/fuzzer/fuzzer-exif.c +++ b/sapi/fuzzer/fuzzer-exif.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-function-jit.c b/sapi/fuzzer/fuzzer-function-jit.c index d2117f0027c4..d949995f8a23 100644 --- a/sapi/fuzzer/fuzzer-function-jit.c +++ b/sapi/fuzzer/fuzzer-function-jit.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-json.c b/sapi/fuzzer/fuzzer-json.c index 78c8505c2f1d..5029cb9a585d 100644 --- a/sapi/fuzzer/fuzzer-json.c +++ b/sapi/fuzzer/fuzzer-json.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Johannes Schlüter | | Stanislav Malyshev | diff --git a/sapi/fuzzer/fuzzer-mbregex.c b/sapi/fuzzer/fuzzer-mbregex.c index f96e593ba8d2..bd119a65626f 100644 --- a/sapi/fuzzer/fuzzer-mbregex.c +++ b/sapi/fuzzer/fuzzer-mbregex.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-mbstring.c b/sapi/fuzzer/fuzzer-mbstring.c index 44fda696b6fa..92ea3aae9997 100644 --- a/sapi/fuzzer/fuzzer-mbstring.c +++ b/sapi/fuzzer/fuzzer-mbstring.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Stanislav Malyshev | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-parser.c b/sapi/fuzzer/fuzzer-parser.c index 28030d95d9a3..64fd9b8a9ac1 100644 --- a/sapi/fuzzer/fuzzer-parser.c +++ b/sapi/fuzzer/fuzzer-parser.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Johannes Schlüter | | Stanislav Malyshev | diff --git a/sapi/fuzzer/fuzzer-sapi.c b/sapi/fuzzer/fuzzer-sapi.c index 80915d0bbc19..96fe75ab7a8a 100644 --- a/sapi/fuzzer/fuzzer-sapi.c +++ b/sapi/fuzzer/fuzzer-sapi.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Johannes Schlüter | | Stanislav Malyshev | diff --git a/sapi/fuzzer/fuzzer-sapi.h b/sapi/fuzzer/fuzzer-sapi.h index 4ee2cb3fbc17..2cd3de7120f8 100644 --- a/sapi/fuzzer/fuzzer-sapi.h +++ b/sapi/fuzzer/fuzzer-sapi.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Johannes Schlüter | | Stanislav Malyshev | diff --git a/sapi/fuzzer/fuzzer-tracing-jit.c b/sapi/fuzzer/fuzzer-tracing-jit.c index 65d661f139cf..e15f5b4bac51 100644 --- a/sapi/fuzzer/fuzzer-tracing-jit.c +++ b/sapi/fuzzer/fuzzer-tracing-jit.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Nikita Popov | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-unserialize.c b/sapi/fuzzer/fuzzer-unserialize.c index 8a889883a97d..beee0d20195e 100644 --- a/sapi/fuzzer/fuzzer-unserialize.c +++ b/sapi/fuzzer/fuzzer-unserialize.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Johannes Schlüter | +----------------------------------------------------------------------+ diff --git a/sapi/fuzzer/fuzzer-unserializehash.c b/sapi/fuzzer/fuzzer-unserializehash.c index 447e95d0ee81..7bee0b80956f 100644 --- a/sapi/fuzzer/fuzzer-unserializehash.c +++ b/sapi/fuzzer/fuzzer-unserializehash.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */ diff --git a/sapi/fuzzer/fuzzer.h b/sapi/fuzzer/fuzzer.h index 387b6fa8b295..1e6a8875adb9 100644 --- a/sapi/fuzzer/fuzzer.h +++ b/sapi/fuzzer/fuzzer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Johannes Schlüter | +----------------------------------------------------------------------+ diff --git a/sapi/litespeed/lsapi_main.c b/sapi/litespeed/lsapi_main.c index dea92b8b83cf..8ea7fce5200f 100644 --- a/sapi/litespeed/lsapi_main.c +++ b/sapi/litespeed/lsapi_main.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Wang | +----------------------------------------------------------------------+ diff --git a/sapi/litespeed/lsapidef.h b/sapi/litespeed/lsapidef.h index 22a8dec30c83..b880ccb7e1ab 100644 --- a/sapi/litespeed/lsapidef.h +++ b/sapi/litespeed/lsapidef.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Wang | +----------------------------------------------------------------------+ diff --git a/sapi/litespeed/lsapilib.c b/sapi/litespeed/lsapilib.c index 9d8408c61339..bbe14a77a64f 100644 --- a/sapi/litespeed/lsapilib.c +++ b/sapi/litespeed/lsapilib.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Wang | +----------------------------------------------------------------------+ diff --git a/sapi/litespeed/lsapilib.h b/sapi/litespeed/lsapilib.h index 58850eadb173..922114b73be3 100644 --- a/sapi/litespeed/lsapilib.h +++ b/sapi/litespeed/lsapilib.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Wang | +----------------------------------------------------------------------+ diff --git a/sapi/litespeed/lscriu.c b/sapi/litespeed/lscriu.c index 9d4096ec1c31..9ea8f51fdf29 100644 --- a/sapi/litespeed/lscriu.c +++ b/sapi/litespeed/lscriu.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Wang | +----------------------------------------------------------------------+ diff --git a/sapi/litespeed/lscriu.h b/sapi/litespeed/lscriu.h index b96218bc7086..80c2028b01b6 100644 --- a/sapi/litespeed/lscriu.h +++ b/sapi/litespeed/lscriu.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: George Wang | +----------------------------------------------------------------------+ diff --git a/sapi/phpdbg/create-test.php b/sapi/phpdbg/create-test.php index 616cf9f4e4da..c3ddd1c28231 100755 --- a/sapi/phpdbg/create-test.php +++ b/sapi/phpdbg/create-test.php @@ -3,15 +3,13 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Bob Weinand | +----------------------------------------------------------------------+ diff --git a/sapi/phpdbg/phpdbg.1.in b/sapi/phpdbg/phpdbg.1.in index 56badf0cca95..8fa3532a1176 100644 --- a/sapi/phpdbg/phpdbg.1.in +++ b/sapi/phpdbg/phpdbg.1.in @@ -121,17 +121,9 @@ contributors all around the world. .SH VERSION INFORMATION This manpage describes \fBphpdbg\fP, for PHP version @PHP_VERSION@. .SH COPYRIGHT -Copyright \(co The PHP Group +Copyright \(co The PHP Group and Contributors .LP -This source file is subject to version 3.01 of the PHP license, -that is bundled with this package in the file LICENSE, and is -available through the world-wide-web at the following url: -.PD 0 -.P -.B https://www.php.net/license/3_01.txt -.PD 1 -.P -If you did not receive a copy of the PHP license and are unable to -obtain it through the world-wide-web, please send a note to -.B license@php.net -so we can mail you a copy immediately. +This source file is subject to the Modified BSD License that is +bundled with this package in the file LICENSE, and is available +through the World Wide Web at +.B https://www.php.net/license/ diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index 4227acae4f19..278e2657862f 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg.h b/sapi/phpdbg/phpdbg.h index e5f6413b060e..6aa9c9f696a5 100644 --- a/sapi/phpdbg/phpdbg.h +++ b/sapi/phpdbg/phpdbg.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c index ccbccc32f711..4dfa89d4b0fe 100644 --- a/sapi/phpdbg/phpdbg_bp.c +++ b/sapi/phpdbg/phpdbg_bp.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | @@ -805,7 +803,7 @@ PHPDBG_API void phpdbg_set_breakpoint_opcode(const char *name, size_t name_len) PHPDBG_API void phpdbg_set_breakpoint_opline_ex(phpdbg_opline_ptr_t opline) /* {{{ */ { - if (!zend_hash_index_exists(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE], (zend_ulong) opline)) { + if (!zend_hash_index_exists(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE], (zend_ulong)(uintptr_t) opline)) { phpdbg_breakline_t new_break; PHPDBG_G(flags) |= PHPDBG_HAS_OPLINE_BP; @@ -814,7 +812,7 @@ PHPDBG_API void phpdbg_set_breakpoint_opline_ex(phpdbg_opline_ptr_t opline) /* { new_break.opline = (zend_ulong) opline; new_break.base = NULL; - zend_hash_index_update_mem(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE], (zend_ulong) opline, &new_break, sizeof(phpdbg_breakline_t)); + zend_hash_index_update_mem(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE], (zend_ulong)(uintptr_t) opline, &new_break, sizeof(phpdbg_breakline_t)); phpdbg_notice("Breakpoint #%d added at #"ZEND_ULONG_FMT, new_break.id, new_break.opline); PHPDBG_BREAK_MAPPING(new_break.id, &PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE]); @@ -1002,7 +1000,7 @@ static inline phpdbg_breakbase_t *phpdbg_find_breakpoint_opline(phpdbg_opline_pt { phpdbg_breakline_t *brake; - if ((brake = zend_hash_index_find_ptr(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE], (zend_ulong) opline)) && brake->base) { + if ((brake = zend_hash_index_find_ptr(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE], (zend_ulong)(uintptr_t) opline)) && brake->base) { return (phpdbg_breakbase_t *)brake->base; } diff --git a/sapi/phpdbg/phpdbg_bp.h b/sapi/phpdbg/phpdbg_bp.h index e357b7388e69..3736804af9f9 100644 --- a/sapi/phpdbg/phpdbg_bp.h +++ b/sapi/phpdbg/phpdbg_bp.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_break.c b/sapi/phpdbg/phpdbg_break.c index 481e4b8693be..801c8b36b0ce 100644 --- a/sapi/phpdbg/phpdbg_break.c +++ b/sapi/phpdbg/phpdbg_break.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_break.h b/sapi/phpdbg/phpdbg_break.h index aa88f3245b60..c51ba5197969 100644 --- a/sapi/phpdbg/phpdbg_break.h +++ b/sapi/phpdbg/phpdbg_break.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_btree.c b/sapi/phpdbg/phpdbg_btree.c index 81571c17c01a..f7c554884d9d 100644 --- a/sapi/phpdbg/phpdbg_btree.c +++ b/sapi/phpdbg/phpdbg_btree.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_btree.h b/sapi/phpdbg/phpdbg_btree.h index bd0c1cf37a0b..8626830828df 100644 --- a/sapi/phpdbg/phpdbg_btree.h +++ b/sapi/phpdbg/phpdbg_btree.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_cmd.c b/sapi/phpdbg/phpdbg_cmd.c index 9877d60de95c..5c124563ed91 100644 --- a/sapi/phpdbg/phpdbg_cmd.c +++ b/sapi/phpdbg/phpdbg_cmd.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_cmd.h b/sapi/phpdbg/phpdbg_cmd.h index 95edd073012a..53f8e1b596e4 100644 --- a/sapi/phpdbg/phpdbg_cmd.h +++ b/sapi/phpdbg/phpdbg_cmd.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_frame.c b/sapi/phpdbg/phpdbg_frame.c index 01b19de80a99..b08a877b707a 100644 --- a/sapi/phpdbg/phpdbg_frame.c +++ b/sapi/phpdbg/phpdbg_frame.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_frame.h b/sapi/phpdbg/phpdbg_frame.h index 75d4da1fc56f..1875bf9e353e 100644 --- a/sapi/phpdbg/phpdbg_frame.h +++ b/sapi/phpdbg/phpdbg_frame.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_help.c b/sapi/phpdbg/phpdbg_help.c index 1fef964ea74c..99a1c2bfb5af 100644 --- a/sapi/phpdbg/phpdbg_help.c +++ b/sapi/phpdbg/phpdbg_help.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_help.h b/sapi/phpdbg/phpdbg_help.h index e4c9dd63881c..03d9df00ddc5 100644 --- a/sapi/phpdbg/phpdbg_help.h +++ b/sapi/phpdbg/phpdbg_help.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_info.c b/sapi/phpdbg/phpdbg_info.c index 9c93cd2b88ef..ee579e81df02 100644 --- a/sapi/phpdbg/phpdbg_info.c +++ b/sapi/phpdbg/phpdbg_info.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_info.h b/sapi/phpdbg/phpdbg_info.h index c0f19c7b0aa7..7f9ffc1aa93a 100644 --- a/sapi/phpdbg/phpdbg_info.h +++ b/sapi/phpdbg/phpdbg_info.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_io.c b/sapi/phpdbg/phpdbg_io.c index 742455b73f1d..e89b11dd00b6 100644 --- a/sapi/phpdbg/phpdbg_io.c +++ b/sapi/phpdbg/phpdbg_io.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/sapi/phpdbg/phpdbg_io.h b/sapi/phpdbg/phpdbg_io.h index 04eeaa0293a6..25a895eebce1 100644 --- a/sapi/phpdbg/phpdbg_io.h +++ b/sapi/phpdbg/phpdbg_io.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/sapi/phpdbg/phpdbg_lexer.h b/sapi/phpdbg/phpdbg_lexer.h index 439f8cd003c2..e3242cb4778a 100644 --- a/sapi/phpdbg/phpdbg_lexer.h +++ b/sapi/phpdbg/phpdbg_lexer.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_list.c b/sapi/phpdbg/phpdbg_list.c index 00ef995d897e..505b04e81f91 100644 --- a/sapi/phpdbg/phpdbg_list.c +++ b/sapi/phpdbg/phpdbg_list.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_list.h b/sapi/phpdbg/phpdbg_list.h index f112157e5963..5001af05ba7b 100644 --- a/sapi/phpdbg/phpdbg_list.h +++ b/sapi/phpdbg/phpdbg_list.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_out.c b/sapi/phpdbg/phpdbg_out.c index 63b61fb8eab0..6104112b232f 100644 --- a/sapi/phpdbg/phpdbg_out.c +++ b/sapi/phpdbg/phpdbg_out.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | @@ -109,7 +107,7 @@ int phpdbg_process_print(int fd, int type, const char *msg, int msglen) { } } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } if (msgoutlen != FAILURE) { diff --git a/sapi/phpdbg/phpdbg_out.h b/sapi/phpdbg/phpdbg_out.h index 473638bce891..9905fa3a7d30 100644 --- a/sapi/phpdbg/phpdbg_out.h +++ b/sapi/phpdbg/phpdbg_out.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_print.c b/sapi/phpdbg/phpdbg_print.c index b0f8d4cb2940..5075ce924d72 100644 --- a/sapi/phpdbg/phpdbg_print.c +++ b/sapi/phpdbg/phpdbg_print.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_print.h b/sapi/phpdbg/phpdbg_print.h index 7529bbc9943a..692ece90fc78 100644 --- a/sapi/phpdbg/phpdbg_print.h +++ b/sapi/phpdbg/phpdbg_print.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c index 07ac772b95d0..9435e25ca00b 100644 --- a/sapi/phpdbg/phpdbg_prompt.c +++ b/sapi/phpdbg/phpdbg_prompt.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | @@ -591,7 +589,7 @@ int phpdbg_skip_line_helper(void) /* {{{ */ { || opline->opcode == ZEND_YIELD || opline->opcode == ZEND_YIELD_FROM ) { - zend_hash_index_update_ptr(&PHPDBG_G(seek), (zend_ulong) opline, (void *) opline); + zend_hash_index_update_ptr(&PHPDBG_G(seek), (zend_ulong)(uintptr_t) opline, (void *) opline); } } while (++opline < op_array->opcodes + op_array->last); @@ -633,7 +631,7 @@ static void phpdbg_seek_to_end(void) /* {{{ */ { case ZEND_GENERATOR_RETURN: case ZEND_YIELD: case ZEND_YIELD_FROM: - zend_hash_index_update_ptr(&PHPDBG_G(seek), (zend_ulong) opline, (void *) opline); + zend_hash_index_update_ptr(&PHPDBG_G(seek), (zend_ulong)(uintptr_t) opline, (void *) opline); } } while (++opline < op_array->opcodes + op_array->last); } @@ -647,7 +645,7 @@ PHPDBG_COMMAND(finish) /* {{{ */ } phpdbg_seek_to_end(); - if (zend_hash_index_exists(&PHPDBG_G(seek), (zend_ulong) phpdbg_user_execute_data(EG(current_execute_data))->opline)) { + if (zend_hash_index_exists(&PHPDBG_G(seek), (zend_ulong)(uintptr_t) phpdbg_user_execute_data(EG(current_execute_data))->opline)) { zend_hash_clean(&PHPDBG_G(seek)); } else { PHPDBG_G(flags) |= PHPDBG_IN_FINISH; @@ -664,7 +662,7 @@ PHPDBG_COMMAND(leave) /* {{{ */ } phpdbg_seek_to_end(); - if (zend_hash_index_exists(&PHPDBG_G(seek), (zend_ulong) phpdbg_user_execute_data(EG(current_execute_data))->opline)) { + if (zend_hash_index_exists(&PHPDBG_G(seek), (zend_ulong)(uintptr_t) phpdbg_user_execute_data(EG(current_execute_data))->opline)) { zend_hash_clean(&PHPDBG_G(seek)); phpdbg_notice("Already at the end of the function"); return SUCCESS; diff --git a/sapi/phpdbg/phpdbg_prompt.h b/sapi/phpdbg/phpdbg_prompt.h index b7b5df687d25..669601ced157 100644 --- a/sapi/phpdbg/phpdbg_prompt.h +++ b/sapi/phpdbg/phpdbg_prompt.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_set.c b/sapi/phpdbg/phpdbg_set.c index d6b19a7e551a..3fbfa3cc8b07 100644 --- a/sapi/phpdbg/phpdbg_set.c +++ b/sapi/phpdbg/phpdbg_set.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_set.h b/sapi/phpdbg/phpdbg_set.h index 2caeccdffc7c..5dd77e3b4eea 100644 --- a/sapi/phpdbg/phpdbg_set.h +++ b/sapi/phpdbg/phpdbg_set.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_sigsafe.c b/sapi/phpdbg/phpdbg_sigsafe.c index af9465a3cad6..ff8f2741f85e 100644 --- a/sapi/phpdbg/phpdbg_sigsafe.c +++ b/sapi/phpdbg/phpdbg_sigsafe.c @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Bob Weinand | + +----------------------------------------------------------------------+ +*/ + #include "phpdbg_sigsafe.h" #include "phpdbg.h" diff --git a/sapi/phpdbg/phpdbg_sigsafe.h b/sapi/phpdbg/phpdbg_sigsafe.h index 7b7599e07ea0..fc07b1a5ec39 100644 --- a/sapi/phpdbg/phpdbg_sigsafe.h +++ b/sapi/phpdbg/phpdbg_sigsafe.h @@ -1,3 +1,17 @@ +/* + +----------------------------------------------------------------------+ + | Copyright © The PHP Group and Contributors. | + +----------------------------------------------------------------------+ + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | + +----------------------------------------------------------------------+ + | Authors: Bob Weinand | + +----------------------------------------------------------------------+ +*/ + #ifndef PHPDBG_SIGSAFE_H #define PHPDBG_SIGSAFE_H diff --git a/sapi/phpdbg/phpdbg_utils.c b/sapi/phpdbg/phpdbg_utils.c index 728baa92124c..c8689ba340de 100644 --- a/sapi/phpdbg/phpdbg_utils.c +++ b/sapi/phpdbg/phpdbg_utils.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_utils.h b/sapi/phpdbg/phpdbg_utils.h index 34ab5c3a6b55..6a6366aabc03 100644 --- a/sapi/phpdbg/phpdbg_utils.h +++ b/sapi/phpdbg/phpdbg_utils.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_watch.c b/sapi/phpdbg/phpdbg_watch.c index 5657649efdb6..4ba46f3c326f 100644 --- a/sapi/phpdbg/phpdbg_watch.c +++ b/sapi/phpdbg/phpdbg_watch.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | @@ -301,7 +299,7 @@ zend_result phpdbg_watchpoint_segfault_handler(siginfo_t *info, void *context) { /* re-enable writing */ mprotect(page, phpdbg_pagesize, PROT_READ | PROT_WRITE); - zend_hash_index_add_empty_element(PHPDBG_G(watchlist_mem), (zend_ulong) page); + zend_hash_index_add_empty_element(PHPDBG_G(watchlist_mem), (zend_ulong)(uintptr_t) page); return SUCCESS; } @@ -317,7 +315,7 @@ void *phpdbg_watchpoint_userfaultfd_thread(void *phpdbg_globals_ptr) { struct uffd_msg fault_msg = {0}; while (read(globals->watch_userfaultfd, &fault_msg, sizeof(fault_msg)) == sizeof(fault_msg)) { void *page = phpdbg_get_page_boundary((char *)(uintptr_t) fault_msg.arg.pagefault.address); - zend_hash_index_add_empty_element(globals->watchlist_mem, (zend_ulong) page); + zend_hash_index_add_empty_element(globals->watchlist_mem, (zend_ulong)(uintptr_t) page); struct uffdio_writeprotect unprotect = { .mode = 0, .range = { @@ -394,8 +392,8 @@ void phpdbg_watch_backup_data(phpdbg_watchpoint_t *watch) { /* watch collisions are responsible for having only one watcher on a given refcounted/refval and having a mapping back to the parent zvals */ void phpdbg_delete_watch_collision(phpdbg_watchpoint_t *watch) { phpdbg_watch_collision *coll; - if ((coll = zend_hash_index_find_ptr(&PHPDBG_G(watch_collisions), (zend_ulong) watch->ref))) { - zend_hash_index_del(&coll->parents, (zend_ulong) watch); + if ((coll = zend_hash_index_find_ptr(&PHPDBG_G(watch_collisions), (zend_ulong)(uintptr_t) watch->ref))) { + zend_hash_index_del(&coll->parents, (zend_ulong)(uintptr_t) watch); if (zend_hash_num_elements(&coll->parents) == 0) { phpdbg_remove_watchpoint_btree(&coll->ref); phpdbg_deactivate_watchpoint(&coll->ref); @@ -411,7 +409,7 @@ void phpdbg_delete_watch_collision(phpdbg_watchpoint_t *watch) { } } - zend_hash_index_del(&PHPDBG_G(watch_collisions), (zend_ulong) watch->ref); + zend_hash_index_del(&PHPDBG_G(watch_collisions), (zend_ulong)(uintptr_t) watch->ref); zend_hash_destroy(&coll->parents); efree(coll); } @@ -433,7 +431,7 @@ void phpdbg_update_watch_ref(phpdbg_watchpoint_t *watch) { watch->ref = Z_COUNTED_P(watch->addr.zv); - if (!(coll = zend_hash_index_find_ptr(&PHPDBG_G(watch_collisions), (zend_ulong) watch->ref))) { + if (!(coll = zend_hash_index_find_ptr(&PHPDBG_G(watch_collisions), (zend_ulong)(uintptr_t) watch->ref))) { coll = emalloc(sizeof(*coll)); coll->ref.type = WATCH_ON_REFCOUNTED; phpdbg_set_addr_watchpoint(Z_COUNTED_P(watch->addr.zv), sizeof(uint32_t), &coll->ref); @@ -462,9 +460,9 @@ void phpdbg_update_watch_ref(phpdbg_watchpoint_t *watch) { } zend_hash_init(&coll->parents, 8, NULL, NULL, 0); - zend_hash_index_add_ptr(&PHPDBG_G(watch_collisions), (zend_ulong) watch->ref, coll); + zend_hash_index_add_ptr(&PHPDBG_G(watch_collisions), (zend_ulong)(uintptr_t) watch->ref, coll); } - zend_hash_index_add_ptr(&coll->parents, (zend_long) watch, watch); + zend_hash_index_add_ptr(&coll->parents, (zend_ulong)(uintptr_t) watch, watch); } else if (Z_TYPE_P(watch->addr.zv) == IS_INDIRECT) { if ((zend_refcounted *) Z_INDIRECT_P(watch->addr.zv) == watch->ref) { return; @@ -476,7 +474,7 @@ void phpdbg_update_watch_ref(phpdbg_watchpoint_t *watch) { watch->ref = (zend_refcounted *) Z_INDIRECT_P(watch->addr.zv); - if (!(coll = zend_hash_index_find_ptr(&PHPDBG_G(watch_collisions), (zend_ulong) watch->ref))) { + if (!(coll = zend_hash_index_find_ptr(&PHPDBG_G(watch_collisions), (zend_ulong)(uintptr_t) watch->ref))) { coll = emalloc(sizeof(*coll)); phpdbg_set_zval_watchpoint(Z_INDIRECT_P(watch->addr.zv), &coll->ref); coll->ref.coll = coll; @@ -486,9 +484,9 @@ void phpdbg_update_watch_ref(phpdbg_watchpoint_t *watch) { phpdbg_watch_backup_data(&coll->ref); zend_hash_init(&coll->parents, 8, NULL, NULL, 0); - zend_hash_index_add_ptr(&PHPDBG_G(watch_collisions), (zend_ulong) watch->ref, coll); + zend_hash_index_add_ptr(&PHPDBG_G(watch_collisions), (zend_ulong)(uintptr_t) watch->ref, coll); } - zend_hash_index_add_ptr(&coll->parents, (zend_long) watch, watch); + zend_hash_index_add_ptr(&coll->parents, (zend_ulong)(uintptr_t) watch, watch); } else if (watch->ref) { phpdbg_delete_watch_collision(watch); watch->ref = NULL; @@ -712,7 +710,7 @@ void phpdbg_queue_element_for_recreation(phpdbg_watch_element *element) { if (!element->parent) { /* HERE BE DRAGONS; i.e. we assume HashTable is directly allocated via emalloc() ... (which *should be* the case for every user-accessible array and symbol tables) */ - zend_hash_index_add_empty_element(&PHPDBG_G(watch_free), (zend_ulong) element->parent_container); + zend_hash_index_add_empty_element(&PHPDBG_G(watch_free), (zend_ulong)(uintptr_t) element->parent_container); } } @@ -775,7 +773,7 @@ void phpdbg_dequeue_elements_for_recreation(void) { ZEND_HASH_MAP_FOREACH_PTR(&PHPDBG_G(watch_recreation), element) { ZEND_ASSERT(element->flags & (PHPDBG_WATCH_IMPLICIT | PHPDBG_WATCH_RECURSIVE_ROOT | PHPDBG_WATCH_SIMPLE)); - if (element->parent || zend_hash_index_find(&PHPDBG_G(watch_free), (zend_ulong) element->parent_container)) { + if (element->parent || zend_hash_index_find(&PHPDBG_G(watch_free), (zend_ulong)(uintptr_t) element->parent_container)) { zval _zv, *zv = &_zv; if (element->parent) { ZEND_ASSERT(element->parent->watch->type == WATCH_ON_ZVAL || element->parent->watch->type == WATCH_ON_BUCKET); @@ -1233,7 +1231,7 @@ void phpdbg_watch_efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { } } - zend_hash_index_del(&PHPDBG_G(watch_free), (zend_ulong) ptr); + zend_hash_index_del(&PHPDBG_G(watch_free), (zend_ulong)(uintptr_t) ptr); } if (PHPDBG_G(original_free_function)) { diff --git a/sapi/phpdbg/phpdbg_watch.h b/sapi/phpdbg/phpdbg_watch.h index 56f4b29379ca..380140fd9f1f 100644 --- a/sapi/phpdbg/phpdbg_watch.h +++ b/sapi/phpdbg/phpdbg_watch.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/sapi/phpdbg/phpdbg_win.c b/sapi/phpdbg/phpdbg_win.c index dc1c1dba216a..2c03c85e2c6b 100644 --- a/sapi/phpdbg/phpdbg_win.c +++ b/sapi/phpdbg/phpdbg_win.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | @@ -35,7 +33,7 @@ int phpdbg_exception_handler_win32(EXCEPTION_POINTERS *xp) { return EXCEPTION_CONTINUE_EXECUTION; } break; - EMPTY_SWITCH_DEFAULT_CASE() + default: ZEND_UNREACHABLE(); } return EXCEPTION_CONTINUE_SEARCH; diff --git a/sapi/phpdbg/phpdbg_win.h b/sapi/phpdbg/phpdbg_win.h index 89bf278a3f62..6fafc950c1c3 100644 --- a/sapi/phpdbg/phpdbg_win.h +++ b/sapi/phpdbg/phpdbg_win.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Felipe Pena | | Authors: Joe Watkins | diff --git a/scripts/dev/check_parameters.php b/scripts/dev/check_parameters.php index f32e4e5806b1..83c19d0b4ef6 100755 --- a/scripts/dev/check_parameters.php +++ b/scripts/dev/check_parameters.php @@ -2,15 +2,13 @@ . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Nuno Lopes | +----------------------------------------------------------------------+ diff --git a/scripts/dev/genfiles b/scripts/dev/genfiles index b8d35cff6bf6..a7068e8c3f81 100755 --- a/scripts/dev/genfiles +++ b/scripts/dev/genfiles @@ -1,15 +1,13 @@ #!/bin/sh # # +----------------------------------------------------------------------+ -# | Copyright (c) The PHP Group | +# | Copyright © The PHP Group and Contributors. | # +----------------------------------------------------------------------+ -# | This source file is subject to version 3.01 of the PHP license, | -# | that is bundled with this package in the file LICENSE, and is | -# | available through the world-wide-web at the following url: | -# | https://www.php.net/license/3_01.txt | -# | If you did not receive a copy of the PHP license and are unable to | -# | obtain it through the world-wide-web, please send a note to | -# | license@php.net so we can mail you a copy immediately. | +# | This source file is subject to the Modified BSD License that is | +# | bundled with this package in the file LICENSE, and is available | +# | through the World Wide Web at . | +# | | +# | SPDX-License-Identifier: BSD-3-Clause | # +----------------------------------------------------------------------+ # | Authors: Sascha Schumann | # +----------------------------------------------------------------------+ diff --git a/scripts/dev/search_underscores.php b/scripts/dev/search_underscores.php index 42e4c876e054..da442987405e 100755 --- a/scripts/dev/search_underscores.php +++ b/scripts/dev/search_underscores.php @@ -3,15 +3,13 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | +----------------------------------------------------------------------+ diff --git a/scripts/man1/php-config.1.in b/scripts/man1/php-config.1.in index 9944ac91d79b..a3762f26c0c1 100644 --- a/scripts/man1/php-config.1.in +++ b/scripts/man1/php-config.1.in @@ -81,17 +81,9 @@ PHP version as integer .SH VERSION INFORMATION This manpage describes \fBphp\fP, version @PHP_VERSION@. .SH COPYRIGHT -Copyright \(co The PHP Group +Copyright \(co The PHP Group and Contributors .LP -This source file is subject to version 3.01 of the PHP license, -that is bundled with this package in the file LICENSE, and is -available through the world-wide-web at the following url: -.PD 0 -.P -.B https://www.php.net/license/3_01.txt -.PD 1 -.P -If you did not receive a copy of the PHP license and are unable to -obtain it through the world-wide-web, please send a note to -.B license@php.net -so we can mail you a copy immediately. +This source file is subject to the Modified BSD License that is +bundled with this package in the file LICENSE, and is available +through the World Wide Web at +.B https://www.php.net/license/ diff --git a/scripts/man1/phpize.1.in b/scripts/man1/phpize.1.in index 410a79c54475..19507ca5bb0f 100644 --- a/scripts/man1/phpize.1.in +++ b/scripts/man1/phpize.1.in @@ -32,17 +32,9 @@ Prints API version information .SH VERSION INFORMATION This manpage describes \fBphp\fP, version @PHP_VERSION@. .SH COPYRIGHT -Copyright \(co The PHP Group +Copyright \(co The PHP Group and Contributors .LP -This source file is subject to version 3.01 of the PHP license, -that is bundled with this package in the file LICENSE, and is -available through the world-wide-web at the following url: -.PD 0 -.P -.B https://www.php.net/license/3_01.txt -.PD 1 -.P -If you did not receive a copy of the PHP license and are unable to -obtain it through the world-wide-web, please send a note to -.B license@php.net -so we can mail you a copy immediately. +This source file is subject to the Modified BSD License that is +bundled with this package in the file LICENSE, and is available +through the World Wide Web at +.B https://www.php.net/license/ diff --git a/win32/build/Makefile b/win32/build/Makefile index b6c4ec6a1967..e9308bc43cdb 100644 --- a/win32/build/Makefile +++ b/win32/build/Makefile @@ -1,13 +1,11 @@ # +----------------------------------------------------------------------+ -# | Copyright (c) The PHP Group | +# | Copyright © The PHP Group and Contributors. | # +----------------------------------------------------------------------+ -# | This source file is subject to version 3.01 of the PHP license, | -# | that is bundled with this package in the file LICENSE, and is | -# | available through the world-wide-web at the following url: | -# | https://www.php.net/license/3_01.txt | -# | If you did not receive a copy of the PHP license and are unable to | -# | obtain it through the world-wide-web, please send a note to | -# | license@php.net so we can mail you a copy immediately. | +# | This source file is subject to the Modified BSD License that is | +# | bundled with this package in the file LICENSE, and is available | +# | through the World Wide Web at . | +# | | +# | SPDX-License-Identifier: BSD-3-Clause | # +----------------------------------------------------------------------+ # | Author: Wez Furlong | # +----------------------------------------------------------------------+ diff --git a/win32/build/buildconf.js b/win32/build/buildconf.js index fc19d7cfcb5d..52b8a7d0fd39 100644 --- a/win32/build/buildconf.js +++ b/win32/build/buildconf.js @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/win32/build/config.w32 b/win32/build/config.w32 index aefcfb5f8247..b04c636d53c9 100644 --- a/win32/build/config.w32 +++ b/win32/build/config.w32 @@ -241,7 +241,7 @@ ADD_SOURCES("Zend", "zend_language_parser.c zend_language_scanner.c \ zend_float.c zend_string.c zend_generators.c zend_virtual_cwd.c zend_ast.c \ zend_inheritance.c zend_smart_str.c zend_cpuinfo.c zend_observer.c zend_system_id.c \ zend_enum.c zend_fibers.c zend_atomic.c zend_hrtime.c zend_frameless_function.c zend_property_hooks.c \ - zend_lazy_objects.c zend_autoload.c"); + zend_lazy_objects.c zend_autoload.c zend_partial.c"); ADD_SOURCES("Zend\\Optimizer", "zend_optimizer.c pass1.c pass3.c optimize_func_calls.c block_pass.c optimize_temp_vars_5.c nop_removal.c compact_literals.c zend_cfg.c zend_dfg.c dfa_pass.c zend_ssa.c zend_inference.c zend_func_info.c zend_call_graph.c zend_dump.c escape_analysis.c compact_vars.c dce.c sccp.c scdf.c"); var PHP_ASSEMBLER = PATH_PROG({ diff --git a/win32/build/confutils.js b/win32/build/confutils.js index 3acb9ad203cc..fd1e9ce0be10 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -1,15 +1,13 @@ // Utils for configure script /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ @@ -3363,7 +3361,7 @@ function toolset_setup_common_cflags() ADD_FLAG("CFLAGS", "/Zc:wchar_t"); } else if (CLANG_TOOLSET) { - ADD_FLAG("CFLAGS", "-Wno-deprecated-declarations"); + ADD_FLAG("CFLAGS", "-Wno-deprecated-declarations -Wno-microsoft-enum-forward-reference"); if (TARGET_ARCH == 'x86') { ADD_FLAG('CFLAGS', '-m32'); } else { @@ -3397,24 +3395,25 @@ function toolset_setup_intrinsic_cflags() /* From oldest to newest. */ var scale = new Array("sse", "sse2", "sse3", "ssse3", "sse4.1", "sse4.2", "avx", "avx2", "avx512"); - if (VS_TOOLSET) { - if ("disabled" == PHP_NATIVE_INTRINSICS) { - ERROR("Can't enable intrinsics, --with-codegen-arch passed with an incompatible option. ") - } + if ("disabled" == PHP_NATIVE_INTRINSICS) { + ERROR("Can't enable intrinsics, --with-codegen-arch passed with an incompatible option. ") + } - if (TARGET_ARCH == 'arm64') { - /* arm64 supports neon */ - configure_subst.Add("PHP_SIMD_SCALE", 'NEON'); - /* all officially supported arm64 cpu supports crc32 (TODO: to be confirmed) */ - AC_DEFINE('HAVE_ARCH64_CRC32', 1); - return; - } + if (TARGET_ARCH == 'arm64') { + /* arm64 supports neon */ + configure_subst.Add("PHP_SIMD_SCALE", 'NEON'); + /* all officially supported arm64 cpu supports crc32 (TODO: to be confirmed) */ + AC_DEFINE('HAVE_ARCH64_CRC32', 1); + return; + } - if ("no" == PHP_NATIVE_INTRINSICS || "yes" == PHP_NATIVE_INTRINSICS) { - PHP_NATIVE_INTRINSICS = default_enabled; - } + // if --enable-native-intrisics is not specified, it's "no" - enable default + if ("no" == PHP_NATIVE_INTRINSICS || "yes" == PHP_NATIVE_INTRINSICS) { + PHP_NATIVE_INTRINSICS = default_enabled; + } - if ("all" == PHP_NATIVE_INTRINSICS) { + if ("all" == PHP_NATIVE_INTRINSICS) { + if (VS_TOOLSET) { var list = (new VBArray(avail.Keys())).toArray(); for (var i in list) { @@ -3423,46 +3422,61 @@ function toolset_setup_intrinsic_cflags() /* All means all. __AVX__, __AVX2__, and __AVX512*__ are defined by compiler. */ ADD_FLAG("CFLAGS","/arch:AVX512"); - configure_subst.Add("PHP_SIMD_SCALE", "AVX512"); - } else { - var list = PHP_NATIVE_INTRINSICS.split(","); - var j = 0; - for (var k = 0; k < scale.length; k++) { - for (var i = 0; i < list.length; i++) { - var it = list[i].toLowerCase(); - if (scale[k] == it) { - j = k > j ? k : j; - } else if (!avail.Exists(it) && "avx512" != it && "avx2" != it && "avx" != it) { - WARNING("Unknown intrinsic name '" + it + "' ignored"); - } - } - } - if (TARGET_ARCH == 'x86') { - /* SSE2 is currently the default on 32-bit. It could change later, - for now no need to pass it. But, if SSE only was chosen, - /arch:SSE is required. */ - if ("sse" == scale[j]) { - ADD_FLAG("CFLAGS","/arch:SSE"); + } else if (CLANG_TOOLSET) { + ADD_FLAG("CFLAGS","-mavx512f -mavx512cd -mavx512bw -mavx512dq -mavx512vl"); + } + configure_subst.Add("PHP_SIMD_SCALE", "AVX512"); + } else { + var list = PHP_NATIVE_INTRINSICS.split(","); + var j = 0; + for (var k = 0; k < scale.length; k++) { + for (var i = 0; i < list.length; i++) { + var it = list[i].toLowerCase(); + if (scale[k] == it) { + j = k > j ? k : j; + } else if (!avail.Exists(it) && "avx512" != it && "avx2" != it && "avx" != it) { + WARNING("Unknown intrinsic name '" + it + "' ignored"); } } - configure_subst.Add("PHP_SIMD_SCALE", scale[j].toUpperCase()); - /* There is no explicit way to enable intrinsics between SSE3 and SSE4.2. - The declared macros therefore won't affect the code generation, - but will enable the guarded code parts. */ - if ("avx512" == scale[j]) { - ADD_FLAG("CFLAGS","/arch:AVX512"); - j -= 3; - } else if ("avx2" == scale[j]) { - ADD_FLAG("CFLAGS","/arch:AVX2"); - j -= 2; - } else if ("avx" == scale[j]) { - ADD_FLAG("CFLAGS","/arch:AVX"); - j -= 1; - } + } + if (TARGET_ARCH == 'x86') { + /* SSE2 is currently the default on 32-bit. It could change later, + for now no need to pass it. But, if SSE only was chosen, + /arch:SSE is required. */ + if ("sse" == scale[j]) { + ADD_FLAG("CFLAGS", VS_TOOLSET ? "/arch:SSE" : "-msse"); + } + } + configure_subst.Add("PHP_SIMD_SCALE", scale[j].toUpperCase()); + if ("avx512" == scale[j]) { + ADD_FLAG("CFLAGS", VS_TOOLSET ? "/arch:AVX512" : "-mavx512f -mavx512cd -mavx512bw -mavx512dq -mavx512vl"); + j -= 3; + } else if ("avx2" == scale[j]) { + ADD_FLAG("CFLAGS", VS_TOOLSET ? "/arch:AVX2" : "-mavx2"); + j -= 2; + } else if ("avx" == scale[j]) { + ADD_FLAG("CFLAGS", VS_TOOLSET ? "/arch:AVX" : "-mavx"); + j -= 1; + } + if (VS_TOOLSET) { + /* MSVC has no explicit way to enable intrinsics between SSE3 and SSE4.2. + The declared macros won't affect code generation, but will enable + the guarded code parts. */ for (var i = 0; i <= j; i++) { var it = scale[i]; AC_DEFINE(avail.Item(it), 1); } + } else if (CLANG_TOOLSET) { + /* clang supports -m flags for each SSE level and auto-defines + the corresponding __SSE*__ macros. Pass the highest requested + level; clang implicitly enables all lower levels. */ + var clang_flag_map = { + "sse": "-msse", "sse2": "-msse2", "sse3": "-msse3", + "ssse3": "-mssse3", "sse4.1": "-msse4.1", "sse4.2": "-msse4.2" + }; + if (clang_flag_map[scale[j]]) { + ADD_FLAG("CFLAGS", clang_flag_map[scale[j]]); + } } } } diff --git a/win32/build/deplister.c b/win32/build/deplister.c index 212773b5db62..2cd8c02f1aed 100644 --- a/win32/build/deplister.c +++ b/win32/build/deplister.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/win32/build/phpize.js.in b/win32/build/phpize.js.in index 2be46a476b35..dd81aa6d24e1 100644 --- a/win32/build/phpize.js.in +++ b/win32/build/phpize.js.in @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Pierre Joye | +----------------------------------------------------------------------+ diff --git a/win32/codepage.c b/win32/codepage.c index b8c2301fb708..1a723efa4496 100644 --- a/win32/codepage.c +++ b/win32/codepage.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/codepage.h b/win32/codepage.h index 4666430cdad3..779589b54c90 100644 --- a/win32/codepage.h +++ b/win32/codepage.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/console.c b/win32/console.c index 9b485610888c..44b614e52b52 100644 --- a/win32/console.c +++ b/win32/console.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michele Locati | +----------------------------------------------------------------------+ diff --git a/win32/console.h b/win32/console.h index b3fae6166b73..ccce50b728b8 100644 --- a/win32/console.h +++ b/win32/console.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Michele Locati | +----------------------------------------------------------------------+ diff --git a/win32/dllmain.c b/win32/dllmain.c index 4ad94fe1e5f2..168bef2baa22 100644 --- a/win32/dllmain.c +++ b/win32/dllmain.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/ftok.c b/win32/ftok.c index 76e47ec48e1a..996f44deaf0d 100644 --- a/win32/ftok.c +++ b/win32/ftok.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/getrusage.c b/win32/getrusage.c index 61c54510a2c6..a0aae9c68679 100644 --- a/win32/getrusage.c +++ b/win32/getrusage.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kalle Sommer Nielsen | +----------------------------------------------------------------------+ diff --git a/win32/getrusage.h b/win32/getrusage.h index adfa4ac1a2d9..6016f70a10ac 100644 --- a/win32/getrusage.h +++ b/win32/getrusage.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kalle Sommer Nielsen | +----------------------------------------------------------------------+ diff --git a/win32/globals.c b/win32/globals.c index 13760cb1cb56..a50b1ef2b978 100644 --- a/win32/globals.c +++ b/win32/globals.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/win32/ioutil.c b/win32/ioutil.c index c9464c947448..0d77649796a7 100644 --- a/win32/ioutil.c +++ b/win32/ioutil.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/ioutil.h b/win32/ioutil.h index affe7607455b..7ed222d61382 100644 --- a/win32/ioutil.h +++ b/win32/ioutil.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/ipc.h b/win32/ipc.h index 2651acfe31ee..b3a0fecb47a4 100644 --- a/win32/ipc.h +++ b/win32/ipc.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/nice.c b/win32/nice.c index 004ad93ee9d7..98bcc56bf4bd 100644 --- a/win32/nice.c +++ b/win32/nice.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kalle Sommer Nielsen | +----------------------------------------------------------------------+ diff --git a/win32/nice.h b/win32/nice.h index 7f86cf182653..c6183fb052ab 100644 --- a/win32/nice.h +++ b/win32/nice.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Kalle Sommer Nielsen | +----------------------------------------------------------------------+ diff --git a/win32/php_registry.h b/win32/php_registry.h index 4fb586e882a0..82628d82f95a 100644 --- a/win32/php_registry.h +++ b/win32/php_registry.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/win32/php_win32_globals.h b/win32/php_win32_globals.h index 733c32c1c93d..1c1f939e21a8 100644 --- a/win32/php_win32_globals.h +++ b/win32/php_win32_globals.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/win32/registry.c b/win32/registry.c index 81378b0f46a5..3597d57c85a4 100644 --- a/win32/registry.c +++ b/win32/registry.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | +----------------------------------------------------------------------+ diff --git a/win32/select.c b/win32/select.c index 0cd7b8529559..988f037d7a4c 100644 --- a/win32/select.c +++ b/win32/select.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/win32/select.h b/win32/select.h index 75146d1a47f3..d2214c4e9ce8 100644 --- a/win32/select.h +++ b/win32/select.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Wez Furlong | +----------------------------------------------------------------------+ diff --git a/win32/signal.c b/win32/signal.c index 89548a2405c4..c04fe860437d 100644 --- a/win32/signal.c +++ b/win32/signal.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Anatol Belski | +----------------------------------------------------------------------+ diff --git a/win32/sockets.c b/win32/sockets.c index 85c045d2388e..ce0e20f248b7 100644 --- a/win32/sockets.c +++ b/win32/sockets.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Chris Vandomelen | | Sterling Hughes | diff --git a/win32/sockets.h b/win32/sockets.h index 45eb78ab1e23..e30774de1d23 100644 --- a/win32/sockets.h +++ b/win32/sockets.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Authors: Chris Vandomelen | | Sterling Hughes | diff --git a/win32/syslog.h b/win32/syslog.h index 8869243bc33a..39f0b15b2cfb 100644 --- a/win32/syslog.h +++ b/win32/syslog.h @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ diff --git a/win32/winutil.c b/win32/winutil.c index cab4b5bac9b4..d43a1059ca87 100644 --- a/win32/winutil.c +++ b/win32/winutil.c @@ -1,14 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ | Author: Zeev Suraski | * Pierre Joye | diff --git a/win32/winutil.h b/win32/winutil.h index 043195067529..20c06628eaad 100644 --- a/win32/winutil.h +++ b/win32/winutil.h @@ -1,16 +1,12 @@ /* +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | + | Copyright © The PHP Group and Contributors. | +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: | + | This source file is subject to the Modified BSD License that is | + | bundled with this package in the file LICENSE, and is available | + | through the World Wide Web at . | + | | + | SPDX-License-Identifier: BSD-3-Clause | +----------------------------------------------------------------------+ */